一、一些基本定義
1. superblock:記錄此 filesystem 的整體信息,包括inode/block的總量、使用量、剩余量, 以及文件系統的格式與相關信息等;
2. inode:記錄檔案的屬性,一個檔案占用一個inode,同時記錄此檔案的數據所在的block 號碼;
3. block:實際記錄檔案的內容,若檔案太大時,會占用多個 block 。
二、Linux支持的文件系統
1. 查看Linux 支持的文件系統有哪些:
ls -l /lib/modules/$(uname -r)/kernel/fs
2. 查看系統目前已加載到內存中支持的文件系統:
cat /proc/filesystems
Linux VFS (Virtual Filesystem Switch)來幫我們管理怎麼去訪問不同的文件系統
三、Ext2文件系統介紹
1. block的特點
1) block 的大小與數量在格式化完就不能夠再改動了(除非重新格式化),一般為1K,2K或4K,其大小決定了最大單一檔案的大小和最大文件系統總容量;
Block 大小 1KB 2KB 4KB
最大單一檔案限制 16GB 256GB 2TB
最大文件系統總容量 2TB 8TB 16TB
2) 每個 block 內最多只能夠放置一個檔案的數據;
3) 如果檔案大於 block 的大小,則一個檔案會占用多個 block 數量;
4) 若檔案小於block ,則該 block 的剩余容量就不能夠再被使用了(磁盤空間會浪費)。
2. inode的特點
1) 每個 inode 大小均固定為 128 bytes;
2) 每個檔案都僅會占用一個 inode 而已;
3) 文件系統能夠建立的檔案數量與 inode 的數量有關;
4) 系統讀檔案時需要先找到 inode,並分析 inode 所記錄的權限與用戶是否符合,若符合才能夠開始實際讀 block 的內容。
5) inode 記錄 block 號碼的區域定義為12個直接,一個間接, 一個雙間接與一個三間接記錄區。
四、文件系統的相關操作
1. df:列出文件系統的整體磁盤使用量
df [-ahikHTm] [目錄或文件名]
選項與參數:
-a :列出所有的文件系統,包括系統特有的/proc 等文件系統;
-k :以 KBytes 的容量顯示各文件系統;
-m :以 MBytes 的容量顯示各文件系統;
-h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
-H :以 M=1000K 取代 M=1024K 的進位方式;
-T :連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
-i :不用硬盤容量,而以 inode 的數量來顯示
2. du:評估文件系統的磁盤使用量
du [-ahskm] 檔案或目錄名稱
選項與參數:
-a :列出所有的檔案與目錄容量,因為默認僅統計目錄底下的檔案量而已。
-h :以人們較易讀的容量格式 (G/M) 顯示;
-s :列出總量而已,而不列出每個各別的目錄占用容量;
-S :不包括子目錄下的總計。du 默認會將所有檔案的大小均列出,因此假設你在 /etc 底下使用 du 時, 所有的檔案大小,包括 /etc 底下的次目錄容量也會被計算一次。然後最終的容量 (/etc) 也會加總一次, 所以,如果想要列出某目錄下的全部數據, 也可以加上 -S 的選頃,減少次目錄的加總喔!
-k :以 KBytes 列出容量顯示;
-m :以 MBytes 列出容量顯示;
3. ln建立檔案鏈接
ln [-sf] 來源文件 目標文件
選項與參數:
-s :如果不加任何參數就進行連結,那就是hard link,至於 -s 就是symbolic link
-f :如果 目標文件 存在時,就主動的將目標文件直接移除後再建立!
新建目錄時link數量一般為2,而上層目錄的 link 數則會增加 1,比如/tmp/test有/tmp/test與/tmp/test/.兩個link,而對上層目錄來說,增加了link/tmp/test/..
4. fdisk 磁盤分區(分區2TB以上用parted)
fdisk -l查看當前磁盤分區信息
fdisk 磁盤: 進入磁盤分區管理系統
5. mkfs 磁盤格式化
mkfs [-t 文件系統格式] 裝置文件名
選項與參數:
-t :可以接文件系統格式,例如 ext3, ext2, vfat 等(系統有支持才會生效)
6. mke2fs 更細化的磁盤格式化
選項與參數:
-b :可以設定每個 block 的大小,目前支持 1024, 2048, 4096 bytes 三種;
-i : inode的大小
-c :檢查磁盤錯誤,僅下達一次 -c 時,會進行快速讀寫測試; 如果下達兩次 -c -c 的話,會測試讀寫(read-write),會很慢~
-L :後面可以接標頭名稱 (Label)
-j :本來 mke2fs 是 EXT2 ,加上 -j 後,會加入 journal 而成為 EXT3。
7. fsck 來檢驗文件系統是否出錯
8. badblocks 檢查硬盤或軟盤扇區有沒有壞軌
9. mount,unmount磁盤掛載與卸除
注意:
1) 單一文件系統不應該被重復掛載在不同的掛載點(目錄)中;
2) 單一目錄不應該重復掛載多個文件系統;
3) 要作為掛載點的目錄,理論上應該都是空目錄。如果非空,則掛載後原有的文件將被隱藏起來。
10. mknod 修改文件系統的信息,如主要裝置代碼,次要裝置代碼等
11. e2label 修改文件系統標頭
12. tune2fs 修改文件系統為ext2,ext3,ext4等
13. hdparm 硬盤為IDE接口時設置一些參數
14. 可以用mkswap來將大文件建立為swap文件,並用swapon, swapoff 開啟或關閉swap file來實現虛擬內存。
小技巧,可以用dd if=/dev/zero of=/tmp/swap bs=1M count=128來建立大文件。