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