天天看點

linux檔案系統特性

1. 檔案系統特性(索引式檔案系統)

檔案系統格式化後block group的組成部分:

super block:記錄檔案系統整體資訊,inode和data block的總量,使用量,剩餘量,以及檔案系統格式與相關資訊,一般大小為1024bytes.

inode table:記錄檔案的權限與屬性,一個檔案占用一個inode,同時記錄此檔案的資料所在的block号碼,每個inode預設固定大小為128bytes。

data block:記錄檔案的實際内容,若檔案太大,會占用多個block,ext2檔案系統所支援的block大小有1k,2k,4k三種

filesystem description:描述了每個block group的開始于結束的block号碼

block bitmap:記錄了使用的和未使用的block号

inode bitmap:記錄了使用的和未使用的inode号

【N】檔案系統格式化的過程會中就已經把inode與block規劃好了,以便作業系統識别使用,除非重新格式化,或者resize2f更新檔案系統

[root@Darren ~]# dumpe2fs /dev/sda3

dumpe2fs 1.41.12 (17-May-2010)

Filesystem volume name:   <none>

Last mounted on:          /

Filesystem UUID:          7b6aa9b8-aa0d-4497-ac09-d423c035d50a

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

Filesystem flags:         signed_directory_hash

Default mount options:    user_xattr acl

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              479552       --inode總數

Block count:              1914624     --block總數

Reserved block count:     95731    

Free blocks:              968312      --剩餘block

Free inodes:              365275      --剩餘inode

First block:              0

Block size:               4096    --每個block大小

Fragment size:            4096  

Reserved GDT blocks:      467

Blocks per group:         32768

Fragments per group:      32768

Inodes per group:         8128

Inode blocks per group:   508

Flex block group size:    16

Filesystem created:       Wed Aug  3 23:22:08 2016

Last mount time:          Thu Nov 10 15:49:44 2016

Last write time:          Wed Aug  3 23:31:03 2016

Mount count:              32

Maximum mount count:      -1

Last checked:             Wed Aug  3 23:22:08 2016

Check interval:           0 (<none>)

Lifetime writes:          9 GB

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

First inode:              11

Inode size:               256    --每個inode的大小

Required extra isize:     28

Desired extra isize:      28

Journal inode:            8

Default directory hash:   half_md4

Directory Hash Seed:      0d3fdc26-38ed-4b93-8a85-ec305215a827

Journal backup:           inode blocks

Journal features:         journal_incompat_revoke

Journal size:             128M

Journal length:           32768

Journal sequence:         0x00008bac

Journal start:            1

Group 0: (Blocks 0-32767) [ITABLE_ZEROED]

  Checksum 0x5873, unused inodes 0

  Primary superblock at 0, Group descriptors at 1-1

  Reserved GDT blocks at 2-468

  Block bitmap at 469 (+469), Inode bitmap at 485 (+485)

  Inode table at 501-1008 (+501)

  21078 free blocks, 0 free inodes, 1315 directories

  Free blocks: 11080-11099, 11144-11199, 11227, 11764-11829, 11831-11883, 11886-32767

  Free inodes:

2.與目錄樹的關系

目錄:

linux下ext2檔案系統建立一個目錄會配置設定一個inode和至少一個block,inode記錄該目錄相關的屬性和權限,還有配置設定到那block号碼,而block則是記錄該目錄下檔案名與該檔案名占用的inode号

檔案:

linux下ext2檔案系統建立一個檔案會配置設定一個inode和相對該檔案大小的block數量的檔案。

目錄樹讀取:

系統通過挂載的inode号(檔案系統最頂層的inode号由2開始),找到inode的内容,根據inode内容讀取目錄的block内的檔案名和資料,再一層層找到檔案資料。

[root@Darren ~]# ls -lid / /etc /etc/passwd

     2 dr-xr-xr-x. 22 root root  4096 11月 10 15:49 /

130052 drwxr-xr-x  98 root root 12288 11月 10 17:39 /etc

137728 -rw-r--r--   1 root root  1532 11月 10 16:27 /etc/passwd

3.日志檔案系統

日志檔案系統就是一種具有故障恢複能力的檔案系統,所謂日志就是一種特殊的檔案,它會在一個循環的緩沖區内記錄檔案系統的修改,然後将其定期送出到檔案系統。一旦系統發生崩潰,日志檔案就會起到一個檢查點的作用,用于恢複未儲存的資訊,防止損壞檔案系統中繼資料。

ext2不支援日志檔案系統,從ext3開始支援。

把ext3更新到ext4:

(1)解除安裝umount

(2)[root@Darren ~]# tune2fs -O extents,uninit_bg,dir_index /dev/sdb1   

(3)[root@Darren ~]# e2fsck /dev/sdb1

4.其他linux支援的檔案系統

linux支援哪些檔案系統:

[root@Darren ~]# ls -l /lib/modules/$(uname -r)/kernel/fs

系統已經加載到核心中的檔案系統:

[root@Darren ~]# cat /proc/filesystems

5.連接配接檔案:ln

硬連接配接:通過檔案系統的inode連接配接産生新檔案名,而不是産生新檔案,連接配接檔案和源檔案的inode一樣,不占用inode和block。

限制:

不能跨分區建立硬連接配接;

不能連接配接目錄;

軟連接配接:相當于windows的快捷方式,是一個獨立的新的檔案,指向源檔案,連接配接檔案和源檔案的inode不同,占用inode和block。

例:

[root@Darren tmp]# touch file1.txt

[root@Darren tmp]# ln file1.txt file2.txt     --建立硬連結

[root@Darren tmp]# ln -s file1.txt file3.txt   --建立軟連結

[root@Darren tmp]# ls -il

3508 -rw-r--r-- 2 root root    0 Nov  8 01:08 file1.txt

3508 -rw-r--r-- 2 root root    0 Nov  8 01:08 file2.txt

3514 lrwxrwxrwx 1 root root    9 Nov  8 01:13 file3.txt -> file1.txt

硬連接配接檔案file2.txt與原檔案file1.txt 的inode節點相同,然而符号連接配接檔案的inode節點不同。

[root@Darren tmp]# echo 'This is test' >> file1.txt

[root@Darren tmp]# cat file1.txt

This is test

[root@Darren tmp]# cat file2.txt

[root@Darren tmp]# cat file3.txt 

[root@Darren tmp]# rm file1.txt    --删除file1.txt

[root@Darren tmp]# ls -li

3508 -rw-r--r-- 1 root root   13 Nov  8 01:20 file2.txt

[root@Darren tmp]# cat file2.txt  --硬連結無影響

[root@Darren tmp]# cat file3.txt  --軟連結失效

cat: file3.txt: No such file or directory

總結:

(1)删除符号連接配接f3,對f1,f2無影響;

(2)删除硬連接配接f2,對f1,f3也無影響;

(3)删除原檔案f1,對硬連接配接f2沒有影響,導緻符号連接配接f3失效;

(4)同時删除原檔案f1,硬連接配接f2,整個檔案會真正的被删除。

[root@Darren tmp]# mkdir -p dir1 

[root@Darren tmp]# ln dir1/ dir2/

ln: target `dir2/' is not a directory: No such file or directory

[root@Darren tmp]# ln dir1/ dir2       --目錄是不能做硬連結的

ln: `dir1/': hard link not allowed for directory  

[root@Darren tmp]# ln -s dir1/ /tmp/dir2   --建立目錄的軟連結

total 20

3514 drwxr-xr-x 2 root root 4096 Nov  8 01:41 dir1

3617 lrwxrwxrwx 1 root root    5 Nov  8 01:55 dir2 -> dir1/

繼續閱讀