格式化存儲裝置成為 Ext2/Ext3/Ext4 檔案系統 – OSWikiHK
From OSWikiHK
格式化 Ext2/Ext3//Ext4 是使用 e2fsprogs 的 mke2fs 來進行。
目錄[隱藏] |
格式化
用系統管理員帳戶 (即 root) 身份打「mkfs -t ext2|ext3|ext4 儲存裝置
」:
mkfs -t ext3 /dev/sdb5
要格式化檔案系統為 Ext2,亦可以直接使用命令 mkfs.ext2 或 mke2fs,例如:
mkfs.ext2 /dev/sdb5
或者:
mke2fs /dev/sdb5
要格式化檔案系統為 Ext3,亦可以使用命令 mkfs.ext3 或 mke2fs -j,例如:
mkfs.ext3 /dev/sdb5
或者:
mke2fs -j /dev/sdb5
Linux 在 2.6.28 開始正式鼓勵使用 Ext4。要格式化檔案系統為 Ext4,亦可以使用命令 mkfs.ext4 或 mke2fs -T ext4,例如:
mkfs.ext4 /dev/sdb5
或者:
mke2fs -T ext4 /dev/sdb5
mkfs.ext2、mkfs.ext3、mkfs.ext4 和 mke2fs 一般收錄在套件 e2fsprogs 中。
格式化選項
區塊大小 (Block size)
區塊 (block) 是檔案系統儲存檔案內容最小的單位,其大小對檔案系統的空間運用和效用有很大的影響。較的大區塊可以的令檔案系統大小上限和檔案大小上限增加,亦可以加快 了大檔案的讀寫。然而亦會浪費較多的空間,對平均檔案大小較小的檔案系統比較不利。區塊大小隻可以在格式化檔案系統時設定,往後除重新格式化外不能改變。
Ext2/Ext3/Ext4 的區塊大小可以是 1024、2048 或 4096 位元組。 (Compaq Alpha 可以使用 8192 位元組區塊) mke2fs 一般預設會把小於 512 MiB 的檔案系統使用 1024 位元組區塊格式化,等於或大於 512 MiB 的檔案系統使用 4096 位元組區塊。(實際是視乎 mke2fs.conf 中檔案系統類型 small 和 default 的設定 blocksize)
您可以使用 mke2fs/mkfs 的選項 -b block-size
指定格式化後檔案系統的區塊大小,例如:
mkfs -t ext3 -b 4096 /dev/sdb5
-T
可以根據檔案系統類型 (fs-type) 決定區塊大小和其他選項,例如使用檔案系統類型 news 的設定格式化檔案系統,可以使用:
mkfs.ext3 -T floppy /dev/fd0
Inode 數目
Ext2/Ext3 檔案系統的 inode 數目限制了整個檔案系統可能最多擁有的檔案數目,而這數目在格式化檔案系統時已決定,往後除重新格式化外不能改變。 。一些儲存了大量小檔案的檔案系統 (例如 USENET 新聞組伺服器) 有機會出現用盡 inode 但仍餘下大量硬碟空間的情況。所以安裝這類伺服器時,檔案系統有機會需要特別設定。
mke2fs 預設會根據檔案系統的大小來決定 inode 的數目,小於或等於 512 MiB 的檔系統會每 4kiB 有一個 inode,512 MiB 以上的檔案系統則每 8kiB 有一個 inode。[1](實際是視乎 mke2fs.conf 中檔案系統類型 small 和 default 的設定 inode_ratio)
要直接設定 inode 數目可以使用 mke2fs/mkfs.ext2/mkfs.ext3/mkfs 的選項 -N no-of-node
,例如:
mke2fs -N 1000000 /dev/sdb5
mke2fs/mkfs.ext2/mkfs.ext3/mkfs 的選項 -i byte-per-inode
根據檔案系統的大小來決定 inode 的數目,例如要檔案系統每 512 KiB 就有一個 inode,可以使用:
mke2fs -i 524288 /dev/sdb5
mke2fs/mkfs 的選項 -T
可以根據檔案系統類型 (fs-type) 決定 inode 數目和其他選項,例如使用檔案系統類型 news 的設定格式化檔案系統,可以使用:
mkfs.ext3 -T news /dev/sdb5
Inode 大小 (inode size)
現時 inode 的大小預設為 256 位元組,早期的 inode 只有 128 位元組。較大的 inode 令檔案系統較易擴充支援 POSIX ACL 和擴充屬性 (Extended Attrible) 等功能。inode 大小同樣在格式化後不能改變。
您可以加上 -I inode-size
指定 inode 大小:
mkfs.ext3 -I 128 /dev/sdb5
保留空間
Ext2/Ext3 預設保留 5% 硬碟空間供系統管理員工作之用。設定保留空間大小可以使用 mke2fs/mkfs.ext2/mkfs.ext3/mkfs 的選項 -m percentage
,例如要檔案系統保留 12% 的空間,可以使用:
mkfs.ext2 -m 12 /dev/sdb5
格式化後仍可以使用命令 tune2fs -m 或 tune2fs -r 改變。
偵察壞區塊 (Bad block)
格式化時加上選項 -c
,mke2fs 會掃描整個儲存裝置是否有壞區塊 (bad block),例如:
mkfs -t ext3 -c /dev/sdb6
如果使用選項 -cc
,mke2fs 會寫一此資料入儲存裝置每個區塊並再讀取來測式壞區塊 – 比原本只讀更準確和但更慢的方法偵察壞區塊,例如:
mkfs.ext2 -cc /dev/sdc1
日誌大小 (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 功能
檔案系統標簽 (Filesystem label)
檔案系統標簽 (Filesystem label) 在個別檔案系統又叫作 Volume Name,是檔案系統中一個小欄目用作簡述該檔案系統的用途或其儲存數據。現時 GNU/Linux 都會用 USB 手指/IEEE1394 硬碟等可移除儲存裝置的檔案系統標簽作為其掛載目錄的名稱,方便使用者識別。而個別 GNU/Linux distribution 如 Fedora、RHEL 和 CentOS 等亦在 /etc/fstab 取代傳統裝置檔案名稱 (即 /dev/sda1 和 /dev/hdc5 等) 的指定開機時要掛載的檔案系統,避免偶然因為 BIOS 設定或插入次序的改變而引起的混亂。您可以使用選項 -L 標簽
在格式化時設定檔案系統標簽:
mkfs.ext2 -L Photos /dev/sdc1
Ext2/Ext3/Ext4 的檔案系統標簽不可以超過 16 個字元。往後可以使用命令 e2label 或 tune2fs -L 隨時改變。
格式化畫面資訊
以下是使用命令 mke2fs/mkfs.ext2 格式化一個約 8 GiB 的分割區成為 Ext2 檔案系統的畫面:
# mke2fs /dev/sdb5 mke2fs 1.41.3 (12-Oct-2008) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 524288 inodes, 2096466 blocks 104823 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2147483648 64 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 21 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
當中包括顯示了有關新建 Ext2 檔案系統的以下資訊:
- 區塊大小 (Block size) – 上例為 4096 位元組 (4 KiB)
- Fragment 大小 (Fragment size) – 實際上 Ext2/Ext3/Ext4 都不支援 fragment 功能,所以這值一定和區塊大小一樣[5]
- inodes 數目 – 上例在整個檔案系統建立了 524,288 個 inodes,亦是檔案系統所可能擁有檔案數目的上限
- 區塊數目 (blocks) – 上例在整個檔案系統建立了 2,096,466 個區塊
- 保留區塊 (reserved blocks) – 上例在整個檔案系統保留了約 5% 的空間共 104,823 個區塊 (約 409 MiB = 104,823 x 4 KiB) 給供系統管理員工作之用
- 檔案系統區塊數目上限 (Maximum Filesystem blocks) – 現時 Ext2/Ext3 所能支援一個檔案系統所可能擁有區塊數目的上限,上例為 2,147,483,648。即表示檔案系統大小上限為 8 TiB =2,147,483,648 x 4 KiB
- 區塊組數目 (block groups) – 上例在整個檔案系統建立了 64 個區塊組
- 區塊/組 (blocks per group) – 每個區塊組的區塊數目,為 32,768。個區塊組約有 128 MiB = 32,768 * 4 KiB
- inodes/組 (inodes per group) – 每個區塊組的 inodes 數目,為 8192
- Superblock 備份 (Superblock backups) – Superblock 被備份在編號 32768、98304、163840、229376、294912、819200、884736 和 1605632 區塊,即編號 1、3、5、7、9、25、27 和 49 區塊組
此外,最尾兩行亦顯示檔案系統的最大掛載次數 (Maxmimum Mount count) 為 21 和最大檢查間距為 180 日,表示檔案系統每掛載超過 21 次或超過 180 日未有進行完整檔案系統檢查都會啟動時進行完整檢查。
以下是使用命令 mke2fs -j/mkfs.ext3/mkfs.ext4 格式化一個約 8 GiB 的分割區成為 Ext3 或 Ext4 檔案系統的畫面:
mke2fs 1.41.3 (12-Oct-2008) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 524288 inodes, 2096466 blocks 104823 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2147483648 64 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 27 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
和格式化 Ext2 的畫面幾乎相同,唯一分別只是多了個 “Creating journal” 建立日誌的步驟罷了。此行同時顯示日誌的大小,上例為 32,768 個區塊 (128 MiB = 32,768 * 4 KiB)。
參考資料
- ↑ Diedrich, Oliver (2008). Tuning the Linux file system Ext3. Heise Online. (Accessed at 15 Nov 2008)
- ↑ 2.0 2.1 2.2 Hagen, William von (2001). “Linux Filesystems”. Sams Publishing. ISBN 06-723-2272-2
- ↑ Ts’o, Theodore. (2006) E2fsprogs Release Notes: E2fsprogs 1.39 (May 29, 2006) e2fsprogs.
- ↑ e2fsprogs 原始碼: misc/mke2fs.conf. e2fsprogs.
- ↑ e2fsprogs (2008). “mke2fs(8) – create an ext2/ext3 filesystem”. Ubuntu 9.04.
相關頁面
- 格式化存儲裝置 – 包括格式化成為 ReiserFS、JFS、XFS、FAT 和 NTFS。
- 使用外部日誌 (exteranl journal)
- 顯示 Ext2/Ext3/Ext4 檔案系統資訊
- 檢查檔案系統
- 設定常規檔案系統檢查
- 設定檔案系統的系統管理員保留空間
- 設定 Ext2/Ext3/Ext4 檔案系統的錯誤處理方案
- 顯示或改變檔案系統標簽
- 使用 UUID 管理檔案系統
- /etc/mke2fs.conf
相關連結
- GNU/Linux Manpage: mke2fs(8) – create an ext2/ext3 filesystem[SuSE][OpenSuSE] – GNU/Linux 中 e2fsprogs 的 mke2fs(8) 說明文件