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
~    

 文件在Linux系統中存儲的圖例如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM