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系统中存储的图例如下:

posted @ 2020-11-02 18:55  小屁孩云轩  阅读(1647)  评论(0编辑  收藏  举报