使用mkfs.ext4默認參數格式化磁盤后,發現格式化時間特別長,並且格式化會占用磁盤很大的空間。 例如2TB的磁盤格式化會占用10分鍾左右時間,並占用30G左右的磁盤空間。 究其原因,原來inode會占用磁盤空間,每個inode占用256b大小空間。 默認情況下,mkfs2fs會為每16kb的磁盤空間分配一個inode, 格式化時系統根據磁盤大小,計算可以保存的文件個數,進而為inode保留空間。 所以格式化大容量磁盤,系統會分配過多inode,為inode預留過多空間,導致磁盤空間占用特別大。
例如:一個2Tb的磁盤,格式化時會出現以下信息
mkfs.ext4 -n /dev/sdc1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
122101760 inodes, 488378368 blocks
24418918 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
14905 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, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848
通過以上信息可以計算出磁盤格式化后inode占用的磁盤空間
122101760 * 256 / 1024 / 1024 = 29810mb
inode數量 122101760
乘以
每個inode占用的空間 256b
除以
1024 換算為kb
再除以
1024 換算為 mb
通過以上計算可以得出結論:磁盤空間很大的磁盤使用默認參數格式化磁盤會占用大量磁盤空間,浪費磁盤空間。
mkfs.ext4有參數-i,可以指定:多大磁盤空間分配一個inode
man mkfs.ext4
-i bytes-per-inode
Specify the bytes/inode ratio.
mke2fs creates an inode for every bytes-per-inode bytes of space on the disk.
The larger the bytes-per-inode ratio, the fewer inodes will be created.
This value generally shouldn’t be smaller than the blocksize of the filesystem,
since in that case more inodes would be made than can ever be used.
Be warned that it is not possible to expand
the number of inodes on a filesystem after it is created,
so be careful deciding the correct value for this parameter.
增大-i參數,從而減小inode總數,可以減小inode占用的磁盤空間,減少磁盤浪費。
例如:指定1m空間分配一個inode來格式化2TB磁盤
mkfs.ext4 -i 1048576 -n /dev/sdc
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
1907840 inodes, 488378368 blocks
24418918 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
14905 block groups
32768 blocks per group, 32768 fragments per group
128 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848
通過以上信息可以計算出磁盤格式化后inode占用的磁盤空間
1907840 * 256 / 1024 / 1024 = 465mb
inode數量 1907840
乘以
每個inode占用的空間 256b
除以
1024 換算為kb
再除以
1024 換算為 mb
通過更改-i參數,節省了29G空間。
除了更改-i參加,也可以直接通過-T參數直接指定多大磁盤空間分配一個inode。
mkfs.ext4 -T largefile -n /dev/sdc1
mkfs.ext4 -T largefile4 -n /dev/sdc1
largefile和largefile4對應的【多大磁盤空間分配一個inode】其實是在 /etc/mke2fs.conf 定義的。 largefile 類型就是 1M 一個 inode largefile4 類型就是 4M 一個 inode