一、inode
inode是类UNIX系统上文件系统中的一种数据结构。数据在磁盘上存储是按扇区存放的,几个扇区组成一个块(block),操作系统为高效读取磁盘上的数据,按block来读取。而数据存放的block的地址就包含在inode里。
二、inode的存储信息
每个inode保存一个文件系统对象(目录,文件,管道,软连接,socket,设备文件等)的元数据信息,如下
-
以字节为单位表示的文件大小。
-
设备ID,标识容纳该文件的设备。
-
文件所有者的User ID。
-
文件的Group ID
-
文件的模式(mode),确定了文件的类型,以及它的所有者、它的group、其它用户访问此文件的权限。
-
额外的系统与用户标志(flag),用来保护该文件。
-
3个时间戳,记录了inode自身被修改(ctime, inode change time)、文件内容被修改(mtime, modification time)、最后一次访问(atime, access time)的时间。
-
1个链接数,表示有多少个硬链接指向此inode。
-
到文件系统存储位置的指针。通常是1K字节或者2K字节的存储容量为基本单位。
三、inode的作用
操作系统按inode的编号对文件进行识别,在同一文件系统内的inode的编号是唯一的。当我们打开一个文件的时候,系统按照directory里inode编号与文件名对照关系,把文件名转换为inode编号,再根据inode编号对应的inode信息里指向的block地址来打开文件。这一特性使得在Linux上可以更新一个正在打开的文件,因为更新的文件由一个新的inode来指向,与系统正在使用的原inode不发生冲突,只是directory里的对照关系发生更改,当再次打开次文件时,系统即打开更新后的文件。
-
inode不足时,再往文件系统上存放数据也会报存储空间不足的错误
这是有可能某目录下已产生大量小文件,占用了大量inode
-
inode中存储的block的地址数量和block块的大小限制了一个文件系统最大单个文件大小
四、查看inode方法
[root@centos7 ~]# ll -i /root #查看文件inode编号,第一列为inode编号 total 4 206271991 -rw-------. 1 root root 1598 Jul 21 11:40 anaconda-ks.cfg 103963 drwxr-xr-x. 2 root root 6 Jul 21 11:42 Desktop 103965 drwxr-xr-x. 2 root root 6 Jul 21 11:42 Documents 70662524 drwxr-xr-x. 2 root root 6 Jul 21 11:42 Downloads 70662525 drwxr-xr-x. 2 root root 6 Jul 21 11:42 Music 138238502 drwxr-xr-x. 2 root root 6 Jul 21 11:42 Pictures 206272017 drwxr-xr-x. 2 root root 6 Jul 21 11:42 Public 138238501 drwxr-xr-x. 2 root root 6 Jul 21 11:42 Templates 206272018 drwxr-xr-x. 2 root root 6 Jul 21 11:42 Videos [root@centos7 ~]# df -i #查看文件系统inode占用情况 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 41943040 138671 41804369 1% / devtmpfs 229955 389 229566 1% /dev tmpfs 233586 10 233576 1% /dev/shm tmpfs 233586 590 232996 1% /run tmpfs 233586 13 233573 1% /sys/fs/cgroup /dev/sda5 20971520 15 20971505 1% /testdir /dev/sda1 204800 330 204470 1% /boot /dev/sr0 0 0 0 - /run/media/root/CentOS 7 x86_64 tmpfs 233586 1 233585 1% /run/user/1001 tmpfs 233586 17 233569 1% /run/user/42 tmpfs 233586 1 233585 1% /run/user/0
五、硬连接与软链接
硬连接的创建实质为同一物理文件起多个名字,都指向同一inode,所以不可以跨文件系统建立,也不能对目录建立硬连接。
软链接的创建会产生新文件,占用一个inode,指向的是文件名,软连接建立可跨文件系统,可对目录建立。
-
创建方法
ln TARGET LINK_NAME #创建硬连接
ln -s TARGET LINK_NAME #创建软连接
注:创建软连接时,TARGET如是相对路径,则为LINK_NAME上级目录的相对路径
ln -s Videos/movie /root/movie
则创建了软链接文件/root/movie 指向目录/root/Videos/movie
原创文章,作者:cutemsyu,如若转载,请注明出处:http://www.178linux.com/29134