GNU/Linux 上的 ext2/ext3/ext4 档案系统在运作时发生问题 (例如 CPU/内存错误或磁盘错误),系统缺省会继续正常运作。然而,如果问题严重,继续运作可能会令损害加剧,档案系统资料亦会因此而流失。

事实上,系统管理员可以在档案系统的 super block 或挂载档案系统时,指定发生问题时的错误处理方案。Ext2/ext3/ext4 档案系统可以使用三个错误处理方案 (error behavior):

continue - 继续正常运作
remount-ro - 重新挂载档案系统成只读模式,可以令系统有限度地继续运作但减低损害档案系统资料的机会。
panic - 令系统即时当机,可以令损害停止加剧。

当然无论选择以上任何方案,只要档案系统有问题发生,重新启动 GNU/Linux 时都会自动使用 fsck 对档案系统进行完整的检查

挂载档案系统时可以使用选项 -o errors=error-behavior指定档案系统的错误处理方案:

mount -t ext3 -o errors=remount-ro /dev/sdb5 /mnt

在 /etc/fstab 指定个别档案系统的错误处理方案,可以在档案系统选项加上 errors=error-behavior:

/dev/sda7  /home     ext3   errors=remount-ro  0    1

如果不想每次在挂载或 fstab 指定错误处理方案,亦可以使用「tune2fs -e error-behavior 装置档案」在档案系统的 super block 设定缺省方案:

tune2fs -e remount-ro /dev/sda8

----------------------------------------------------------------------------------------------------------------------------------------

tune2fs是linux下面重要的文件系统调整工具,其中的几个选项解释如下:

-c:表示文件系统在mount次数达到设定后,需要运行fsck检查文件系统。
-i:文件系统的检查间隔时间。系统在达到时间间隔时,自动检查文件系统。
-l:显示文件系统的很多参数。
-j:转换为ext3文件系统。

通常如果使用ext3文件系统的话,使用-c 0关掉mount次数达到后的文件系统检查。但是,此时最好使用 -i 启动检查时间 间隔,否则文件系统出问题的时候就很难补救了。我的设置是-c 1w,每周自动检查一次。

----------------------------------------------------------------------------------------------------------------------------------------



Linux在使用檔案系統時, 會對檔案系統給予可供系統進行安全性維護的參數與相關資訊, 可以透過以下指令來顯示:

    tune2fs -l [filesystem]

在較大的檔案系統時(數百GB或是TB等級), fsck的動作往往需要數小時才能夠完成(1T約需4小時, 依disk速度有所差異), 因此為了避免系統在使用此類檔案系統時, 因為預設的保護機制而進行check動作(當然, 你自己必須知道什麼時候什麼原因該手動做check)造成大量時間的浪費, 可以修改filesystem兩個參數來滿足此需求

簡單列出使用上述指令後, 與check動作有相關的資訊:

    Last mount time:          Tue Mar  6 15:17:14 2007
    Last checked:             Mon Dec 18 17:37:50 2006
    Check interval:           0 ( )
    Mount count:              8
    Maximum mount count:      -1

會進行check的條件為,
 last checked - last mount time > check interval
或是
 mount count > maximum mount count
check intarval = 0 表示不受mount時間決定是否進行check動作
maximum mount count = -1 只是在顯示時為 -1 的值, 其實在設定時是設成 0 , 即不受mount次數決定是否進行check動作

check interval預設值為 0 , 而maximum mount count的值似乎不一定(?), 因為在使用經驗上, 曾有22也有31過, 似乎會與filesystem大小有相關, 有待查證~

----------------------------------------------------------------------------------------------------------------------------------------

 日誌大小 (Journal size)

格式化 ext3 或 ext4 時,mke2fs 會自動根據檔案系統的大小劃分日誌 (journal) 的大小[2]:

    * 少於 32,768 個區塊則劃分 1024 個區塊作日誌
    * 少於 262,144 個區塊但大於或等於 32,768 個區塊則劃分 4096 個區塊作日誌
    * 大於或等於 262,144 個區塊則劃分 8192 個區塊作日誌

您可以加上 -J size=日誌大小 指定建立的日誌大小,單位為 MiB,例如:

mke2fs -J size=128 /dev/sdb1

格式化了 sdb1 為 ext3 並劃分 128 MiB 的日誌。(使用選項 -J 已穩示啟用日誌功能,所以可以略去選項 -j) 留意日誌的大小只可以為 1024 至 102,400 個區塊。

William von Hagen[2]認為 mke2fs 自動劃分的日誌大小一般應該很適合,而無需要自訂。日誌過小會令其容易被寫滿,有機會減低檔案系統效率。較大的日誌對啟用 journaling 模式可能有幫助。但如果日誌大於電腦實體記憶體大小,開機修復檔案系統時有機會不夠記憶體載入整個日誌紀錄,不能自動修復。

如果有多於一顆硬碟,可以考慮使用外部日誌 (external journal) 把檔案系統和日誌儲存在不同的硬碟,可以增加效能。
[编辑]
檔案系統類型 (fs-type)

e2fsprog 1.39 之前中的 mkfs.ext2/mkfs.ext3/mke2fs 只支援 news 、 largefile 和 largefile4 三個檔案系統類型。e2fsprog 1.39 開始, mkfs.ext2/mkfs.ext3/mke2fs 使用設定檔案 mke2fs.conf 自訂檔案系統類型。[3] 現時一般 GNU/Linux 預設的檔案系統類型包括:

    * small - 區塊大小 1 KiB,每 4 KiB 一個 inode,inode 大小 128 位元組
    * floppy - 區塊大小 1 KiB,每 8 KiB 一個 inode,inode 大小 128 位元組
    * news - 每 4 KiB 一個 inode
    * largefile - 每 1 MiB 一個 inode

e2fsprogs 預設的 mke2fs.conf 額外定義了 [4]:

    * largefile4 - 每 4 MiB 一個 inode
    * hurd - 區塊大小 4 KiB,inode 大小 128 位元組
    * ext3 - 開啟了 has_journal 功能
    * ext4 - inode 大小 256 位元組,開啟了 has_journal、extents、huge_file、flex_bg、uninit_bg、dir_nlink 和 extra_isize 功能 

----------------------------------------------------------------------------------------------------------------------------------------


台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()