The Second Extended Filesystem
==============================

ext2 ϡ1993 ǯ 1 ˽ƥ꡼ޤR\'emy Card, Theodore
Ts'o, Stephen Tweedie ˤäƽ񤫤ޤϡExtended
Filesystem 礭ľΤǡLinux Ǥϸ (2001 ǯ 4 ) 
ͭϤʥե륷ƥǤ NetBSD, FreeBSD, GNU HURD,
Windows 95/98/NT, OS/2, RISC OS ѲǽǤ

ץ
==========

ext2 ե륷ƥޥȤΥץ󤬻ѤǤޤ
ͤ (*) ȵƤޤ

bsddf                   (*)     df  BSD Τ褦˵ǽޤ
minixdf                         df  Minix Τ褦˵ǽޤ

check=none, nocheck     (*)     ޥȻ˲ʥӥåȥޥåפΥ
                                򤷤ޤ
                                (check=normal  check=strict 
                                Ϻޤ)

debug                           ̤ʥǥХå򥫡ͥ syslog
                                ޤȯԤΩޤ

errors=continue         (*)     ե륷ƥΥ顼äƤ¹
                                ³ޤ
errors=remount-ro               顼ǥե륷ƥɤ߽Ф
                                ȤƺƥޥȤޤ
errors=panic                    顼ȯʤ顢ѥ˥åޥ
                                 (halt) ޤ

grpid, bsdgroups                ƤƱ롼 ID 򥪥֥ȤͿ
                                ޤ
nogrpid, sysvgroups     (*)     ֥ȤϺԤΥ롼
                                ID ˤʤޤ

resuid=n                        αݤ줿֥åѲǽʥ桼
                                ID
resgid=n                        αݤ줿֥åѲǽʥ롼
                                ID

sb=n                            ξإѡ֥å˻Ȥ
                                

grpquota,noquota,quota,usrquota	Quota ץ ext2 ˤٹʤ
̵뤵ޤ



====

ext2 Ū Unix ե륷ƥ¿ѾƤޤ
åinodeǥ쥯ȥγǰޤ;塢ޤƤ
ʤȥꥹ (ACL)ե饰ȡundeletion̤
ΰäƤޤ (ΤΤĤϸ̤ΥѥåѲǽ
)˺¤θߴݤʤ顢(㡼ʥ󥰤Ȥä) 
ǽɲäС˥󥰤λȤߤޤ

֥å
--------

ǥХեΰϥ֥åʬ䤵ޤ֥å 1024 
2048, 4096 Х (Alpha ƥ 8192 ХȤ٤ޤ) θꥵ
ǡե륷ƥκ˷ޤʥ֥åϥե
̵̤ΰ򸺤餷ޤ¿ΤΥХإåɤɬפȤ
ե뤪ӥե륷ƥΥ¾¤ݤޤ

֥å롼
----------------

̤Ϣ³ǡɤΥإåɥ̤Ǿˤե饰ơ
򸺤餹ˡ֥åϥ֥å롼פʬ䤵ޤƥ֥
롼פξϥѡ֥åľΥ֥å˳Ǽ줿ǥ
ץ꥿ơ֥ݻޤƥ֥åƬ˶ᤤĤΥ֥åϡ
֥å inode Τɤ줬椫ӥåȥޥåפ˻Ȥ֥åȡ
ӥåȥޥåפ˻Ȥ inode Τˡͽ󤵤Ƥޤƥӥåȥޥåפ
ĤΥ֥å¤Τǡ֥å롼פκ祵ϥ֥å
Ȭܤˤʤޤ

ƥ֥å롼Υӥåȥޥåפ³֥å () ϥ֥å롼
Ѥ inode ơ֥ˡĤϥǡ֥å˳Ƥޤ֥
ƤΥ르ꥺϥǡ֥å򡢤ޤ inode Ʊ
å롼˳Ƥ褦Ȥޤ

ѡ֥å
----------------

