linux下文件操做inode,block的变化

   在“浅谈linux性能调优之三:分区格式化以前的考虑”
           http://my.oschina.net/sharelinux/blog/143522    一文中我说了inode与block的关系,如今说一下linux下文件操做底层inode与block发生了什么变化:

1.建立好文件系统并挂载:inode,block信息以下:
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb5              28112      11   28101    1% /test5
/dev/sdb6              28112      11   28101    1% /test6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdb5               108837      5663     97555   6% /test5
/dev/sdb6               108865      5663     97581   6% /test6
2.在/test5下建立一个testfile文件:后信息以下:
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb5              28112      12   28100    1% /test5
/dev/sdb6              28112      11   28101    1% /test6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdb5               108837      5664     97554   6% /test5
/dev/sdb6               108865      5663     97581   6% /test6
结论:建立一个文件时,占用一个inode,至少一个block
3.从/test5复制文件testfile到/test6/testfile.cp
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb5              28112      13   28099    1% /test5
/dev/sdb6              28112      12   28100    1% /test6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdb5               108837      5664     97554   6% /test5
/dev/sdb6               108865      5664     97580   6% /test6
结论:复制应该等于创建的过程
4.移动/test5/testfile到/test6/
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb5              28112      12   28100    1% /test5
/dev/sdb6              28112      13   28099    1% /test6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdb5               108837      5664     97554   6% /test5
/dev/sdb6               108865      5664     97580   6% /test6
结论:/test5 inode减小一个, /test6 inode增长一个,/test5 block应该不变,/test6应该减小一个 可能由于文件大小
5.在/test6下删除testfile
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sdb5              28112      12   28100    1% /test5
/dev/sdb6              28112      12   28100    1% /test6
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sdb5               108837      5664     97554   6% /test5
/dev/sdb6               108865      5664     97580   6% /test6
结论:删除文件时,只删除inode节点,不销毁block块中的数据,同时这也是数据恢复的基础


硬连接
---------------------------------
    刚才说过,当系统要读取某个文件时,它会先读inode table,而后根据inode的信息到数据区域将数据取出备用。硬连接就是再创建一个inode连接到文件放置的Block块。也就是说,进行硬连接时,实际上您的文件内容不会改变,只是原来的inode与后来添加的inode都可指定到该文件存放的地点,所以,读取两个inode的结果都是读取同一个文件的内容。不过,这样一来就有个问题,由于inode会连接到Block块,而"目录"自己仅消耗inode,这样,硬连接就不能连接目录。因此,硬连接有两个最大的限制:
    (1) 不能跨文件系统,由于不一样的文件系统有不一样的inode table;
    (2) 不能连接目录。


软连接(符号连接)
---------------------------------
    相对于硬连接,符号连接比较好理解,基本上,它是再创建一个独立文件,而这个文件会让数据读取操做指向它连接的那个文件。因为只是利用文件做为指向的动做,因此,当源文件被删除,符号连接的文件就打不开了,屏幕会显式"没法开启某文件"。
    所以,硬连接比较安全,由于即某一个inode被删除,只要还有一个inode,该文件就能被找到。


node

相关文章
相关标签/搜索