对磁盘inode节点的理解

1. inode是什么?

理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

2. inode的内容

inode包含文件的元信息,具体来说有以下内容:

  • 文件的字节数
  • 文件拥有者的User ID
  • 文件的Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
  • 链接数,即有多少文件名指向这个inode
  • 文件数据block的位置

3. inode节点与block的关系

在这里插入图片描述

4. 加深对inode理解的操作
制作文件系统的时候可以发现:
[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)  #block块的大小
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks   #inode节点数和block块数量
13107 blocks (5.00%) reserved for the super user #保留%5数量的block块给超级用户使用
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
 
正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
 
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
 
如果觉得保留%5太多了,可以自行修改百分比,-m
[root@localhost ~]# [root@localhost ~]# mkfs.ext4 -m 2 /dev/sdb1
还可以执行block块的大小:-b
[root@localhost ~]# mkfs.ext4 -m 2 -b 2048 /dev/sdb1
 
下边来做关于inode节点的操作:
inode节点是每隔一段产生一个,如果把两个inode节点直接的距离调大,则inode节点的数量
[root@localhost ~]# mkfs.ext4 -m 2 -i 65535000 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
128 inodes, 262144 blocks
5242 blocks (2.00%) reserved for the super user
第一个数据块=0
可以看到现在的inode节点变成了128个,之前是65536个,因为数据是存在inode节点上的,inode节点变少,意味着可以存储的文件个数表少了,下面举例
 
[root@localhost ~]# rm -rf /data
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/sdb1 /data
[root@localhost ~]# cd /data
[root@localhost data]# touch {1..150}.txt
touch: 无法创建"118.txt": 设备上没有空间
 
第118个就提示无法创建,说是没空间了,但是用df命令可以看到其实sdb1有很大空间可以用
 
[root@localhost data]# df -hT
Filesystem                   Type     Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4      18G  3.8G   13G  23% /
tmpfs                        tmpfs    491M  224K  491M   1% /dev/shm
/dev/sda1                    ext4     485M   35M  426M   8% /boot
.host:/                      vmhgfs   123G   98G   25G  80% /mnt/hgfs
/dev/sr0                     iso9660  3.6G  3.6G     0 100% /media/RHEL_6.5 x86_64 Disc 1
/dev/sr0                     iso9660  3.6G  3.6G     0 100% /mount
/dev/sdb1                    ext4     1.0G   34M  971M   4% /data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值