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 磁碟與檔案系統管理 – http://linux.vbird.org/linux_basic/0230filesystem.php
One thought on “Linux 檔案儲存系統”