ѡ֥åϥե륷ƥιΤ٤Ƥξޤߤޤ
ѡ֥åΥץ饤ޥꥳԡϥǥХƬ 1024 ХȤΥե
ȤǳǼ졢ե륷ƥޥȤ뤿ԲķʤΤǤ
ϤȤƤפʤΤʤΤǡѡ֥åΥХååץԡϥե
륷ƥˤ뤹٤ƤΥ֥å롼˳Ǽޤext2 κ
ΥС (ӥ 0) Ϥ٤ƤΥ֥å롼פƬ˥롼
ץǥץ꥿֥å () ΥХååפȶ˥ѡ֥åΥ
ԡǼޤ礭ʥե륷ƥǤ̤ΰ
ΤǡǿΥӥΥ롼פ˥Хååפ֤
ǡǤդ˥Хååץԡο򸺤餹ȤǤޤ (ѡѡ
֥åǽǤ)Ф륰롼פ 0, 1  3, 5, 7 ߾Ǥ

ѡ֥åξϡե륷ƥ inode  ֥å
ե꡼οƥ֥å롼פ inode ӥ֥åοե
륷ƥबĥޥȤ줿 (Ӥ줤˥ޥȤ줿)
ե륷ƥबĽ줿ե륷ƥΥСϲ
(ʲΥӥ󥻥򻲾ȤƤ)ɤ OS Ǻ줿
Ȥäեɤޤ

ե륷ƥबӥ 1 ʾʤ顢ܥ塼̾ˡʼ
ֹ桢inode ΥǤդʥե륷ƥൡǽѤιǼ
ΰ衢ȤäղŪʥեɤޤ

ѡ֥åΤ٤ƤΥեɤ (¾ ext2 ¤ΤƱͤ) 
ȥ륨ǥǥǥ˳ǼΤǡե륷ƥϤ
ʥޥǺ줿Τɬפʤˡޥ֤ǰư뤳ȤǤޤ

Inode
-----

inode (index node)  ext2 ե륷ƥδܳǰǤե륷
ƥγƥ֥Ȥ inode ˤäɽ蘆ޤinode ¤Τ
ե륷ƥΥ֥åؤΥݥ󥿤ޤߡΥ֥åϥ֥
ݻ줿ǡӡ֥Ȥ˴ؤ뤽̾ʳΤ٤
Υ᥿ǡޤߤޤ֥Ȥ˴ؤ᥿ǡϥѡߥå
ͭԡ롼סե饰ѥ֥åοѹ
󥯤οե饰ȡС (NFS )
ĥ° (EA)  Access Control List (ACL) ޤߤޤ

inode ¤ΤˤϺΤȤȤƤʤͽ󤵤줿եɤꡢ
ήѤƤޤäƤޤեɤϡinode ǥ쥯ȥ
ǥ쥯ȥ ACL Ѥˡinode ̾Υեʤե륵ξ
 32 ӥåѤ (ե륵 2GB Ķޤ)ͽ󤵤Ƥ
ȥ󥹥졼եɤ Linux Ǥ̤ѤǤHURD  inode
򻲾Ȥ뤿ˤΥ֥Ȥ᤹ץबѤޤͽ
줿եɤλĤΤۤȤɤϽͭԤӥ롼פĥե
ɤΤ Linux  HURD ξǻȤäƤޤäƤޤˡHURD
ˤ礭ʥ⡼ɥեɤΤǡʳλĤΥեɤ¿
ɲåӥåȤΤ˻ȤäƤޤ

inode ˤϡեΥǡݻǽ 12 ֥åФݥ
Ĥޤޤܥ֥å (Υ֥åؤΥݥ󥿤
ޤޤޤ) ؤΥݥ󥿡Ŵܥ֥å (ܥ֥åؤΥݥ󥿤
ޤޤޤ) ؤΥݥ󥿡ƻŴܥ֥å (Ŵܥ֥åؤ
ݥ󥿤ޤޤޤ) ؤΥݥ󥿤Ǥ

ե饰եɤɸ chmod ե饰󶡤Ƥʤ ext2 ͭʥե
ޤߤޤΥե饰 lsattr ޥɤǰ chattr 
ɤѹǤեñ̤ǥե륷ƥ˸ͭʿ񤤤Ԥ碌
ޤʺμä̡Ʊɲѡ
ײǽatime ʤ줿ǥ쥯ȥꡢǡ㡼ʥ󥰡
ΤΥե饰ޤޤΤ٤ƤݡȤƤȤ
¤ޤ

ǥ쥯ȥ
------------

