文件管理之文件元数据和节点表结构详解

1、inode表结构.

文件

每个文件都有属性信息,比如:文件的大小,时间,类型等称为文件的元数据(meta data),这些元数据是存放在node(index node)表中。node表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息
第一个node表记录对应的保存了一下信息

inode number 节点号

文件类型

权限

UID

GID

链接数(指向这个文件名路径名称个数)

该文件的大小和不同的时间戳

指向磁盘上文件的数据块指针

有关文件的其他数据

如下图是一个inode结构分布与指向
在这里插入图片描述

目录

目录是个特殊文件,文件内容保存了目录中文件的列表及inode number

  • 文件引用一个 inode号
  • 文件是通过文件名来引用一个文件
  • 一个目录是目录下的文件名和文件inode号之间的映射

inode表和目录对应的关系
在这里插入图片描述
cp命令
使用cp命令复制生成的新文件过程

  • 分配一个新的空闲inode号,在inode表中生成新条目
  • 在目录中创建一个目录项,将名称与inode编号关联
  • 拷贝数据生成新的文件

rm命令
使用rm命令删除文件的过程

  • 链接数递减,从而释放的inode号可以被重用
  • 把数据块放在空闲列表中
  • 删除目录项
  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

mv命令
如果mv命令的目标和源文件在相同的文件系统

  • 用新的文件名创建对应新的目录项
  • 删除旧目录条目对应的旧的文件名
  • 不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动

如果目标路径和源文件在一个不同的文件系统,则与cp ,rm相同

范例

[root@centos8 ~]#df -i /boot
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 65536 310 65226 1% /boot
[root@centos8 ~]#mkdir /boot/test
[root@centos8 ~]#touch /boot/test/file{1..65226}
[root@centos8 ~]#touch /boot/test/new.txt
touch: cannot touch 'new.txt': No space left on device
[root@centos8 ~]#df /boot
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 999320 133800 796708 15% /boot
[root@centos8 ~]#df -i /boot
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 65536 65536 0 100% /boot

2、硬链接 ln

硬链接本质上是给文件起一个新的名称,其实是同一个文件
硬链接特性

  • 创建硬链接会增加额外的记录项以引用文件
  • 对应于同一文件系统上一个物理文件
  • 每个目录引用相同的inode号

  • 创建时链接数递增

  • 删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除

  • 不能跨越驱动器或分区

  • 不支持对目录创建硬链接

格式

ln filename [linkname ]

3、符号(或软)链接

软连接指向另一个文件,就像windows中快捷方式,软链接文件和原文件本质上不是同一个文件
软连接特性

  • 一个符号链接的内容是它引用文件的名称
  • 可以对目录创建软链接
  • 可以跨分区的文件实现
  • 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
  • 软链接如果使用相对路径,是相对于原文件的路径,而非相对于当前目录

格式:

ln -s filename [linkname]

范例:

#绝对路径
ln -s /data/dir /data/dirlink
#相对路径
cd /data
ln -s ../data/dir /root/dirlink
rm -rf /data/dirlink #删除软链接本身,不会删除源目录内容
rm -rf /data/dirlink/ #删除源目录的文件,不会删除链接文件

硬链接和软链接区别总结

  1. 本质
    硬链接:本质上是同一个文件
    软链接:本质上不是同一个文件

  2. 跨设备
    硬链接:不支持
    软链接:支持

  3. inode
    硬链接:相同
    软链接:不同

  4. 链接数
    硬链接:创建硬链接,链接数会增加,删除硬链接,链接数减少
    软链接:创建或删除,链接数不会变化

  5. 文件夹
    硬链接:不支持
    软链接:支持

  6. 相对路径
    硬链接:原始文件相对路径是相对于当前工作目录
    软链接:原始文件相对路径是相对于链接文件的相对路径

  7. 删除源文件
    硬链接:只是链接数减一,但链接文件的访问不受影响
    软链接:链接文件将无法访问

  8. 文件类型
    硬链接:和源文件相同
    软链接:链接文件,和源文件无关

发布了12 篇原创文章 · 获赞 0 · 访问量 411

猜你喜欢

转载自blog.csdn.net/swyer_66/article/details/104128388