目录
创建文件的过程:
删除文件的过程:
创建目录的过程:
查看inode编号:
硬链接
软链接
Linux
我们知道文件所有数据 = 文件内容 + 文件属性信息;
未打开的文件是被存放到磁盘/固态硬盘中的;
在这里是以磁盘为例进行说明:
磁盘是以扇区为单位进行读写的;
确定磁盘具体写入位置要知道:盘面(磁头)、磁道、扇区;
我们试着可以将磁盘想象成线性的结构:
要确定磁盘位置:盘面、磁道、扇区;
线性结构:类似数组下标;
因此我们在这要进行地址转化,类似于虚拟地址和物理地址的转换;
磁盘太大,为了方便管理;
1. 分区:将磁盘划分为几个小的区域;
2. 格式化:如果进行格式化,相当于给分区中写入了文件系统(原来的数据不存在);
为了更加方便管理,我们将分区更细小化;
创建文件的过程:
一个文件与一个inode编号相对应,首先在inode位图中找到第一个为0的,将其修改为1,在block位图中找到第一个为0的,将其修改为1,在inode块中写入文件所有信息,并且记录对应block块的位置,此后便可以进行数据写入操作。
删除文件的过程:
删除文件很简单,将文件对应inode的位图位置修改为0即可。
我们可以使用debugfs进行文件的恢复功能。
如果想要恢复最好不要在进行操作,避免将该文件inode位图分配给其他文件。
创建目录的过程:
目录也是文件,创建目录也如上述创建文件过程一般,不过目录的数据块中存放的是:
文件名与inode编号的映射关系!
查看inode编号:
ls命令中加上-i选项则可以查看文件inode编号;上述红色框框起来的便是文件inode编号;
Linux中:
文件名在系统层面是没有意义的 ,是给用户使用的。
Linux中真正标识一个文件,是通过文件的inode编号识别的!
一个文件一个inode!
硬链接:
OS找磁盘上的文件并不是通过文件名,而是inode编号。
其实在linux中可以让多个文件名对应于同一个inode。
这便是使用硬链接的方法。
ln 源文件名 目标文件名
软链接:
ln -s 要链接的文件名 链接之后的文件名
软链接的使用场景:
如果在当前目录下访问一个文件特别麻烦,我们便可以建立软链接;
相当于Windows中的快捷方式。
经过查看,我们发现软链接是有自己独立的inode的!因此软链接是一个文件,数据块里面存储
(指向文件的所在路径 + 文件名)。
补充:
我们新创建了一个文件,发现该文件的硬链接数为1;
新创建了一个目录,发现该目录的硬链接数为2 ;
这是因为该目录中的 . 文件也表示该目录;
它们的 inode 编号是一样的。
在mydir的当前目录下创建了tmp目录,mydir的链接数变为了 3;
光数该文件的别名便可知道;
1. mydir
2. mydir目录下的 .
3. mydir目录下的tmp目录下的 ..
总共三个!!!
坚持打卡!