ǥ쥯ȥϥե륷ƥΥ֥Ȥǡ礦ɥեƱ
褦 inode ޤϡinode ֹˤ줾̾Ϣ
쥳ɤޤ̤ʥեޥåȤĥեǤˡե
륷ƥοӥǤϥ֥Ȥμ (ե롢ǥ쥯
ȥꡢܥå󥯡ǥХfifo, å) 򥳡ɲ
Τ inode ȤåʤƤ褤褦ˤޤ (εǽ
Ѥ뤿ΥݡȤ Glibc 2.2 ǤϤޤޤ)

inode ֥ɤ inode 򤽤餬ǽ˺줿ǥ쥯ȥƱ
֥å롼˳Ƥ褦Ȥޤ

ext2 θߤμϥǥ쥯ȥ˥ե̾Ǽ뤿ñ
ΥꥹȤȤޤ - ǥ쥯ȥΤ˥եõᡢ
ե̾ΥϥåȤǽĥƤȤʤäƤޤ

¿Υեݻ뤿˥ǥ쥯ȥ֥åƤ줿
СߤμϤΰ褬ˤʤäƤ֥åޤ

ڥե
------------------

ܥå󥯤ޤ inode ȼäե륷ƥΥ֥
ǤܥåĹ 60 ХȤûСܥå
Υǡ inode Ȥ˳ǼΤǡˤĤõޤ
ǡ֥åؤΥݥ󥿤Ǽ뤿̾Ѥեɤ
ޤϥܥå󥯤˥֥åĤƤ뤳Ȥ򤹤
ͤΤŬǡۤȤɤΥܥåĹ 60 ʸ̤Ǥ

饯ӥ֥åΥڥǥХ˥ǡ֥åƤ
뤳ȤϤޤˡΥǥХֹ inode ˳Ǽ
졢ǡ֥åؤ˻ȤեɤǤȤޤ

αݤ줿ΰ
--------------

ext2 ǤϡΥ桼 (̾凉ѡ桼) Τ˴餫Υ֥å
äƤȤߤޤϡø̵桼ˤȤä
Ѳǽΰ򤹤٤ԤƤޤäƤ⡢ƥबǽ³뤳
տޤƤޤˡե륷ƥबԤ뤳Ȥɤ
ϥե饰ơкͭǤ

ե륷ƥå
------------------------

֡ȻˤۤȤɤΥƥϥե륷ƥΰå
(e2fsck) ¹Ԥޤ(ե륷ƥब礭Х֡Ȼˤ
åΤĹ֤뤫⤷ʤΤ) ext2 ե륷ƥ
Υѡ֥åϼºݤ fsck ¹Ԥ٤ɤ򼨤Ĥ
եɤäƤޤfsck ¹ԤΤϡե륷ƥब
줤˥ޥȤʤä硢ޥȲĶᤷ硢
å֤κ֤ĶᤷǤ

ǽθߴ
------------

ext2 ǻѤߴǽλȤߤƤޤե륷
ΥɤθŤСȤθߴˤ뤳Ȥʤե륷
ƥ˵ǽɲäǤޤǽθߴλȤߤ ext2 Υꥸ
Υӥ 0 (EXT2_GOOD_OLD_REV) ǤϥݡȤޤ󤬡ӥ
 1 ƳޤߴΤ뵡ǽ (COMPAT)ɤ߽ФѤθ
Τ뵡ǽ (RO_COMPAT)ߴΤʤǽ (INCOMPAT) λĤ
32 ӥåȥեɤޤ

εǽե饰ϰʲ˼ͥΰ̣äƤޤ -

COMPAT ե饰ϡǽե륷ƥˤ뤳Ȥ򼨤ǥ
ΥեޥåȤŤǥΥեޥåȤ 100% ߴΤǡ
εǽˤĤƥͥ뤬ΤʤƤ⡢ե륷ƥ˲
Ȥʤ (ˤϰ򼺤碌뤳Ȥʤ)ե륷ƥ
߽񤭤ǤޤܼŪˡͥ⤷ e2fsck դ٤
֤Υե륷ƥ (줿) ǽޤפȸñʤե饰
Ǥ (e2fsck ȵǽե饰ˤĤƤϸҤޤ)ext3 㡼ʥϥǡ
֥åݻñʤ̤ΥեʤΤǡext3  HAS_JOURNAL 
ǽ COMPAT ե饰Ǥäơͥ뤬 ext3 㡼ʥ󥰤
򤷤ʤƤ⡢ɤ̤դʧɬפޤ

