8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
硬链接与软链接
文档都有文档名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文档数据块 (data block),数据块是记录文档真实内容的地方;而元数据则是文档的附加属性,如文档大小、创建时间、所有者等信息。
在 Linux 中,元数据中的 inode 号(inode 是文档元数据的一部分但其并不包含文档名,inode 号即索引节点号)才是文档的唯一标识而非文档名。文档名仅是为了方便人们的记忆和使用,系统或进程通过 inode 号寻找正确的文档数据块。图 1.展示了进程通过文档名获取文档内容的过程。
图 1. 通过文档名打开文档
在 Linux 系统中查看 inode 号可使用命令stat或 ls -i.
为解决文档的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文档的共享使用,还带来了隐藏文档路径、增加权限安全及节省存储等好处。
硬链接:若一个 inode 号对应多个文档名,则称这些文档为硬链接。换言之,硬链接就是同一个文档使用了多个别名(见 图 2.hard link 就是 file 的一个别名,他们有共同的 inode)。硬链接可由命令 link 或 ln 创建。如下是对文档 oldfile 创建硬链接。
`link oldfile newfile ``ln oldfile newfile`
由于硬链接是有着相同 inode 号仅文档名不同的文档,因此硬链接存在以下几点特性:文档有相同的 inode 及 data block;
只能对已存在的文档进行创建;
不能交叉文档系统进行硬链接的创建;
不能对目录进行创建,只可对文档创建;
删除一个硬链接文档并不影响其他有相同 inode 号的文档。
对一个iNode创建一个硬链接会增加其链接计数,当链接计数为0时,表示该文档可被删除。
Linux 系统存在 inode 号被用完但磁盘空间还有剩余的情况。
硬链接不能对目录创建是受限于文档系统的设计。现 Linux 文档系统中的目录均隐藏了两个个特殊的目录:当前目录(.)与父目录(..)。查看这两个特殊目录的 inode 号可知其实这两目录就是两个硬链接。若系统允许对目录创建硬链接,则会产生目录环。
软链接:若文档用户数据块中存放的内容是另一文档的路径名的指向,则该文档就是软连接。软链接就是一个普通文档,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块(见 图 2.)。因此软链接的创建与使用没有类似硬链接的诸多限制:软链接有自己的文档属性及权限等;
可对不存在的文档或目录创建软链接;
软链接可交叉文档系统;
软链接可对文档或目录创建;
创建软链接时,链接计数 i_nlink 不会增加;
删除软链接并不影响被指向的文档,但若被指向的原文档被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文档被重新创建,死链接可恢复为正常的软链接)。
图 2. 软链接的访问
iNode
每个文档存在两个计数器:i_count 与 i_nlink,即引用计数与硬链接计数。
结构体 inode 中的 i_count 用于跟踪文档被访问的数量,而 i_nlink 则是上述使用 ls -l 等命令查看到的文档硬链接数。或者说 i_count 跟踪文档在内存中的情况,而 i_nlink 则是磁盘计数器。当文档被删除时,则 i_nlink 先被设置成 0。文档的这两个计数器使得 Linux 系统升级或进程更新变的容易。系统或进程可在不关闭的情况下(即文档 i_count 不为 0),将新文档以同样的文档名进行替换,新文档有自己的 inode 及 data block,旧文档会在相关进程关闭后被完整的删除。
参考文献:摘自 https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html