Linux文件存储方式以及软硬链接

在Linux中,文件包括常规文件、目录、符号链接等。为了方便理解,在本文中,文件指常规文件,目录指常规目录。

文件

1. 文件是如何存储的?

文件是由3部分组成 的:

  • 文件名: dentry
  • 文件元数据: inode
  • 文件数据:data
Linux文件存储方式以及软硬链接_第1张图片
image.png

2. 什么是inode?

inode保存着除了文件名之外的所有文件信息,包括文件类型、所有者以及权限和时间信息等, 可以使用stat访问文件的inode:

[root@MiWiFi-R3-srv test]# stat file
  File: ‘file’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 33878261    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2017-05-29 13:40:51.984844445 +0800
Modify: 2017-05-29 13:40:51.984844445 +0800
Change: 2017-05-29 13:40:51.984844445 +0800
 Birth: -

3. 什么是硬链接?

与硬链接相关联的是文件inode, 本质使用不同文件名(dentry)对相同的inode的再次引用。引用计数可以使用ls -l查看:

[root@MiWiFi-R3-srv test]# ln file hard_link_to_file
[root@MiWiFi-R3-srv test]# ll
total 0
-rw-r--r--. 2 root root 0 May 29 13:40 file # 引用为2
-rw-r--r--. 2 root root 0 May 29 13:40 hard_link_to_file
Linux文件存储方式以及软硬链接_第2张图片
image.png

当引用计数归0时,文件也就无法被访问了,没有了文件名(dentry),这也就是文件删除(rm)的原理.

4. 什么是软链接?

软链接在Windows中可以认为是快捷方式,内部具体的实现为:

Linux文件存储方式以及软硬链接_第3张图片
image.png

软链接和源文件是两个文件,具有两个不同的inode + data。软链接文件在数据区域存储着对源文件的引用。

[root@MiWiFi-R3-srv test]# ln -s file soft_link_to_file
[root@MiWiFi-R3-srv test]# ll
total 0
-rw-r--r--. 2 root root 0 May 29 13:40 file # 源文件字节数为0
-rw-r--r--. 2 root root 0 May 29 13:40 hard_link_to_file
lrwxrwxrwx. 1 root root 4 May 29 19:49 soft_link_to_file -> file # 快捷方式字节数为4

目录

在Linux中,目录也是文件, 所以上述文件中内容在目录中全部适用,特殊的地方在于目录的数据区域存储的是子文件/文件夹与inode的映射关系;

Linux文件存储方式以及软硬链接_第4张图片
image.png

你可能感兴趣的:(Linux文件存储方式以及软硬链接)