標籤:ext2
ext2中data和meta-data的資料一致性
e2fsck是ext2/ext3/ext4的檔案系統資料一致性的檢查工具。在ext2中,出現下面的三種情況時,有必要進行一致性檢查:
a.not cleanly unmounted;
b.the maximum mount count has been exceeded;
c.maximum time between checks has been exceeded.
考慮到檔案系統變動帶來的相容性要求,ext2中e2fsck需要支援的三種標誌
COMPAT:on-disk format is 100% compatible with older on-disk formats for reading and writing
RO_COMPAT:on-disk format is 100% compatible with older on-disk formats onlyfor reading
INCOMPAT: the on-disk format has changed in some way that makes it unreadableby older kernels, or would otherwise cause a problem if an old kerneltried to mount it。
對e2fsck而言,它需要用比核心更嚴格的方式來處理上面的flags。如果連e2fsck都不能正確解析上面的任何一個flag,整個檔案系統的一致性的檢查都不會進行,這是因為e2fsck在此情況下判斷當前檔案系統給定的特性是否有效。
根據作用的層級不同,ext2保證data和metadata同步寫入磁碟可以分為三種方式:
perfile: 開啟的時候指定O_SYNCflag; (ext2 專有特性)
perfile : chattr +S file_name
perfile-system: mount的時候指定sync選項
ext2檔案系統的局限性一方面來自核心代碼的限制,比如在Linux2.4核心中,一個塊裝置的最大size是2T。另外一方面,來自於它的blockbitmap/inode bitmap/inode 塊/資料區塊的資料拓撲結構,比如檔案大小和檔案系統size的限制:
Filesystemblock size: 1kB 2kB 4kB 8kB
Filesize limit: 16GB 256GB 2048GB 2048GB
Filesystemsize limit: 2047GB 8192GB 16384GB 32768GB
再如目錄中檔案數的限制:
Thereis an upper limit of 32000 subdirectories in a single directory
另外,受限於目錄中檔案基於鏈表的組織形式,建議一個目錄中最大允許10-15kfiles, 否則會出現嚴重的效能瓶頸。當然如果改成了基於hash的目錄索引的方式,最大支援的檔案數目可以達到100k~1M+.
StephenTweedie為ext2開發了檔案系統的journal功能。主要目的是:
1.避免meta-datacorrution;
2.long time to do e2fsck;
檔案系統的Journal只儲存meta-data(data 也可以同時儲存)。對於完整的journal,重放到檔案系統中去; 否則,當前incomplete的transaction會被丟棄,這個transaction所代表的對檔案系統的修改也會丟失。
參考連結:
References
==========
Thekernel 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/
FilesystemResizing http://ext2resize.sourceforge.net/
Compression(*) http://e2compr.sourceforge.net/
Implementationsfor:
Windows95/98/NT/2000 http://www.chrysocome.net/explore2fs
Windows95 (*) http://www.yipton.net/content.html#FSDEXT2
DOSclient (*) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
OS/2(+) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
RISCOS client http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/IscaFS/
本文出自 “儲存之廚” 部落格,請務必保留此出處http://xiamachao.blog.51cto.com/10580956/1917977
[深入理解檔案系統之十一] ext2中data和meta-data的資料一致性