mkfs.ext4命令來自于英文詞組“make filesystem Ext4”的縮寫,其功能是用于對磁盤設備進行Ext4格式化的操作。
mkfs.ext4 參數-b block-size 塊大小(1k,2k,4k) -c 壞塊測試 -l filename從文件讀壞塊列表 -C cluster-size 簇大小 (大塊分配持性) -D 使用direct I/O -E 擴展屬性mmp_update_interval=MMP更新時間間隔,必需小于300sstride=條塊大小(RAID組中每個條帶單元chunk大小)stripe_width=條帶大小 (單位為block),(在數據定時,塊分配器盡可能的防止產生read-modify-write)resize=保留在線調整時的空間大小lazy_itable_init=0/1 inode表不完全初始化 (掛載時由內核在后臺初始化)? ? // 40TG mount后50M寫初始化55分鐘 (格式化時:20s,強制初始化時:7min)? (mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 )lazy_journal_init=0/1日志inode表不完全清0test_fs設置文件系統體驗標志-F(force 強制) -f? fragment-size? 指定片段大小 -g blocks-per-group? 指定每一個塊組內塊的數量 -G number-of-groups? 指定塊組數量(在元數據負載重時可以提高元數據性能) -i bytes-per-inode? 指定 bytes/inode 比率 -I inode-size 指定inode大小 -j 創建一個ext3日志。默認創建合適大小的日志區 -J 創建指定屬性的日志。逗號分隔。 (size=1024塊 內部日志大小,device= 外部日志設備 )size= journal-size? 內部日志大小,單位為M,最小為1024個文件系統塊,(最大為10240000個文件系統塊或文件系統的一半)device = external-journal 外部日志塊設備(設備名,標簽,UUID)外部日志必需先創建:mke2fs -b 4096 -O journal_dev? external-journal (/dev/ramhda)mkfs.ext4 -J device= external-journal (/dev/ramhda)? -F /dev/mapper/vggxxxxxxx -L 設置volume 標簽,最長為16個byte -m 指定保留空間百分比,為root用戶 -M 設置最后掛載目錄 -n 不真正創建文件系統,只是顯示創建的信息 -S? 只寫超級塊和塊組描述符。(當超級塊和備份超級塊錯誤后,可以用來恢復數據。因為它不會touching inode表和bitmap) -O feature 指定創建文件系統時的持性(/etc/mke2fs.conf)bigalloc 使能大塊分配(cluster-size)dir_index 使用哈希B樹加速目錄查找extents 使用extents替代間接塊filetype在目錄項中存儲文件類型信息flex_bg 允許為每一個塊組元數據(分配bitmap和inode表)存放在任何位置?has_journal? 創建ext3日志(-j)journal_dev 在給定的設備上創建外部ext3日志large_file 支持>2G的文件(現代內核會自動打開)?quota 創建quota inodes(inode#3為用戶配額,inode#4為組配額) ,并在超級塊中設置。(掛載后自己啟用quota)resize_inode 保留空間以便未來塊組描述表增長。用于resize2fssparse_super 創建少量的超緩塊拷貝uninit_bg? ?創建文件系統時不初始化所有的塊組,加速創建時間,和e2fsck時間、 -O^has_journal? ?不啟用日志
檢查指定的磁盤設備并進行格式化操作:
[root@linuxcool ~]# mkfs.ext4 -c /dev/sdb
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 5242880 4k blocks and 1310720 inodes
Filesystem UUID: 2468ba17-0d37-4900-b67e-5f3a24084fc5
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000Checking for bad blocks (read-only test): 0.00% done, 0:00 elapsed. (0/0/0 errdone
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
對指定的磁盤設備進行格式化操作,添加卷標識,并修改塊大小:
[root@linuxcool ~]# mkfs.ext4 -L 'LinuxCool' -b 2048 /dev/sdb
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10485760 2k blocks and 1310720 inodes
Filesystem UUID: 73ad248c-2a01-49dd-aa46-8770ecbc56fd
Superblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 2048000, 3981312, 5619712, 10240000Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
使用mkfs.ext4格式化大容量磁盤
使用mkfs.ext4默認參數格式化磁盤后,發現格式化時間特別長,并且格式化會占用磁盤很大的空間。
例如2TB的磁盤格式化會占用10分鐘左右時間,并占用30G左右的磁盤空間。
究其原因,原來inode會占用磁盤空間,每個inode占用256b大小空間。
默認情況下,mkfs2fs會為每16kb的磁盤空間分配一個inode,
格式化時系統根據磁盤大小,計算可以保存的文件個數,進而為inode保留空間。
所以格式化大容量磁盤,系統會分配過多inode,為inode預留過多空間,導致磁盤空間占用特別大。
linux 增加inode 的方法
創建文件系統時,可以指定塊的大小。如果將來在你的文件系統中是一些比較大的文件的話,使用較大的塊大小將得到較好的性能。將ext2文件系統的塊大小調整為4096byte而不是缺省的1024byte,可以減少文件碎片,加快fsck掃描的速度和文件刪除以及讀操作的速度。另外,在ext2的文件系統中,為根目錄保留了5%的空間,對一個大的文件系統,除非用作日志文件,5%的比例有些過多。可以使用命令"# mke2fs -b 4096 -m 1 /dev/hda6"將它改為1%并以塊大小4096byte創建文件系統。?
使用多大的塊大小,需要根據你的系統綜合考慮,如果系統用作郵件或者新聞服務器,使用較大的塊大小,雖然性能有所提高,但會造成磁盤空間較大的浪費。比如文件系統中的文件平均大小為2145byte,如果使用4096byte的塊大小,平均每一個文件就會浪費1951byte空間。如果使用 1024byte 的塊大小,平均每一個文件會浪費927byte空間。在性能和磁盤的代價上如何平衡,要看具體應用的需要。