Linux文件系統管理

Linux支持的文件系統類型: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap(交換分區)

擴展:

Windows支持文件系統:Fat32、NTF

Unix: FFS, UFS, JFS2    
網絡文件系統:NFS, CIFS    
集羣文件系統:GFS2, OCFS2    
分佈式文件系統:ceph, moosefs, mogilefs, GlusterFS, Lustre

Ext4

由於Ext4是Ext2、Ext3的改進版,所以這裏直接介紹Ext4。Linux Kernel自2.6.28開始正式支持新的文件系統Ext4,它修改了 Ext3 中部分重要的數據結構,而不僅僅像 Ext3 對 Ext2 那樣,只是增加了一個日誌功能而已。Ext4 可以提供更佳的性能和可靠性,主要有如下幾點:

1、與Ext3兼容。支持無須重新格式化磁盤或重新安裝系統就能直接從Ext3在線遷移至Ext4,原有 Ext3 數據結構照樣保留,Ext4 作用於新數據,當然,整個文件系統因此也就獲得了 Ext4 所支持的更大容量。

2、支持更大的文件系統和更大的文件,Ext3 目前所支持的最大 16TB 文件系統和最大 2TB 文件,Ext4 分別支持 1EB(1,048,576TB,EB=http://www.aliyun.com/zixun/aggregation/12560.html">1024PB, 1PB=1024TB)的文件系統,以及 16TB 的文件。

3、無限數量的子目錄。 Ext3 目前只支持 32,000 個子目錄,而 Ext4 支持無限數量的子目錄。

4. Extents。 Ext3 採用間接塊映射,當操作大文件時,效率極其低下。比如一個 100MB 大小的文件,在 Ext3 中要建立 25,600 個數據塊(每個數據塊大小爲 4KB)的映射表。而 Ext4 引入了現代文件系統中流行的 extents 概念,每個 extent 爲一組連續的數據塊,上述文件則表示爲“該文件數據保存在接下來的 25,600 個數據塊中”,提高了不少效率。

5. 多塊分配。 當寫入數據到 Ext3 文件系統中時,Ext3 的數據塊分配器每次只能分配一個 4KB 的塊,寫一個 100MB 文件就要調用 25,600 次數據塊分配器,而 Ext4 的多塊分配器“multiblock allocator”(mballoc) 支持一次調用分配多個數據塊。

6. 延遲分配。 Ext3 的數據塊分配策略是儘快分配,而 Ext4 和其它現代文件操作系統的策略是儘可能地延遲分配,直到文件在 cache 中寫完纔開始分配數據塊並寫入磁盤,這樣就能優化整個文件的數據塊分配,與前兩種特性搭配起來可以顯著提升性能。

7. 快速 fsck。 以前執行 fsck 第一步就會很慢,因爲它要檢查所有的 inode,現在 Ext4 給每個組的 inode 表中都添加了一份未使用 inode 的列表,今後 fsck Ext4 文件系統就可以跳過它們而只去檢查那些在用的 inode 了。

8. 日誌校驗。 日誌是最常用的部分,也極易導致磁盤硬件故障,而從損壞的日誌中恢復數據會導致更多的數據損壞。Ext4 的日誌校驗功能可以很方便地判斷日誌數據是否損壞,而且它將 Ext3 的兩階段日誌機制合併成一個階段,在增加安全性的同時提高了性能。

XFS

XfS文件系統是SGI開發的高級日誌文件系統,XFS極具伸縮性,是一種健壯的、優秀的以及功能豐富的文件系統,並且這種文件系統所具有的可伸縮性能夠滿足最苛刻的存儲需求,它主要包含以下幾點特性:

數據完全性

傳輸特性

可擴展性

傳輸帶寬

它跟Ext3、Ext4一樣屬於日誌型文件系統。日誌文件系統是一種即使在斷電或者是操作系統崩潰的情況下保證文件系統一致性的途徑。

XFS的日誌保存的是在更高層次上描述已進行的操作的“邏輯”實體。相比之下,“物理”日誌存儲每次事務中被修改的塊。爲了保證性能,日誌的更新是異步進行的。當系統崩潰時,崩潰的一瞬間之前所進行的所有操作可以利用日誌中的數據重做,這使得XFS能保持文件系統的一致性。XFS在掛載文件系統的同時進行恢復,恢復速度與文件系統的大小無關。對於最近被修改但未完全寫入磁盤的數據,XFS保證在重啓時清零所有未被寫入的數據塊,以防止任何有可能的、由剩餘數據導致的安全隱患(因爲雖然從文件系統接口無法訪問這些數據,但不排除裸設備或裸硬件被直接讀取的可能性)

BTRFS

由Oracle於2007年宣佈並進行中的COW(copy-on-write式)文件系統。目標是取代Linux目前的ext3文件系統,改善ext3的限制,特別是單一文件大小的限制,總文件系統大小限制以及加入文件校驗和特性。加入目前ext3/4未支持的一些功能,例如可寫的磁盤快照(snapshots),以及支持遞歸的快照(snapshots of snapshots),內建磁盤陣列(RAID)支持,支持子卷(Subvolumes)的概念,允許在線調整文件系統大小

平臺支持:OpenSUSE、Ubuntu、Red Hat Enterprise Linux 6、Debian、Arch Linux、

 

文件系統的組成部分:

           內核中的模塊:ext4, xfs, vfat    
           用戶空間的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat    

創建文件系統命令

mkfs命令
語法格式:mkfs [options] [-t type] [fs-options] device [size]
使用語法一:mkfs.FS_TYPE /dev/DEVICE
#mkfs.ext4 /dev/DEVICE #創建設備爲ext4文件系統
#mkfs.xfs /dev/DEVICE   #創建設備爲xfs文件系統
#mkfs.btrfs /dev/DEVICE  #創建設備爲btrfs文件系統
#mkfs.vfat /dev/DEVICE  #創建設備爲vfat文件系統
使用語法二:mkfs –t FS_TYPE /dev/DEVICE
#mkfs –t ext4 /dev/DEVICE  #創建設備爲ext4文件系統
選項“-L” Label 設定文件系統標籤
#mkfs –t ext4 –L “Mydata”/dev/DEVICE  #創建設備爲ext4文件系統,標籤爲Mydata

mke2fs: Ext系統文件系統專用管理工具

常用選項:

 -t {ext2|ext3|ext4}    
 -b {1024|2048|4096}     
 -L 'LABEL'     
 -j: 相當於 -t ext3;mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3     
 -i #: 爲數據空間中每多少個字節創建一個inode;此大小不應該小於block的大小;     
 -N #:爲數據空間創建個多少個inode;     
 -m #: 爲管理人員預留的空間佔據的百分比;     
 -O FEATURE[,...]:啓用指定特性     
 -O ^FEATURE:關閉指定特性

mkswap:創建交換分區

語法格式:mkswap [options] device [size]

blkid:塊設備屬性信息查看;  

語法格式:  blkid [OPTION]... [DEVICE]                    
-U UUID: 根據指定的UUID來查找對應的設備                     
-L LABEL:根據指定的LABEL來查找對應的設備
[root@localhost ~]# blkid /dev/sdb1  #以設備名查找    
/dev/sdb1: LABEL="testd" UUID="b097348b-0d0e-42d2-b687-ffcd32ef7554" TYPE="ext4"     
[root@localhost ~]# blkid -U b097348b-0d0e-42d2-b687-ffcd32ef7554  #以UUID查找/dev/sdb1  [root@localhost ~]# blkid -L testd   #以標籤查找     /dev/sdb1

e2label:管理ext系列文件系統的LABEL

例如我們知道/dev/sdb1的標籤爲”testd“,我們把它修改爲”mylable“

[root@localhost ~]# e2label /dev/sdb1 mylable    
[root@localhost ~]# blkid /dev/sdb1     
/dev/sdb1: LABEL="mylable" UUID="b097348b-0d0e-42d2-b687-ffcd32ef7554" TYPE="ext4"

tune2fs:重新設定ext系列文件系統可調整參數的值

常用選項:

-i interval-between-checks[d|m|w] 設置強制自檢的時間間隔[d天m月w周]
-l:查看指定文件系統超級塊信息;super block    
-L 'LABEL':修改卷標,功能類型於e2label     
-m #:修預留給管理員的空間百分比     
-j: 將ext2升級爲ext3     
-O: 文件系統屬性啓用或禁用     
-o: 調整文件系統的默認掛載選項     
-U UUID: 修改UUID號;

例如我們將設備/dev/sdb1從ext2升級爲ext3,命令如下:

[root@localhost ~]# tune2fs -j /dev/sdb1    
tune2fs 1.42.9 (28-Dec-2013)     
Creating journal inode: done     
[root@localhost ~]# blkid /dev/sdb1     
/dev/sdb1: UUID="17a6e508-5b46-45d8-9734-4fa180a9b7ea" SEC_TYPE="ext2" TYPE="ext3"

例如開機取消自檢:    

tune2fs -l /dev/sdb1 | grep -E ‘Maximum mount count:|Check interval’     
tune2fs -i 0 -c 0 /dev/sdb1

 Fsck 文件系統檢測

語法格式:fsck.FS_TYPE 或者 fsck -t FS_TYPE

例如:加一個參數-f,讓fsck對於沒有錯的檔案也強行檢測,它可以修復一些分區的輕微的錯誤
[root@localhost ~]# fsck.ext3 -f /dev/sdb1    
e2fsck 1.42.9 (28-Dec-2013)     
Pass 1: Checking inodes, blocks, and sizes     
Pass 2: Checking directory structure     
Pass 3: Checking directory connectivity     
Pass 4: Checking reference counts     
Pass 5: Checking group summary information     
/dev/sdb1: 11/327680 files (0.0% non-contiguous), 55935/1310720 blocks
加一個參數-r,交互式修復錯誤,在檢測到硬件有錯誤,可以先進行判斷後再執行操作,以免損壞數據
[root@localhost ~]# fsck.ext3 -r /dev/sdb1    
e2fsck 1.42.9 (28-Dec-2013)    
/dev/sdb1: clean, 11/327680 files, 55935/1310720 blocks

 

 

引用文獻:

https://www.aliyun.com/zixun/content/3_12_520075.html

http://baike.baidu.com/view/1222157.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章