目录
一.inode
(一).背景知识
(二).inode
二.软硬链接
(一).软链接
(二).硬链接
一.inode
(一).背景知识
我们知道,磁盘是按磁道与扇区划分。Linux把一个磁盘进行了分区处理(一般为4个区)。
进行分区处理有很多优点,比如利于管理,当某个分区损坏但不会影响整个磁盘。
每个分区里又划分成多个块组(block groups)和启动块(boot block)。
启动块用于存放该块组信息以及数据恢复。
一个块组里又由不同性质的块组成。
块 | 属性 |
---|---|
super block | 存放整个文件系统的信息,比如分区中每个块的大小、硬盘分区上一共有多少个块组、以及每个块组中有多少个inode |
CDT | 块组描述符,里面有指针会指向该块组的inode table、block bitmap和inode bitmap。 |
block bitmap | 用于在data blocks中找block,按位图的方式寻找 |
inode bitmap | 用于在inode group中找inode,按位图的方式寻找 |
inode group | 存放多个inode结构体 |
block group | 存放多个块(block),块中存放的才是文件数据,一个块是4KB |
(二).inode
inode本质是一个结构体,用于存放一个文件的相关信息。
一个文件往往由多个块组成,但一个文件只有一个inode。
一个inode结构体内部记录了文件的大小、信息、该文件包含的所有块的编号等。
当删除文件时,只需要把对应的bitmap置0,同时把inode映射取消即可。
恢复文件时,找到原inode以及对应bitmap置1。
格式化时,并没有删除inode与block table内容,只是把映射取消,因为inode与block可以覆盖。
值得注意的是,虽然一个文件只能有一个inode,但是一个inode可以对应多个文件名(这些文件本质是同一个文件,因为对应inode相同也就是使用的块相同)。同时inode中会记录映射的文件名数量(引用计数方式),当数量为0时才会真正删除文件信息。
二.软硬链接
(一).软链接
ln -s 路径+文件名 软链接名
软链接可以类比windows快捷方式。
当删除时不会删除文件本体。
本质是因为软链接是一个新的文件,与目标文件不是同一个inode。
(二).硬链接
ln 路径+文件名 硬链接名
硬链接删除时也不会删除相关文件,但是硬链接与目标文件是同一个文件。
因为inode与目标文件相同,只是在inode映射的文件名数量上加一。
如有错误,敬请斧正