linux中的inode
理解inode
inode是文件存储,文件存储在营盘山,最小的存储单位叫扇区。每个扇区的存储512字节。
操作系统读取硬盘的时候,不会一个一个扇区的读取,这样效率太低。而是一次性读取多个扇区,一次性读取一个块。也就是8个连续的扇区组成一个block。
文件存储在块中,但是我们还需要找一个存储元信息的区域叫做inode。中文译名“索引节点”。
每个文件都有对应的索引节点。
inode的内容
在inode的元信息中,保存了以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件Group ID
* 文件的读写执行权限
* 文件的时间戳,ctime上次变动的时间,mtime文件内容上次变动的时间,atime,文件上次访问的时间。
* 链接数,就是有多少文件名指向这个inode
* 我呢间数据block的位置。
我们可以使用以下命令尽心查看inode的信息
stat demo.txt
inode的大小
在inode也是会消耗磁盘的空间,所以格式化的时候,操作系统会将磁盘分为两个部分,一个是数据存放的位置就是block;另一个就是inode区,用来存放inode的信息。
每个inode一般是128字节或者是256字节。inode节点的总数是在格式化的时候给定你的。一般是每1kb或每2kb就设置一个inode。那么inode table就会占用磁盘的12.8%。
我们可以使用以下命令查看:
df -i
查看每个inode节点的大小用命令
dumpe2fs -h /dev/hda |grep "Inode size"
每个文件都需要有inode,因此有可能出现inode已经用完,但是硬盘没有存满。这个时候就没有办法创建新的文件。
inode号码
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
需要注意的是,在linux系统内部,使用的就是inode号码来识别文件,文件名只是便于识别的别称。
我们使用以下命令查看文件inode号
ls -i demo.txt
目录文件
linux系统中,目录也是一种文件,打开目录其实就是打开目录文件。
目录文件结构非常简单,只有两部分组成一个是inode号,一个是文件的名称。文件的元信息都存储在inode中。
硬链接
一般情况下,文件名合inode号码是一一对应的,每个inode号码都是对应着一个文件名称。但是在linux中允许多个文件指向同一个inode号码。这就意味着我们可以通过不同的文件名访问相同的内容。修改一个文件,影响所有的文件,但是删除文件只会影响自己本身的访问,不影响其他文件名的访问。这种情况叫做“硬链接(hard link)”。
创建硬链接命令:
ln 源文件 目标文件
任何一个目录的硬链接总数等于,2加上他子目录数(包含隐藏目录)。
软连接
文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的”软链接”(soft link)或者”符号链接(symbolic link)。
创建命令为:
ln -s 源文件 目标文件或目录
inode的特殊作用
由于inode号码和文件名称的分离。导致一些linux系统特有的现象。
1. 有时文件包含特殊字符无法正常删除,这个时候删除inode节点即可。
2. 移动或者重命名文件,不会影响inode号码。
3. 打开一个文件以后,系统使用inode号码识别文件,不用考虑文件名。
希望与广大网友互动??
点此进行留言吧!