标签:linux
文件系统将文件的权限与属性保存在inode中,一个文件占用一个inode,实际的数据保存在data block块中。inode会记录文件所占有用的block的号码。每个block只能放置一个文件的数据,而一个文件可以占用多个block。每个文件系统还会有一个超级块(super block)用于记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量、以及文件系统的格式与相关信息。可以使用命令dumpe2fs来查看super block的信息
inode中并不保存文件的文件名,文件名放置在目录的block中。根目录的inode号为2。
1.链接文件
在Linux下有两种链接文件:硬链接和符号链接(软链接)。
硬链接:不同文件指向同一个inode,所有硬链接到同一个inode的文件,它们的内容是共享的,即修改其中一个文件的内容,其它硬链接的文件内容也会更改。硬链接有以下特性:
1)只能对文件创建,不能应用于目录;
如果对目录创建硬链接,那么对于目录下的所有文件都要创建对应的硬链接,在文件较多的情况下则会使得情况变得相当复杂,所以不充许对目录进行硬链接。
2)不能跨文件系统;
inode号码是在文件系统中的super block中维护的,不同的文件系统不保证提供相同的inode号码,所以不同文件系统之间无法创硬链接。
3)创建硬链接会增加被硬链接的次数;
在文件属性中会看到链接次数被增加。
4)增加inode引用计数;
同一个inode被链接了新的文件,引用计数会增加。符号链接:类似于window中的快捷方式。符号链接文件会占用新的inode,所以被符号链接的文件移动或删除的话,符号链接文件也即失效。理解了硬链接的特性后,就不难理解符号链接的特性了:
1、可以应用于目录;
2、可以跨文件系统;
3、不会增加被链接文件的链接次数;
4、其大小为指定的路径所包含的字符个数;
5、不会增加inode引用计数。
创建链接文件
格式:ln [-sf] 源文件 目标文件
-s:创建符号链接,如果不加任何参数则是创建硬链接;
-f:如果目标文件存在,就将目标文件删除后再创建;
创建硬链接
创建前我们先来看下inode的占用情况,df -i可以查看文件系统的inode使用情况;
创建硬链接后,两个文件的硬链接数都是2;
输入内容到文件hard_link中,可以看到两个文件同时增加了大小;
将link文件改名后,hard_link文件依然可以访问;
再来查看一下inode占用情况,并没有发生变化。
创建软链接,创建软链接后文件link的链接数并没有增加
访问symbol_link文件可以看到link文件的内容。
使用ls命令的-i参数可以看到文件所占用的inode号码;可以看到硬链接与原文件的inode号码相同,而符号链接则使用了新的inode号码。下面的输出中符号链接的大小为4,其实它表示符号链接所指向的文件名的字符数,link为4个字符,所以它的大小为4。
看下inode的使用情况,在上面创建硬链接时inode使用数量为125630,创建符号链接后变成了125631,可见符号链接会占用inode。
将文件link改名后,符号链接已经找不到原文件而出错了。
另外,一个inode可以被引用多次,其有计数器;在引用次数降为0之前,不会被标记为未占用inode.
文件被删除,inode被标记为空闲,此inode指向的磁盘地块被标记为空闲。
如果inode被引用多次,且此次删除未使得其引用计数降低为0的话,这意味着文件未被删除,仅删除了一个访问路径。
文件复制:创建一个新文件,是原文件中数据在新文件指向磁盘块中写一次的过程。
文件移动:
在同一分区移动: 移动文件仅是改变了文件访问路径。
跨分区移动:在新分区创建文件,把数据复制过去,删除原分区数据。
2.du和df命令
du命令:用于显示文件和目录的容量。
-a:列出所有的文件与目录容量;
-s:列出整个目录的容量;
-h:以人类易读的方式显示;
-k:以KB显示容量;
-m:以MB显示容量。
下面举例来说明:
显示/etc目录的容量;
以易读方式显示;
显示/etc目录中每一个文件的大小;
df命令:列出文件系统的使用情况。
-a:列出所有的文件系统;
-k:以KB显示容量;
-m:以MB显示容量;
-h:以人类易读方式显示容量;
-H:以M=1000K替代M=1024的进位方式;
-T:显示文件系统的分区格式;
-i:显示inode数量。
下面举例说明:
列出所有文件系统;
以易读方式显示容量;
显示文件系统的格式;
以易读方式显示inode数量;
标签:linux
原文地址:http://11145636.blog.51cto.com/11135636/1736952