Linux那点事-文件系统(详解软加载和硬加载)

理解 Linux 的硬链接与软链接

1. Linux文件和目录

现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。

在UNIX系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等IO操作设计了一组通用API,使他们被处理时均可统一使用字节流方式。换言之,UNIX系统除进程之外一切均是文件,而Linux保持了这一特性。为了便于文件管理,Linux引入了目录这一概念。

Linux与其他类似UNIX系统一样并不区分文件和目录:目录是记录其他文件名的文件。

2. 硬链接与软连接的联系和区别

我们知道文件都有文件名与数据,这在Linux被分为两个部分:用户数据(user data)与元数据(metadata)

  • 用户数据:即文件数据块(data block),数据块是记录文件真实内容的地方。

  • 元数据:是文件的附加属性,如文件大小、创建时间、所有者等信息。

在Linux中,元数据的inode号(inode是文件元数据的一部分但是不包含文件名,inode号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是便于方便人们的记忆和使用,系统或程序通过inode号寻找正确的文件数据块。

通过文件名打开文件

在Linux系统中查看inode号可使用命令statls -i

为解决文件的共享使用,Linux系统引入了两种链接:硬链接(hard link)与软链接(又称符号链接,即soft link或symbolic link)。链接为Linux系统解决文件的共享使用,还带来了隐藏文件路径、增加权限安全、节省存储等好处。

2.1 硬链接

若一个inode号对应多个文件名,则称这些文件为硬链接,换言之: 硬链接就是同一个文件使用了多个别名。

硬链接的特点:
由于硬链接是有着相同的inode号仅文件名不同的文件,所以硬链接存在以下几个特点:

  1. 文件有相同的inode及data block;
  2. 只能对已存在的文件进行创建;
  3. 不能交叉文件系统进行硬链接的创建;(不同的文件系统文件的inode不同);
  4. 不能对目录进行创建,只可以对文件创建;
  5. 删除一个硬链接文件并不影响其他有着相同inode号的文件。

2.2 软连接

若用户数据块存放的内容是另一文件的路径名指向,则改文件就是软连接。软连接是一个普通的文件,只是数据块的内容有点特殊。软连接有着自己的inode号以及用户数据块。因此软连接的创建和使用没有类似硬链接的诸多限制。

软连接的访问
  • 软连接有着自己的文件属性及权限;
  • 可对不存在的文件或目录创建软连接;
  • 软连接可交叉文件系统;
  • 软连接可对文件或目录创建;
  • 创建软连接时,连接计数i_nlink不会增加;
  • 删除软连接并不影响被指向的文件,若被指向的原文件被删除,则相关软连接被称为死链接(即dangling link,若被指向路径被重新出创建,死链接可恢复成正常的链接)。

当然软连接的用户数据也可以是另外一个软连接的路径,其解析过程是递归的。但需注意:软链接创建时原文件的路径使用绝对路径比较好。使用相对路径创建的软连接被移动后该软链接文件将成为一个死链接。因为链接数据块中记录的亦是相对路径指向。

3. 链接相关的命令

1. 创建软/硬链接的命令

ln命令用于给文件创建链接,根据Linux系统存储文件的特点,链接的方式一般分为两种。

  • 软连接:类似windows系统给文件创建的快捷方式,即产生一个特殊的文件(数据块),该文件用来指向另一个文件,此链接方式同样适用于目录。

  • 硬链接:相当于文件的别名,他们拥有着相同的inode号。

格式:ln [选项] [源目标] [目标文件]

选项:

  • -s:建立软连接文件,如果不加“-s”选项,则建立硬链接。
  • -f:强制。如果目标文件已存在,则删除目标文件后再建立软连接。

2. 删除软连接

ln -s软链接删除方式及注意事项

1. 正确的删除方式:
rm -rf ./test_chk_ln

正确删除软连接的方式

2. 错误的删除方式

rm -rf ./test_chk_ln/ (这样就会把原来test_chk下的内容删除比正确删除的方式多了一个/)

错误的删除方式

这样会将源文件删除!

3. 查看软/硬链接

  1. df -i使用命令df查看当前系统中挂载的文件系统类型、各文件系统inode使用情况以及文件系统的挂载点。值得一提的是:Linux系统存在inode号已经用完但是磁盘空间还有剩余的情况。
pf查看文件系统的Inode
  1. 在Linux中查看当前系统已挂载的文件系统类型,还可以使用mount命令或查看文件/proc/mounts
mount查看挂载的文件系统
  1. ls -i获取stat可以区分软连接与其他文件并查看文件的inode号。

  2. find命令查找软链接和硬链接

    • 查看路径 /home 有相同 inode 的所有硬链接find ./test -samefile 文件名
    • 查询所有的硬链接也可以使用find ./test -inum Inode
    • 列出某个目录下的所有软连接文件find ./test -type l -ls
find命令
  1. 系统根据磁盘的大小默认设定了inode的值,如若必要,可以在格式化文件系统前对该值进行修改。mkfs -t ext4 -I 512/dev/sda4,将使磁盘设备 /dev/sda4 格式成 inode 大小是 512 字节的 ext4 文件系统。

2. Linux VFS

Linux有着极其丰富的文件系统,大体可分为如下几类:

  1. 网络文件系统,如nfs、cifs;
  2. 磁盘文件系统,如ext4、ext3;
  3. 特殊文件系统,如proc、sysfs、ramfs等;

实现以上这些文件系统并在Linux下共存的基础就是Linux VFS即虚拟文件系统。VFS是一个通用的文件系统,抽象了文件系统的四个基本概念:文件(file)、目录项(dentry)、索引节点(inode)及挂载点。其在内核中为用户空间层的文件系统提供了相关的接口。VFS实现了open()read()等系统调用并使得cp等用户空间程序可跨文件系统。

VFS在系统中的架构

Linux VFS存在的四个基本对象:超级块对象(superblock object)、目录项对象(dentry object)、索引节点对象(inode object)、文件对象(file object)。他们之间的关系:

VFS的对象之间的处理

·

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容

  • Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。 内核、shell和文件系统一起形成了基本...
    请爱护小动物阅读 2,568评论 0 22
  • 1. Linux文件系统 在Windows操作系统中,使用驱动器盘符(比如C盘),决定文件的路径名。每个驱动器都会...
    小胖学编程阅读 1,350评论 1 13
  • Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本...
    偷风筝的人_阅读 3,253评论 1 17
  • 一个基本的计算机系统由“硬件”和“软件”组成,一台Linux设备,主要的组成如下图所示: 一般情况下,我们所说的L...
    时待吾阅读 1,642评论 0 16
  • 我不是一个自信的人,亦不是一个内心和平的人。作为一个急性子,见不得孩子哭,带大宝那会,全身心沉浸在喜得千金...
    四季茶香阅读 259评论 0 2