Chinaunix首页 | 论坛 | 博客
  • 博客访问: 189291
  • 博文数量: 54
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 630
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-02 18:41
文章分类

全部博文(54)

文章存档

2011年(1)

2009年(30)

2008年(23)

我的朋友

分类: LINUX

2009-03-19 14:06:06

参考自:
鸟哥的Linux私房菜:基础学习篇(第一版)
http://blog.hjenglish.com/spirit_12/articles/1028519.html

    认识链接文件前,先了解inode(索引节点)。
    先了解硬盘的整体结构。硬盘中有多个硬盘盘片,盘片为圆形,每个盘片上都有一个读写磁头(Head),将磁头固定,使盘片旋转一周,所走轨迹就是磁道(Track)。硬盘内所有盘片相同磁道号的集合称磁柱(Cylinder)。每个磁道被划分为许多区域,每个区域称一个扇区(sector)。扇区是硬盘的最小存储物理量,一个扇区存储容量大约为512bytes(约0.5K)。
    再了解硬盘分区。硬盘分割最小单位是磁柱,分割完之后就是格式化。Linux中格式化必须考虑Block与inode,Block是磁盘可以记录的最小单位,由数个扇区组成,所以大小通常为n*512bytes,如4K。
    现在来了解inode。Block是记录文件内容数据的区域,inode则是记录该文件属性及其放置在哪个Block之内的信息。所以,系统为每个新创建的文件分配一个inode,每个文件都有一个唯一的inode号。Linux系统要存取某个文件时,要先从inode table找到该文件的inode进而找到存放数据的Block才能对数据进行操作。一个inode大小为128bytes,inode数量一开始已被设定好,通常为"硬盘大小/单位容量",这个单位容量比Block大一些较佳【为什么呢?希望能找到答案】,如刚才Block为4K,那么单位容量设为8K左右。
    一个分区被格式化为一个文件系统后,会有inode table与数据区域两大块,一个用来记录文件属性及该文件放置的Block块,一个用来记录文件内容。

    Linux中链接分两种:硬链接(hard link)与符号链接(symbolic link)
    硬链接:
        系统读取某个文件时,会先读inode table,然后根据inode信息到相应Block区域将数据取出。硬链接其实就是一个指向inode的目录项,系统不为它分配新的inode。一个文件只有在硬链接数减为0且没有进程使用时,内核才将该文件内容从磁盘上删除。

        硬链接两大限制:
        硬链接不能链接目录。因为目录本身仅有inode,无内容Block块。而inode会链接到Block块,所以硬链接不能链接目录。
        硬链接不能跨文件系统。因为不同文件系统有不同的inode table。


    符号链接(软链接):
        软链接克服硬链接的不足,没有文件系统的限制,任何用户可以创建指向目录的符号链接。它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。

        新建一个符号链接也新建一个指向inode的目录项。如:
            ln -s /etc/profile ./ss
        这里ss是该符号链接在新建目录项里的名字,该目录项->inode节点->文件数据指针->"/etc/profile"这个路径值,且inode节点里的文件类型是符号链接。所以系统在使用这类文件时就知道读取符号链接文件的真实数据也就是源地址。
        总之,建立软链接就是建立一个新文件(它有自己的inode)。当访问该链接文件时,系统自动发现它是一个链接文件,通过读取链接文件找到真正要访问的文件。

阅读(965) | 评论(1) | 转发(0) |
0

上一篇:Linux 重要目录

下一篇:迭代器

给主人留下些什么吧!~~

chinaunix网友2010-08-15 18:27:52

unix环境高级编程上说:超级用户可以创建指向目录的硬链接。 目录有i节点块也有数据块。