Linux支持的文件系統類型: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap(交換分區)html
擴展:node
Windows支持文件系統:Fat3二、NTF安全
Unix: FFS, UFS, JFS2
網絡文件系統:NFS, CIFS
集羣文件系統:GFS2, OCFS2
分佈式文件系統:ceph, moosefs, mogilefs, GlusterFS, Lustrebash
Ext4網絡
因爲Ext4是Ext二、Ext3的改進版,因此這裏直接介紹Ext4。Linux Kernel自2.6.28開始正式支持新的文件系統Ext4,它修改了 Ext3 中部分重要的數據結構,而不只僅像 Ext3 對 Ext2 那樣,只是增長了一個日誌功能而已。Ext4 能夠提供更佳的性能和可靠性,主要有以下幾點:數據結構
一、與Ext3兼容。支持無須從新格式化磁盤或從新安裝系統就能直接從Ext3在線遷移至Ext4,原有 Ext3 數據結構照樣保留,Ext4 做用於新數據,固然,整個文件系統所以也就得到了 Ext4 所支持的更大容量。異步
二、支持更大的文件系統和更大的文件,Ext3 目前所支持的最大 16TB 文件系統和最大 2TB 文件,Ext4 分別支持 1EB(1,048,576TB,EB=http://www.aliyun.com/zixun/aggregation/12560.html">1024PB, 1PB=1024TB)的文件系統,以及 16TB 的文件。分佈式
三、無限數量的子目錄。 Ext3 目前只支持 32,000 個子目錄,而 Ext4 支持無限數量的子目錄。ide
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極具伸縮性,是一種健壯的、優秀的以及功能豐富的文件系統,而且這種文件系統所具備的可伸縮性可以知足最苛刻的存儲需求,它主要包含如下幾點特性:
數據徹底性
傳輸特性
可擴展性
傳輸帶寬
它跟Ext三、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 六、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
引用文獻: