PC WORLD VIETNAM
JULY 2 0 0 2
80
ÛÁNG DNG
úái sûå hònh thânh vâ phất triïín
ca hïå àiïìu hânh Linux, giúâ àêy
chng ta cố rêët nhiïìu cấch trong
viïåc chổn lûåa cấc hïå thưëng file
(file system) cho tûâng loẩi ûáng
dng. Trong bâi viïët nây tưi mën giúái
thiïåu cấc hïå thưëng file tiïn tiïën àûúåc sûã
dng trong Linux nhû Ext3, Reiserfs, XFS,
vâ JFS cố tđnh tin cêåy cao vâ cố khẫ nùng
ghi nhúá quấ trònh thao tấc trïn dûä liïåu
(journaling).
THÏË NÂO LÂ JOURNALING FILE
SYSTEM?
Chng ta hậy tòm hiïíu sú lûúåc vïì cấch
lâm viïåc mâ cấc hïå thưëng Unix nối chung,
Linux nối riïng, thao tấc trïn hïå thưëng file.
Khi àûúåc khúãi àưång hïå àiïìu hânh ln
ln dng mưåt chûúng trònh àïí kiïím tra
tđnh toân vển ca hïå thưëng file, àố lâ trònh
fsck. Nïëu nố phất hiïån hïå thưëng file cố dêëu
hiïåu bêët thûúâng hóåc chûa àûúåc unmount,
do cấc ngun nhên nhû mêët àiïån hóåc hïå
thưëng bõ àûáng àưåt ngưåt trong khi àang
chẩy, lc àố fsck sệ quết lẩi toân bưå hïå
thưëng file àïí cưë gùỉng khưi phc lẩi dûä liïåu.
Quấ trònh kiïím tra vâ khưi phc dûä liïåu
(nïëu cố) nhanh hay chêåm ph thåc vâo
dung lûúång ca ưí cûáng, vâ vúái nhûäng hïå
thưëng cố dung lûúång lûu trûä rêët lúán nhû
hiïån nay (tûâ hâng chc àïën hâng trùm
gigabyte) thò phẫi mêët hâng giúâ àïí quết lẩi
toân bưå hïå thưëng ưí cûáng. Cấch lâm nây
àûúåc ấp dng trïn cấc hïå thưëng file Unix
chín ufs (Sun & HP) hóåc ext2 mâ Linux
àang sûã dng.
Nïëu hïå thưëng file cố khẫ nùng ghi lẩi
(log) àûúåc cấc hoẩt àưång mâ hïå àiïìu hânh
àậ vâ àang thao tấc trïn dûä liïåu thò hïå
thưëng xấc àõnh àûúåc ngay nhûäng file bõ sûå
cưë mâ khưng cêìn phẫi quết lẩi toân bưå hïå
thưëng file, gip quấ trònh phc hưìi dûä liïåu
trúã nïn tin cêåy vâ nhanh chống hún. Hïå
thưëng file nhû vêåy àûúåc gổi lâ journaling
file system.
HÏÅ THƯËNG FILE EXT3
Àûúåc xêy dûång dûåa trïn cú súã ca hïå
thưëng file chín ext2 mâ Linux àang sûã
dng, ext3 àûa vâo thïm chûác nùng múái
vư cng quan trổng, journaling file system,
gip thao tấc dûä liïåu an toân hún. Ext3 côn
sûã dng cú chïë JBD (Journaling Block
Device) àïí bẫo vïå thưng tin thao tấc trïn
dûä liïåu, àûúåc àấnh giấ lâ tin cêåy hún so vúái
cấc hïå thưëng chó thûåc hiïån journaling trïn
chó mc dûä liïåu (journaling of meta-data
only) nhû Reiserfs, XFS hay JFS. Vúái cấch
bẫo vïå hai lêìn nhû vêåy thò hiïåu sët ghi dûä
liïåu cố phêìn nâo chêåm hún ext2; nhûng
trong mưåt vâi trûúâng húåp, nhúâ thưng tin
trong journal log mâ àêìu tûâ ưí cûáng di
chuín húåp l hún, nïn tưëc àưå thao tấc dûä
liïåu nhanh hún. Àưëi vúái nhûäng ûáng dng
ûu tiïn cho àưå tin cêåy ca dûä liïåu hún lâ tưëc
àưå ghi àún thìn thò ext3 lâ lûåa chổn thđch
húåp. Ngoâi ra, ext3 côn cho phếp cẫi thiïån
tưëc àưå thao tấc trïn dûä liïåu bùçng cấch thiïët
lêåp thưng sưë cho hïå thưëng chó thûåc hiïån
journaling àưëi vúái thao tấc trïn dûä liïåu
(mode: data=writeback vâ data =
ordered).
Vúái mode data=writeback, quấ trònh
khúãi àưång nhanh, dûä liïåu àûúåc ghi vâo àơa
ngay sau khi àậ ghi xong thưng tin trong
journal log (write back), vúái mode nây àưi
khi cng xẫy ra tònh trẩng hû dûä liïåu nïëu
sûå cưë xẫy ra ngay sau khi ghi journal log
mâ chûa kõp ghi vâo àơa, nhûng b lẩi tưëc
àưå thao tấc file nhanh hún trong mưåt vâi
trûúâng húåp. Vúái mode data=ordered, dûä
liïåu àûúåc ghi lïn àơa trûúác rưìi múái àïën
journal log, cho phếp ln ln bẫo àẫm
tđnh toân vển ca dûä liïåu trong mổi tònh
hëng vâ àêy cng chđnh lâ mode mùåc
àõnh ca ext3. Vúái mode data=journal thò
viïåc bẫo vïå àûúåc thûåc hiïån trïn cẫ hai: dûä
liïåu vâ journal log; thưng tin àûúåc ghi chi
tiïët vâ nhiïìu hún gip cẫi thiïån tưëc àưå truy
cêåp dûä liïåu nhúâ tưëi ûu viïåc di chuín ca
àêìu tûâ, hoẩt àưång rêët tưët àưëi vúái kiïíu dûä
liïåu lâ database hóåc dûä liïåu dng chung
trïn mẩng (NFS), tuy nhiïn do phẫi àổc
lẩi nhiïìu loẩi thưng tin trïn journal log
nïn thúâi gian khúãi àưång lẩi mấy húi chêåm
hún so vúái hai mode trïn mưåt cht.
Vò bẫn chêët cêëu trc ca ext3 àûúåc xêy
dûång hoân toân dûåa trïn cú súã ca ext2
nïn ta cố thïí chuín àưíi dïỵ dâng cấc dûä
liïåu àang tưìn tẩi trïn cấc hïå thưëng ext2
sang ext3 mâ dûä liïåu khưng hïì bõ ẫnh
hûúãng vâ thûåc hiïån tûúng àưëi dïỵ dâng, àún
giẫn. Vúái kernel Linux tûâ 2.4.15 trúã lïn thò
ext3 àậ cố sùén mâ khưng cêìn phẫi àûa
thïm vâo (patch) nhû cấc version c. Hiïån
tẩi hậng Linux RedHat àậ àûa sùén module
ext3 vâo kernel 2.4.7-10 trong bẫn RedHat
7.2 ca mònh.
HÏÅ THƯËNG FILE REISERFS
tûúãng ca viïåc xêy dûång hïå thưëng
file Reiserfs xët phất tûâ u cêìu tưëi ûu
viïåc lûu trûä cấc file nhỗ vâ tùng tưëc àưå truy
cêåp àïën cấc file nây. Reiserfs sûã dng
phûúng phấp “B * Trees” phất triïín lïn tûâ
“B + Trees” àïí tưí chûác dûä liïåu, theo àố
mưåt thû mc cố thïí chûáa àïën 100.000 thû
mc con vâ àùåc biïåt lâ cố thïí cêëp phất
àưång inode: mưỵi àưëi tûúång chûáa trong hïå
thưëng file àûúåc àấnh dêëu bùçng mưåt chó sưë
duy nhêët; cấc hïå thưëng file khấc thûåc hiïån
cêëp phất inode tơnh. Ngoâi ra, Reiserfs
cng khưng cêëp phất cưë àõnh dung lûúång
theo cấc khưëi 1KB hóåc 4KB nhû cấc hïå
thưëng file khấc thûúâng lâm mâ sệ cêëp
chđnh xấc kđch thûúác khưëi lûu trûä cêìn thiïët;
nhúâ vêåy tưëi ûu àûúåc dung lûúång khi lûu trûä
cấc file cố kđch thûúác nhỗ.
Tốm lẩi, chổn Reiserfs àïí lûu trûä vâ
truy cêåp cấc file nhỗ lâ tưëi ûu, vúái tưëc àưå
truy cêåp file tùng tûâ 8-15 lêìn vâ dung
Hïå àiïìu hânh Linux
Cấc hïå thưëng file trong Linux
PC WORLD VIETNAM
JULY 2 0 0 2
82
ÛÁNG DNG
lûúång tiïët kiïåm àûúåc khoẫng trïn 5% so
vúái hïå thưëng ext2 vúái cấc loẩi file cố kđch
thûúác dûúái 1 KB. Reiserfs hưỵ trúå thûåc hiïån
journaling trïn chó mc dûä liïåu (journaling
of meta-data only).
Mën sûã dng Reiserfs trïn Linux ta
phẫi àûa cấc module nây vâo kernel vâ
dng cấc cưng c Reiserfs àïí àõnh dẩng
partition. Vđ d sau àêy thûåc hiïån chuín
àưíi partition hda6 sang hïå thưëng file
Reiserfs.
/sbin/mkreiserfs /dev/hda6
mount /dev/hda6 /squidcache –t reiserfs
Thûåc tïë, viïåc ấp dng hïå thưëng file
Reiserfs trïn squid proxy server chẩy trïn
Linux lâm cho viïåc truy cêåp internet àûúåc
cẫi thiïån àấng kïí do squid truy cêåp cấc
files nhỗ (*.html, *.gif, *.class...) trong
cache vúái tưëc àưå cao.
HÏÅ THƯËNG FILE XFS
Àûúåc phất triïín búãi cưng ty Silicon
Graphic tûâ nùm 1990 àïí khùỉc phc hẩn
chïë ca cấc hïå thưëng file hiïån hânh vïì kđch
thûúác vâ sưë lûúång partition, directory vâ
file. Ngây nay XFS àậ sùén sâng àïí sûã dng
trong Linux vúái cấc tđnh nùng vư cng
mẩnh mệ vâ ûáng dng trong cấc hïå thưëng
cố tđnh chun nghiïåp cao.
XFS lâ hïå thưëng file 64 bit, nố cố thïí
quẫn l àûúåc file cố kđch thûúác lâ 2
64 - 1
byte = 9 Exabyte (do sûã dng sưë ngun
cố dêëu nïn 1 bit dng àïí biïíu thõ
dêëu), cố kêm theo cưng c
Volume Manager cho phếp
quẫn l lïn túái 128 Volume,
mưỵi Volume cố thïí àûúåc ghếp
lïn túái 100 partition àơa cûáng
vêåt l, hưỵ trúå chûác nùng
journaling àưëi vúái dûä liïåu.
Mưåt àùåc tđnh quan trổng
ca XFS àố lâ khẫ nùng bẫo àẫm
tưëc àưå truy cêåp dûä liïåu cho cấc ûáng dng
(Guaranteed Rate I/O), cho phếp cấc ûáng
dng duy trò àûúåc tưëc àưå truy xët dûä liïåu
trïn àơa, rêët quan trổng àưëi vúái cấc hïå
thưëng phên phưëi dõch v video cố àưå phên
giẫi cao hóåc cấc ûáng dng xûã l thưng tin
vïå tinh àôi hỗi duy trò ưín àõnh tưëc àưå thao
tấc dûä liïåu. Kernel Linux 2.4.17 trúã lïn hưỵ
trúå rêët tưët àưëi vúái hïå thưëng file nây, àïí sûã
dng cêìn phẫi patch lẩi kernel vúái cấc
module ca XFS.
HÏÅ THƯËNG FILE JFS
Àûúåc phất triïín búãi IBM, JFS lâ hïå
thưëng file 64 bit, xêy dûång cho cấc internet
file server vúái àùåc àiïím thúâi gian khúãi
àưång mấy nhanh, dung lûúång chûáa dûä liïåu
cao. JFS hưỵ trúå journaling cho dûä liïåu, dûåa
trïn phûúng phấp thûúâng àûúåc sûã dng
trong hïå cú súã dûä liïåu: ghi lẩi quấ trònh
thao tấc thay àưíi file (transaction).
Trong trûúâng húåp cố sûå cưë xẫy
ra thò hïå thưëng chó cêìn cho
khưi phc lẩi transaction trûúác
àố mâ khưng cêìn phẫi àổc lẩi
hïët journal log, gip cho quấ
trònh phc hưìi àûúåc nhanh
hún. JFS hưỵ trúå tđnh nùng
Logical Volumes cho phếp nưëi
cấc partition vêåt l thânh cấc
partition logic vúái dung lûúång cao. Ngoâi
ra nố côn cho phếp ngûúâi dng tu biïën
cêëp phất cấc khưëi tûâ 512, 1.024, 2.048 vâ
4.096 byte cho lûu trûä dûä liïåu trïn àơa. Àïí
sûã dng JFS trïn Linux ta cng phẫi patch
lẩi kernel vâ câi thïm cấc cưng c JFS àïí
àõnh dẩng àơa (xem bẫng).
Tâi liïåu tham khẫo:
/>wpapers/redhat/ext3/index.html
/>
/>papers/xfs_white/xfs_white_paper.html
/>Hoâng Long – Arrive Technologies Inc.