Linux系統中inode和block詳解
阿新 • • 發佈:2020-11-02
Linux作業系統中,硬碟的最小儲存單位為扇區,每個扇區大小為512位元組。而作業系統在讀取硬碟資料的時候,一次性最小讀取一個塊(block),預設一個block大小為4k,即8個扇區。
Linux系統中,檔案分兩部分儲存。其中檔案資料資訊儲存在block中,而檔案的屬性等資訊儲存在inode中(但不包含檔名,檔案的名稱資訊儲存在上一級目錄block中),inode號即索引節點號。檔名僅是為了方便人們的記憶而使用,系統或程式通過 inode 號尋找正確的檔案資料塊。Linux系統中,每個檔案至少對應一個inode和一個block,如果此檔案超過4k,則會對應1個inode和多個block。inode除了儲存檔案屬性資訊外,還儲存block的指標資訊。
1. inode(索引節點)
相當於書的目錄,儲存檔案的屬性資訊。從檔案系統被建立之後就生成。
特點說明:
inide存放檔案的屬性資訊
inode存放塊的指標資訊
建立一個檔案,至少佔用一個inode和一個block
在同一個分割槽中,兩個檔案的inode號相同,則兩個檔案互為硬連結檔案[root@oracle12c tmp]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/rhel_oracle12c-root 21493760190179 21303581 1% / devtmpfs 1015135 423 1014712 1% /dev tmpfs 1019392 1 1019391 1% /dev/shm tmpfs 1019392 1460 1017932 1% /run tmpfs 1019392 16 1019376 1% /sys/fs/cgroup /dev/sda1 524288336 523952 1% /boot /dev/mapper/vg01-lv01 52426752 52273 52374479 1% /oracle tmpfs 1019392 9 1019383 1% /run/user/42 tmpfs 1019392 1 1019391 1% /run/user/0
2. block(資料塊)
相當於書本中目錄所指向的內容,用於儲存檔案的具體內容。在檔案系統建立後便生成。
特點說明:
存放資料資訊
預設大小為4k,可以進行調整
比較大的檔案,佔用多個block
比較小的檔案,如果一個block存不滿。剩餘空間無法儲存其他資料,只能浪費。
建立一個檔案至少佔用一個inode和一個block(非空檔案)
磁碟讀取資料時按照block為單位讀取,每讀一次消耗一次磁碟I/0
[root@oracle12c tmp]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/rhel_oracle12c-root 42966532 4919500 38047032 12% / devtmpfs 4060540 0 4060540 0% /dev tmpfs 4077568 0 4077568 0% /dev/shm tmpfs 4077568 28992 4048576 1% /run tmpfs 4077568 0 4077568 0% /sys/fs/cgroup /dev/sda1 1038336 167884 870452 17% /boot /dev/mapper/vg01-lv01 104802308 21569676 83232632 21% /oracle tmpfs 815516 12 815504 1% /run/user/42 tmpfs 815516 0 815516 0% /run/user/0
注意:
檔案的屬性資訊儲存在inode中,檔案的名稱資訊儲存在上一級目錄的block中。
[root@oracle12c tmp]# tree 001 001 ├── 01.txt ├── 02.txt ├── 03.txt ├── 04.txt ├── 05.txt ├── data └── test 2 directories, 5 files [root@oracle12c tmp]# vim 001 " ============================================================================ " Netrw Directory Listing (netrw v149) " /tmp/001 " Sorted by name " Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$ " Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec " ============================================================================ ../ ./ data/ test/ 01.txt 02.txt 03.txt 04.txt 05.txt .swp ~