2,704 瀏覽數

Linux 檔案儲存系統

Linux 下的檔案儲存是採用什麼方式,他採用了 superblock / inode /data block 的方式來儲存資料.

data block

資料在儲存時不太可能每一次都有連續的空間可供資料的儲存,所以資料會切割成固定大小分開存放,這大小的空間就是 data block 但在談 data block 大小前,先來說說硬碟的儲存最小單位 block size ,通常硬碟在出廠前都先經過低階格式化,而預設的大小就是 512bytes , 但512bytes 真的太小所以在 Linux 下我們用的是另外一種單位就是 data block ,而他的大小必須為 512bytes 的倍數. 512,1024,2048,4096 bytes 通常在 Linux 下為 4096bytes.Data, Data block 與 block 的相關如下所是.

Data –> Data block(s) –> block(s)

inode

剛剛說到 data block 的資料是一塊塊分散的儲存(索引式檔案系統),所以此時必須要一塊資料要紀錄哪些 data block 是屬於哪一個 data 的, 而記錄了這些資料的就叫做 inode ,每一個檔案都會對應到一個 inode 他的大小為 128bytes 除了紀錄 data block 的位置外還儲放了檔案的權限與相關屬性.
要看檔案的 Inode 有兩種方式

  • ls Command:
    root@ubuntu:~# ls -li /etc/passwd
    196463 -rw-r--r-- 1 root root 1861 Nov 24 23:16 /etc/passwd
    
  • stat Command:
    root@ubuntu:~# stat /etc/passwd
      File: ‘/etc/passwd’
      Size: 1861      	Blocks: 8          IO Block: 4096   regular file
    Device: 801h/2049d	Inode: 196463      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2015-05-26 01:20:28.059777013 -0700
    Modify: 2014-11-24 23:16:47.441786027 -0800
    Change: 2014-11-24 23:16:47.441786027 -0800
     Birth: -
    

196463 就是該檔案的 Inode

superblock

那剛剛 inode/block 的使用情況(使用量,剩餘…)是由誰來紀錄,就是透過 superblock 基本上他記錄該檔案系統所有的資訊. 所以我們可以很清楚了解 superblock / inode / data block 的關係.

superblock –>inode –> data block

要看 superblock 可以透過 #dumpe2fs 來看

root@ubuntu:~# dumpe2fs /dev/sda1 | more
dumpe2fs 1.42.9 (4-Feb-2014)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          f388433e-14b1-41bf-b93b-72a89226052e
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype n
eeds_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nli
nk 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:              458752
Block count:              1834752
Reserved block count:     91737
Free blocks:              254563
Free inodes:              120130
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      447
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Mon Nov 24 23:09:19 2014
Last mount time:          Tue May 26 01:20:28 2015
Last write time:          Tue May 26 01:20:28 2015

上面只有擷取部份資訊.

更多有關於 Linux 的檔案系統建議可以參 鳥哥的 Linux 私房菜 – 第八章、Linux 磁碟與檔案系統管理

網友的想法

  1. 自動參照通知: 硬式與軟式連結 | Benjr.tw

發表迴響