RO_COMPAT ե饰ϥǥΥեޥåȤŤǥΥեޥ
Ȥɤ߽ФˤĤ 100% ߴ뤳Ȥ򼨤ޤ (Ĥޤꡢǥ
ΥեޥåȤθεǽѤޤ)ʤ顢Ť
ͥ뤫ե륷ƥ˽񤭹˥ե륷ƥ˲Ƥ
礬뤿ᡢߤ˻ߤޤäǽΤǤŪ
ʤΤǤ SPARSE_SUPER  RO_COMPAT ǽǡѡ롼פϥ
ѡ֥å롼פΥǥץ꥿򼨤˥եΥǡ֥
Ѥext2_free_blocks() ̷⤷ӥåȥޥåפ
Υ֥åβݤޤ˸Ťͥ뤬롼׶
ǤϢΥ֥å褦ȤС顼ˤʤޤ
 SPARSE_SUPER ե륷ƥǤʥե֤Ǥ

INCOMPAT ե饰ϥǥΥեޥåȤŤͥȽǽ
줿⤷ϸŤͥ뤬ޥȤ褦Ȥ꤬ˡǡ
ѹ줿Ȥ򼨤ޤFILETYPE ϸŤͥ뤬ե̾ 256
ʸʾäȹͤäǥ쥯ȥԤˤʤΤǡ
INCOMPAT ե饰ǤCOMPRESSION Τ INCOMPAT ե饰Ǥ - 
뤬̤򤷤ʤСưŪ˥ǡĥˡread() 
ߤΤ褦ʤΤ֤Ǥ礦ext3  RECOVER ե饰ϡext3 㡼
ʥ򤷤ʤͥ뤬㡼ʥץ쥤뤳Ȥʤե륷
ƥޥȤ뤳ȤɤɬפȤޤ

e2fsck Ǥϡե饰μ갷򥫡ͥ긷ɬפ
ޤCOMPAT, RO_COMPAT, INCOMPAT ե饰Τɤ줫򤷤ʤСͿ
Ƥ뵡ǽͭݤǧˡʤΤǡե륷ƥΥ
åݤޤ̤Τεǽäե륷ƥ e2fsck Ԥ
ƤޤȤϡ桼ˤȤäư̤ǸäȽǤǤ̤Τεǽ
ե륷ƥΥåݤ뤳Ȥϡ桼ǿ e2fsck 
뤿ɤưˤʤޤïǽե饰 ext2 ɲ
뤳Ȥϡεǽǧ뤿ˡe2fsck ιɬפȤ
Ȥ̣ޤ

᥿ǡ
----------

Ʊ˥᥿ǡ ext2 μϡffs Ʊ᥿ǡλȤߤ
®ˤˤ˼ĥޤĤˡϤ줾
fsck ץˤǤΤǤ

ɤƤԤСext2 ˥᥿ǡƱƽ񤫤ˡ
Ĥޤ -

ץॽСե - open()  O_SYNC ե饰Ȥ
Ƥ
ץॽʤСե - եФ "chattr +S"
ȤäƤ
ե륷ƥ - ޥȥץ (뤤 /etc/fstab )
 "sync" ɲäƤ

ǽȺǸΤΤ ext2 ͭǤϤޤ󤬡Ū˥᥿ǡƱ
ƽ񤭹ߤޤʲΥ㡼ʥ󥰤⻲ȤƤ


----

ext2 ˤϥǥΥǡ¤߷פˤäƲݤ줿͡¤
¾¤ϥͥ륳ɤθԤμˤäƲݤޤ¤¿
ϥե륷ƥबϤƺ줿˷졢Ф줿֥å
˰¸ޤinode Υǡ֥åФΨϥե륷ƥ
˸ꤵƤޤΤǡinode οä뤿Ĥˡϥե
륷ƥΥä뤳ȤǤinode Υ֥åФΨ
ѹǤġϺΤȤޤ

ǥΥեޥåȤξѹȥեޥåȤѹ򼨤ߴ
饰Ѥ뤳Ȥ (¿θߴˤ)¤ΤۤȤɤ
뤳ȤǤ뤫⤷ޤ

ե륷ƥΥ֥å     1kB     2kB      4kB      8kB

ե륵                16GB   256GB   2048GB   2048GB
ե륷ƥॵ      2047GB  8192GB  16384GB  32768GB

