一、文件系統
操作系統通過文件系統管理文件及數據,磁盤或分區需要創建文件系統之后,才能被操作系統所用,創建文件系統的過程又稱之為格式化。沒有文件系統的設備又稱之為裸設備(raw),某些環境會需要裸設備,例如安裝 Oracle 時會需要裸設備。
1. 常見的文件系統類型
常見的文件系統有 fat32、NTFS、ext2、ext3、ext4、xfs、HFS 等。其中,fat32 和 NTFS 是 Windows 中的文件系統,ext2、ext3、ext4、xfs、HFS 是 Linux 中的文件系統。NTFS 是當今 Windows 主流的文件系統,ext3、ext4 是 Linux 中主流的文件系統。
2. 不同文件系統之間的區別
- 是否帶有日志
- 支持的分區大小
- 支持的單個文件大小
- 性能
- ......
二、Linux支持的文件系統
常見的有 ext2、ext3、ext4、fat(msdos)、vfat、nfs、iso9660(光盤的文件系統)、proc(Linux 內存中的虛擬文件系統)、gfs(Linux 中的 global file system,全局文件系統)、jfs (帶日志的文件系統)等等,不同的 Linux 發行版本,文件系統略有不同。
三、mke2fs命令
命令 mke2fs 用來創建文件系統:
mke2fs -t ext4 /dev/sda3 給第一塊 SATA 硬盤的 3 號分區創建 ext4 文件系統
常用參數:
-b blocksize 指定文件系統塊大小(文件系統每次讀寫數據時的最小單位) -c 建立文件系統時檢查塊壞損(check,檢查) -L label 打標簽(類似 Windows 的磁盤卷標) -j 建立文件系統日志(journal,日志),ext3 和 ext4 默認帶日志
四、mkfs命令
命令 mkfs 也可以用來創建文件系統,相較於 mke2fs 更加簡單,但是支持的參數較少,不能進行精細化的控制。
它還有一些子命令:
mkfs.ext3 /dev/sda3 mkfs.ext4 /dev/sda3 mkfs.vfat /dev/sda3
五、dumpe2fs命令
命令 dumpe2fs 可以用來查看分區的文件系統信息:
dumpe2fs /dev/sda1
六、journal日志
帶日志的文件系統(ext3、ext4)擁有較強的穩定性,主要體現在出錯時可以恢復。
使用帶日志的文件系統,文件系統會使用一個叫做“兩階段提交”的方式進行磁盤操作,當進行磁盤操作時,文件系統進行以下操作:
- 文件系統將准備執行的事務的具體內容寫入日志
- 文件系統進行操作
- 操作成功后,將事務的具體內容從日志刪除
這樣做的好處是,當事務執行的時候如果出現意外(如斷電或磁盤故障),可以通過查詢日志進行恢復操作。缺點是會喪失一定的性能(額外的日志讀寫操作)。
七、e2label命令
命令 e2label 可以用來為文件系統打標簽:
e2label /dev/sda2 顯示 sda2 的標簽 e2label /dev/sda2 MYLABEL 將 sda2 的標簽設置為 MYLABEL
八、fsck命令
命令 fsck 用來檢查並修復壞損的文件系統:
fsck /dev/sda2
- 使用 -y 參數不提示而直接進行修復
- 默認 fsck 會自動判斷文件系統類型,如果文件系統損壞比較嚴重,請使用 -t 參數指定文件系統類型
- 對於識別為文件的損壞數據(文件系統無記錄),fsck 會將該文件放入 lost+found 目錄
- 系統啟動時會對磁盤進行 fsck 操作