软链接、硬链接

文件系统

Linux文件系统是操作系统用于组织和管理存储设备上数据的结构。它定义了如何在磁盘上存储文件、如何访问文件以及文件之间的关系。 磁盘上的每一个分区,都可能拥有自己的文件系统。因此,磁盘上有多少个分区,就有多少个文件系统。

文件系统基本概念

  • 文件:文本文件、二进制文件、脚本文件等。(Linux下一切皆文件)
  • 目录:文件的容器,可以包含文件和子目录。
  • 挂载点(Mount Point):将文件系统挂载到这个目录,使其内容可以通过该目录访问。

常见文件系统类型

  • ext4
  • XFS
  • Btrfs
  • FAT32/exFAT
  • NTFS

文件系统结构

  • 引导块(Boot Block):存储引导加载器信息。
  • 超级块(Superblock):包含文件系统的元数据。
  • 索引节点(Inode):存储文件的元数据和指向数据块的指针。
  • 数据块(Data Block):存储文件的实际数据。

文件系统管理命令

命令作用
mkfs创建文件系统。
mount挂载文件系统。
umount卸载文件系统。
fsck检查和修复文件系统。
df显示磁盘使用情况。
du显示文件和目录的磁盘使用情况。

若想要对文件系统彻底了解,推荐: 一口气读懂文件系统
转自一口气读懂文件系统

inode(索引节点):是一个非常重要的概念。它存储了文件系统中每个文件的元数据信息,包括文件的类型、权限、所有者、大小、最后修改时间、创建时间、以及文件数据块的指针等。inode并不存储文件名,而是通过目录结构来将文件名与inode关联起来。(以比特位表示:0表示未占用,1表示已占用)

包含信息

  1. 文件类型和权限:文件是普通文件、目录文件、链接文件等,以及文件的读、写、执行权限。
  2. 所有者和组:文件的所有者用户ID和组ID。
  3. 文件大小:以字节为单位。
  4. 时间戳:文件的创建时间、最后访问时间、最后修改时间。
  5. 链接数:指向该inode的硬链接数量。
  6. 数据块指针:指向存储文件数据的块的指针。包括直接指针、间接指针和双重、三重间接指针。

一个简化的inode结构:

struct inode {
    mode_t mode;         // 文件类型和权限
    uid_t uid;           // 所有者用户ID
    gid_t gid;           // 所有者组ID
    off_t size;          // 文件大小
    time_t atime;        // 最后访问时间
    time_t mtime;        // 最后修改时间
    time_t ctime;        // 创建时间
    nlink_t nlink;       // 链接数
    blkcnt_t blocks;     // 文件占用的块数
    int block[15];       // 数据块指针
};

文件存储

  1. 创建文件:当创建一个新文件时,文件系统会分配一个空闲的inode来存储该文件的元数据信息(如文件类型、权限、所有者、时间戳等)。文件系统还会分配数据块来存储文件的实际数据。数据块的大小通常是文件系统固定的大小,如4KB。
  2. 写入数据:当向文件中写入数据时,文件系统会将数据分成块并写入数据块中。
    inode会记录这些数据块的位置(通过直接指针、间接指针等)。
  3. 更新元数据:文件系统会更新inode中的元数据信息,如文件大小、最后修改时间等。

文件读取

  1. 查找文件:用户通过文件路径访问文件,文件系统会通过目录结构找到对应的inode编号。目录实际上是一个特殊的文件,其中存储了文件名和对应的inode编号的映射。
  2. 读取inode:文件系统读取对应inode,获取文件的元数据和数据块指针。
  3. 读取数据块:文件系统根据inode中的数据块指针,读取存储文件数据的数据块。
    如果文件较大,可能需要通过间接指针来访问更多的数据块。

软链接与硬链接

软链接(符号链接)和硬链接是两种不同的文件链接方式。

软链接(Symbolic Link)ln -s targetfile linkfile

  1. 指向路径:软链接文件包含指向目标文件路径的引用,而不是指向实际数据。
  2. 可以跨文件系统:软链接可以指向不同文件系统中的文件。
  3. 可以指向目录:软链接可以指向目录。
  4. 链接失效:如果目标文件被删除,软链接将变为“悬挂”状态(即指向一个不存在的路径),访问软链接会失败。
    转自一口气读懂文件系统

硬链接(Hard Link)ln targetfile hardlinkfile
6. 指向相同inode:硬链接与目标文件共享相同的inode,即指向同一数据块。
7. 同一文件系统:硬链接只能在同一文件系统内创建。
8. 不能指向目录:硬链接不能指向目录。
9. 文件实质不变:删除其中一个硬链接,文件数据依然存在,只要还有其他硬链接指向它。只有当所有硬链接都被删除后,文件数据才会被释放。
转自一口气读懂文件系统

查看软链接与硬链接方式:ls -l

对比

硬链接文件软链接文件
删除硬链接,对于源文件无影响,链接数-1,源文件链接数为0时,源文件删除删除源文件,软链接失效,不可访问文件
不可以跨分区建立可以跨分区建立
不可针对目录创建可针对目录创建

好了,欢迎大家前来评论,共同进步。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值