6 月 092009
 

格式化存儲裝置成為 Ext2/Ext3/Ext4 檔案系統 – OSWikiHK
From OSWikiHK

格式化 Ext2/Ext3//Ext4 是使用 e2fsprogs 的 mke2fs 來進行。

目錄

[隱藏]

格式化

用系統管理員帳戶 (即 root) 身份打「mkfs -t ext2|ext3|ext4 儲存裝置」:

mkfs -t ext3 /dev/sdb5

要格式化檔案系統為 Ext2,亦可以直接使用命令 mkfs.ext2mke2fs,例如:

mkfs.ext2 /dev/sdb5

或者:

mke2fs /dev/sdb5

要格式化檔案系統為 Ext3,亦可以使用命令 mkfs.ext3mke2fs -j,例如:

mkfs.ext3 /dev/sdb5

或者:

mke2fs -j /dev/sdb5

Linux 在 2.6.28 開始正式鼓勵使用 Ext4。要格式化檔案系統為 Ext4,亦可以使用命令 mkfs.ext4mke2fs -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 -mtune2fs -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 distributionFedoraRHELCentOS 等亦在 /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)。

參考資料

  1. Diedrich, Oliver (2008). Tuning the Linux file system Ext3. Heise Online. (Accessed at 15 Nov 2008)
  2. 2.0 2.1 2.2 Hagen, William von (2001). “Linux Filesystems”. Sams Publishing. ISBN 06-723-2272-2
  3. Ts’o, Theodore. (2006) E2fsprogs Release Notes: E2fsprogs 1.39 (May 29, 2006) e2fsprogs.
  4. e2fsprogs 原始碼: misc/mke2fs.conf. e2fsprogs.
  5. e2fsprogs (2008). “mke2fs(8) – create an ext2/ext3 filesystem”. Ubuntu 9.04.

相關頁面

相關連結

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

CAPTCHA Image
Play CAPTCHA Audio
Reload Image