2.文件管理-inode命令

目录

  1. inode
  2. inode与文件
  3. inode与目录
  4. inode与文件系统
  5. inode与cp、rm、mv

inode索引节点

  • inode( index node)表中包含文件系统所有文件列表
  • 一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包括:
  1. 文件类型,权限, UID, GID
  2. 链接数(指向这个文件名路径名称个数)
  3. 该文件的大小和不同的时间戳(atime,ctime,mtime)
  4. 指向磁盘上文件的数据块指针
  5. 有关文件的其他数据

inode中的指针

直接指针
  • 直接指向数据块,最多12个指针(前12个指针都是直接指针),即12*data_block大小,若数据块大小为4K,则,12*4 K = 48K的数据
间接指针
  • 若一个数据块大小为4K,一个指针所占大小4Byte,所以一个间接指针指向一个数据块,就有4K/4Byte = 1024个指针,一个指针又指向4K数据块,即4K*1024 = 4M
双重指针

-类同双重指针,指针数为,4K/4B * 4K/4B =1024*1024个,每个又指向4K数据块,所以一个双重指针最大的数据块为4K*1024*1024 = 4G

三重指针
  • 同理,三级指针,有1024*1024*1024个指针,最大大小为4G*1024 = 4TB

文件和目录与inode的关系

  • 文件的引用是通过inode号来寻找的,但人是通过文件名寻找文件的
  • 一般inode表占用文件系统1%的空间
  • 每个分区都会有自己的inode编号
  • 目录中存放目录项,目录项存放文件名列表,inode表放对应文件名的inode号,inode号映射磁盘数据
graph LR
目录项中的文件名-->inodeTable中的inode
inodeTable中的inode-->文件数据

inode与文件系统空间

  • inode编号占磁盘空间,它是有限的,当inode编号使用完之后,系统会认为磁盘利用率100%
  • df -i可以看到文件系统的inode使用情况
实验

把分区/boot的inode使用完,再磁盘空间并没有用完,但系统依然认为文件系统使用率100%,文件系统空间增加是因为文件虽然没有数据,但是会生成元数据,也会占文件系统空间

[root@centos7 boot]#df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        49G  5.6G   44G  12% /
devtmpfs        896M     0  896M   0% /dev
tmpfs           911M  7.8M  904M   1% /dev/shm
tmpfs           911M   35M  877M   4% /run
tmpfs           911M     0  911M   0% /sys/fs/cgroup
/dev/sda1      1014M  440M  575M  44% /boot
/dev/sda3        30G  106M   30G   1% /data
tmpfs           183M   28K  183M   1% /run/user/0
/dev/sr0        8.8G  8.8G     0 100% /run/media/root/CentOS 7 x86_64
[root@centos7 boot]#df -i
Filesystem       Inodes  IUsed    IFree IUse% Mounted on
/dev/sda2      25600000 688160 24911840    3% /
devtmpfs         229181    425   228756    1% /dev
tmpfs            233163      3   233160    1% /dev/shm
tmpfs            233163   1007   232156    1% /run
tmpfs            233163     16   233147    1% /sys/fs/cgroup
/dev/sda1        524352 524352        0  100% /boot
/dev/sda3      15360000   4190 15355810    1% /data
tmpfs            233163     18   233145    1% /run/user/0
/dev/sr0              0      0        0     - /run/media/root/CentOS 7 x86_64
[root@centos7 boot]#touch f11111
touch: cannot touch ‘f11111’: No space left on device

cp命令和inode

  1. 在目标分区中的inode表中生成一个inode号
  2. 在目的目录中创建一个目录项,将名称与新的inode号映射
  3. 将数据拷贝到新的文件

rm命令和inode

  1. 链接数递减,释放inode号
  2. 把数据块放在空闲列表中,标注其空闲,但是不删除数据,直到有其他数据占用
  3. 在目录项中删除文件名

mv命令和inode

  • 如果mv命令的目标和源在相同的文件系统
  1. 在新的目录项中创建新的文件名,新的文件名映射给文件的inode
  2. 删除文件inode映射,删除旧的目录条目中的旧文件名
  3. 因为在同一个文件系统中,inode号不变,只是改变了目录项和文件名,inode指向不变,没有数据移动
  • 如果目标和源在不同的文件系统,mv相当于先做cp再做rm
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值