1. 程式人生 > 實用技巧 >Linux系統中inode和block詳解

Linux系統中inode和block詳解

  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 21493760
190179 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 524288
336 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
~