首頁 > 軟體

Linux檔案系統簡介及其系統管理工具

2020-06-16 17:34:42

常見的檔案系統

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
21
mke2fs 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"

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-08/134665.htm


IT145.com E-mail:sddin#qq.com