常見的文件系統
Linux文件系統: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap
swap: 交換分區
光盤:iso9660
Windows:fat32, ntfs
Unix: FFS, UFS, JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2
分布式文件系統:ceph, moosefs, mogilefs, GlusterFS, Lustre
實驗環境CentOS7.2
Linux根據其是否支持"journal"功能:
日志型文件系統: ext3, ext4, xfs, ...
非日志型文件系統: ext2, vfat
Linux的文件系統的組成部分:
內核中的模塊:ext4, xfs, vfat
用戶空間的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat
在正式介紹文件系統的前先說一下創建文件系統之前的格式化問題。
格式化
低級格式化:硬件制造商、分區之前劃分磁道,形成簇 磁盤出廠前由廠家完成
高級格式化:分區之後對分區進行,創建文件系統
每種操作系統所設置的文件屬性/權限不相同,為了存放這些所需的數據
我們常說的重裝系統及格式化都是屬於高級格式化層面的。本文所說的文件系統均為高級格式化後的產物。
Linux文件系統管理工具
blkid:塊設備屬性信息查看
命令使用格式:blkid [OPTION]... [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
命令演示:
1 2 3 4[root@localhost ~]
# blkid /dev/sda1
/dev/sda1
: UUID=
"6efb8a23-bae1-427c-ab10-3caca95250b1"
TYPE=
"xfs"
[root@localhost ~]
# blkid -U 6efb8a23-bae1-427c-ab10-3caca95250b1
/dev/sda1
…………………………………………………………………………………………………………
mkfs:文件系統創建工具:
mkfs - build a Linux filesystem
命令使用格式:
1、 mkfs [options] [-t type] device [size]
[ -t type] :指定要創建的文件系統類型ext4|xfs|btrfs|vfat|...|]
[options]:-L 'LABEL': 設定卷標 在創建文件系統同時指定卷標。
-f 若文件系統已存在,強制覆蓋
命令演示:
[root@localhost ~]# mkfs -L 'new1' -t ext4 /dev/sdb5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21mke2fs 1.42.9 (28-Dec-2013)
文件系統標簽=new1
OS
type
: Linux
塊大小=1024 (log=0)
分塊大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved
for
the super user
第一個數據塊=1
Maximum filesystem blocks=33685504
13 block
groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在寫入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@localhost ~]
# blkid /dev/sdb5
/dev/sdb5
: LABEL=
"new1"
UUID=
"10880486-7ad9-43de-9607-f9bc1fda1edf"
TYPE=
"ext4"
…………………………………………………………………………………………………………
2、 mkfs.FS_TYPE /dev/DEVICE
FS_TPYE:ext4、xfs、btrfs、vfat...
命令演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15[root@localhost ~]
# mkfs.xfs -L 'new2' /dev/sdb6
mkfs.xfs:
/dev/sdb6
appears to contain an existing filesystem (ext3).
mkfs.xfs: Use the -f option to force overwrite.
[root@localhost ~]
# mkfs.xfs -f -L 'new2' /dev/sdb6
meta-data=
/dev/sdb6
isize=256 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]
# blkid /dev/sdb6
/dev/sdb6
: LABEL=
"new2"
UUID=
"ed636bf6-1cee-43d1-96e2-8baa8dc29087"
TYPE=
"xfs"
若/dev/sdb# 指定的磁盤塊已經存在文件系統,執行命令mkfs會失敗,若加-f,則強制將原文件系統覆蓋。慎用-f。
…………………………………………………………………………………………………………
mke2fs:ext系列文件系統專用管理工具
mke2fs - create an ext2/ext3/ext4 filesystem
-t {ext2|ext3|ext4}指明要創建的文件系統類型
-b {1024|2048|4096}指明文件系統的塊大小
-L 'LABEL'指明卷標
-j: 創建有日志功能的文件系統ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 為數據空間中每多少個字節創建一個inode;此大小不應該小於block的大小;
-N #:為數據空間創建個多少個inode;
-m #: 為管理人員預留的空間占據的百分比;
-O [^]FEATHER:開啟或關閉某種特性;
命令演示:mk2fs創建ext2格式的文件系統
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23[root@localhost ~]
# mke2fs -t ext2 /dev/sd
sda sda1 sda2 sdb sdb1 sdb2 sdb5 sdb6 sdb7
[root@localhost ~]
# mke2fs -t ext2 /dev/sdb7
mke2fs 1.42.9 (28-Dec-2013)
文件系統標簽=
OS
type
: Linux
塊大小=1024 (log=0)
分塊大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved
for
the super user
第一個數據塊=1
Maximum filesystem blocks=67371008
13 block
groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在寫入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
[root@localhost ~]
# blkid /dev/sdb7
/dev/sdb7
: UUID=
"4b9767fc-a8bf-4dda-9ce1-50eb5418da04"
TYPE=
"ext2"
指定inode數及為管理人員預留空間的百分比
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19[root@localhost ~]
# mke2fs -N 1024 -m 3 /dev/sdb7
mke2fs 1.42.9 (28-Dec-2013)
文件系統標簽=
OS
type
: Linux
塊大小=1024 (log=0)
分塊大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
1040 inodes, 102400 blocks
3072 blocks (3.00%) reserved
for
the super user
第一個數據塊=1
Maximum filesystem blocks=67371008
13 block
groups
8192 blocks per group, 8192 fragments per group
80 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在寫入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
…………………………………………………………………………………………………………
e2label:管理ext系列文件系統的LABEL
查看:e2label device
設定:e2label device LABEL
命令演示:設定指定塊設備的卷標
1 2 3[root@localhost ~]
# e2label /dev/sdb7 new3
[root@localhost ~]
# e2label /dev/sdb7
new3
…………………………………………………………………………………………………………
tune2fs:重新設定ext系列文件系統可調整參數的值(不進行格式化)
-l:查看指定文件系統超級塊信息;super block
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用
-o: 調整文件系統的默認掛載選項
-U UUID: 修改UUID號;
命令演示:修改卷標
1 2 3 4[root@localhost ~]
# tune2fs -L 'another label' /dev/sdb7
tune2fs 1.42.9 (28-Dec-2013)
[root@localhost ~]
# blkid /dev/sdb7
/dev/sdb7
: LABEL=
"another label"
UUID=
"a57b2116-d72b-48d2-a648-bb6d2d5487ac"
TYPE=
"ext2"
升級ext2到ext3
1 2 3 4 5[root@localhost ~]
# tune2fs -j /dev/sdb7
tune2fs 1.42.9 (28-Dec-2013)
Creating journal inode: 完成
[root@localhost ~]
# blkid /dev/sdb7
/dev/sdb7
: LABEL=
"another label"
UUID=
"a57b2116-d72b-48d2-a648-bb6d2d5487ac"
SEC_TYPE=
"ext2"
TYPE=
"ext3"
…………………………………………………………………………………………………………
dumpe2fs:
-h:查看超級塊信息等同於tune2fs -l
命令演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46[root@localhost ~]
# dumpe2fs -h /dev/sdb7
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: another label
Last mounted on: <not available>
Filesystem UUID: a57b2116-d72b-48d2-a648-bb6d2d5487ac
Filesystem magic number: 0xEF53
Filesystem revision
#: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super
Filesystem flags: signed_directory_hash
Default
mount
options: user_xattr
Filesystem state: clean
Errors behavior: Continue
Filesystem OS
type
: Linux
Inode count: 1040
Block count: 102400
Reserved block count: 3072
Free blocks: 96568
Free inodes: 1029
First block: 1
Block size: 1024
Fragment size: 1024
Reserved GDT blocks: 256
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 80
Inode blocks per group: 10
Filesystem created: Sun Aug 21 20:11:13 2016
Last
mount
time
: n
/a
Last write
time
: Sun Aug 21 20:52:01 2016
Mount count: 0
Maximum
mount
count: -1
Last checked: Sun Aug 21 20:11:13 2016
Check interval: 0 (<none>)
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Default directory
hash
: half_md4
Directory Hash Seed: 3e1f3581-59c7-41b3-bd4f-d262e3ce026e
Journal backup: inode blocks
Journal features: (none)
日志大小: 4113k
Journal length: 4096
Journal sequence: 0x00000001
Journal start: 0
…………………………………………………………………………………………………………
fsck:check and repair a Linux file system檢查修復Linux文件系統
因進程意外中止或系統崩潰等 原因導致定稿操作非正常終止時,可能會造成文件損壞;此時,應該檢測並修復文件系統; 建議,離線進行;
-t fstype:指明文件系統類型;比如:fsck -t ext4 = fsck.ext4
-a:無須交互而自動修復所有錯誤;
-r:交互式修復;
Note: FS_TYPE一定要與分區上已經文件類型相同;
…………………………………………………………………………………………………………
e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答為yes;
-f:強制修復;
總結
文件系統管理工具
通用:mkfs、blkid、fsck
ext系列文件系統專用工具:mke2fs、dumpe2fs、tune2fs、e2label、e2fsck
簡要比較兩種類型的命令
1 2 3 4 5 6[root@localhost ~]
# dumpe2fs /dev/sda1
dumpe2fs 1.42.9 (28-Dec-2013)
dumpe2fs: Bad magic number
in
super-block 當嘗試打開
/dev/sda1
時
找不到有效的文件系統超級塊.
[root@localhost ~]
# blkid /dev/sda1
/dev/sda1
: UUID=
"6efb8a23-bae1-427c-ab10-3caca95250b1"
TYPE=
"xfs"