2.4 ͥˤϡñΥ֥åǥХ 2048GB ¤Τǡ
ǡ礭ե륷ƥ뤳ȤϤǤޤ󡣤
˥ͥΥڡˤäƲݤ줿֥åξ¤ꡢ
8kB ֥å Alpha (礭ʥڡ򥵥ݡȤ¾Υƥ)
ƥǵޤ

ĤΥǥ쥯ȥ 32768 Υ֥ǥ쥯ȥξ¤ޤ

Ԥñ󥯤ΥꥹȤˤǥ쥯ȥμǡĤΥǥ쥯
Υեϡ±Ѿ 10-15k Ĥ¤ˤʤޤ¤Ϥ
Τ褦礭ʥǥ쥯ȥΥեӺ (˸) 
Υѥեޥ󥹤ΤǤǥ쥯ȥꥤǥåΥϥå
 (ȯ) ѤСѥեޥ󥹤ʤ˰ĤΥǥ쥯
 100k-1M+ ĤΥե뤬֤ޤ (λˤ RAM ˤ
ޤ)

ĤΥǥ쥯ȥΥե (̵̣) Ūʾ (ե륵
ˤäƲݤΤǡŪ¤ˤϤ뤫˾ʤ)  130
եʾǤˡʥǥ쥯ȥꥨȥۤ뤿̾
 4 ʸǤ­ʤΤǡ8 ʸΥե̾ˤʤФʤʤȤ
ȤθʤФä¿ǤޤθƤˡʥե
̾Ȥ̤ƤޤǤ

㡼ʥ
--------------

ext2 ɤФ른㡼ʥ󥰤γĥ Stephen Tweedie ˤäƳȯ
ޤext2 ǥǥѹפ᥿ǡ˲Υ
ӥå줹뤿 e2fsck μ¹ԤԤɬ
ޤñ˸ȡΤä᥿ǡ֥å (ӥǡ֥
оݤˤǤޤ) Τե륷ƥ˽񤭹ˡǼ
̤Υե뤬㡼ʥǤϴ¸ ext2 ե륷ƥ
ΥǡѴɬפȤ뤳Ȥʤ˥㡼ʥɲäǤ뤳Ȥ
̣ޤ

ե륷ƥѹ (㤨Хե̾ѹ)ϥ㡼
ʥΥȥ󥶥˳Ǽ졢åλ complete 
incomplete Τɤ餫ˤʤޤåλ (⤷ϥƥब
å夷Ƥʤʾ) ˡΥȥ󥶥 complete ʤ顢
ȥ󥶥Τ٤ƤΥ֥åͭʥե륷ƥξ֤
ɽƤ뤳Ȥݾڤ졢ե륷ƥ˥ԡޤå
λ˥ȥ󥶥 incomplete ʤ顢ȥ󥶥Υ֥
˰ݾڤʤΤǤ˴ޤ (餬ɽե륷
ƥΤɤѹ⼺뤳Ȥ̣ޤ)

ext3 ɤϸ (2001 ǯ 4 ) 2.2 ͥѤѲǽǡ2.4 
ͥǤϤޤѤǤޤ


======

The kernel source       file:/usr/src/linux/fs/ext2/
e2fsprogs (e2fsck)      http://e2fsprogs.sourceforge.net/
Design & Implementation http://e2fsprogs.sourceforge.net/ext2intro.html
Journaling (ext3)       ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/
Hashed Directories      http://kernelnewbies.org/~phillips/htree/
Filesystem Resizing     http://ext2resize.sourceforge.net/
Extended Attributes &
Access Control Lists    http://acl.bestbits.at/
Compression (*)         http://www.netspace.net.au/~reiter/e2compr/

Ϣ
Windows 95/98/NT/2000   http://uranus.it.swin.edu.au/~jn/linux/Explore2fs.htm
Windows 95 (*)          http://www.yipton.demon.co.uk/content.html#FSDEXT2
DOS client (*)          ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
OS/2                    http://perso.wanadoo.fr/matthieu.willm/ext2-os2/
RISC OS client          ftp://ftp.barnet.ac.uk/pub/acorn/armlinux/iscafs/

(*) (2001 ǯ 4 λ) ⤦ȯ⥵ݡȤԤäƤޤ
======================================================================
ܸܹ <hng@ps.ksky.ne.jp>
    Seiji Kaneko <skaneko@a2.mbn.or.jp>
          ľ <azure@kcc.zaq.ne.jp>
