Linux文件系统为多个用户共享同一个文件提供了两种方便的文件共享机制,请问:
(1)Linux文件系统提供了哪两种文件共享机制?
(2)请说明(1)中两种文件共享机制的实现原理。
(3)请对(1)中两种文件共享机制的优缺点进行比较分析。
( 1 ) UNIX 提供了两种文件共享机制: 基于索引节点的共享方式(硬链接)和利用符号连实现文件共享(软链接)。
(2)硬链接实现原理: 系统为共享文件新建一个目录项,该目录项的文件名可以跟原共享文件不同,而目录项中的索引节点编号为原共享文件的索引节点编号。为避免文件主删除原共享文件而造成“悬空指针”的错误,在索引节点中增加一个共享计数count,用于指示当前有多少用户在共享该文件。
软链接实现原理: 系统为共享文件新建一个link类型的新文件,该新文件的文件名可以跟原共享文件不同,系统将为该新文件建立目录项、分配索引节点和磁盘空间,新文件的内容即为原共享文件路径。这样用户就可以通过新文件名去访问原共享文件了。
优缺点比较: 1 )硬链接不需要建立新文件,只建立目录项,比软链接节省了磁盘空间;当有两个以上用户共享文件时,硬链接中不允许文件主删除共享文件,对文件主不方便,而软链接没有这种限制; 3 )硬链接不能跨文件卷共享,而软链接可以,且软连接可以方便的实现网络文件的共享; 4 )软链接中访问共享文件时,需进行两次路径查询(新文件路径及共享文件路径),查询效率比硬链接低。