作者介绍:我是一名运维工程师,虽然简历上没有标榜精通,但一直在努力学习和进步。希望大家多多关注我的文章,下面的思维导图展示了我计划更新的内容和当前进度(不定时更新)。
linux磁盘操作虽然涉及的命令不多,但在实际运维中却至关重要,因为Linux系统和业务都依赖于硬盘。如果磁盘使用和配置不当,可能会导致系统无法启动或业务无法正常运行。
本文将从以下几个方面详细介绍Linux磁盘操作:
- 分区介绍
- 创建分区
- MBR与gpt
- 格式化与挂载
- inode与硬连接(本章节)
- 磁盘操作命令
- 小结
Inode
Inode是文件系统中的一个关键概念,尤其在类unix操作系统(如Linux)中。它是”index node”的缩写,用于存储文件或目录的元数据信息。每个文件和目录在文件系统中都有一个唯一的inode,用于记录文件的权限、所有者、大小、时间戳以及数据块的位置等信息。
Inode的主要组成部分包括:
- 文件类型和权限:文件类型(常规文件、目录、符号链接等)和访问权限(读、写、执行)。
- 所有者和所属组:文件或目录的所有者和所属的用户组。
- 文件大小:文件占用的字节数。
- 时间戳:包括文件的访问时间、修改时间和状态改变时间。
- 指向数据块的指针:存储文件数据的实际位置,这些指针可以直接指向数据块,或者在某些情况下,指向间接块、双重间接块和三重间接块。
Inode的作用:
- 唯一标识:每个文件和目录通过唯一的inode号码在文件系统中被标识。
- 元数据管理:存储文件和目录的元数据信息,如权限、所有者、大小等。
- 性能优化:通过inode可以快速访问和管理文件的元数据,从而提升文件系统的性能。
硬链接:硬链接通过相同的inode号码连接到同一文件的多个文件名。这允许文件在文件系统中拥有多个名称,但只有一个物理副本,因为所有硬链接共享相同的inode。在Linux中,可以使用ls -i命令查看文件或目录的inode号码,或使用stat命令查看详细的inode元数据信息。
总结:
- inode可以简单理解为从整个分区中分割出来的一部分空间,用于存储inode信息,其大小根据分区大小自动定义。
- 如果没有特殊需求,不建议调整inode的大小。
- inode也有容量限制,如果磁盘中存在大量小文件,inode可能会用完,导致无法写入文件,这是运维中常见的inode问题。
- 结合find命令,可以删除那些无法通过rm命令删除的文件(目前是我用过的涉及inode的两个地方)。
硬连接与软连接
硬连接(Hard link)是操作系统中用来连接文件名与文件内容的一种技术,可以让一个文件拥有多个文件名(即多个硬连接)。硬链接与原始文件在文件系统中的inode相同,因此不同的文件名实际上引用了同一个文件内容,它们在系统级别上没有区别,只是文件系统为每个文件名维护了一个目录项。
软连接(Symbolic Link),也称为符号链接,是一种特殊类型的文件,它包含指向另一个文件或目录的路径。软连接类似于windows系统中的快捷方式,它允许你创建一个指向另一个文件或目录的链接,而不是实际复制或移动文件本身。
特点 | 硬连接 (Hard Link) | 软连接 (Symbolic Link) |
---|---|---|
定义 | 目录项指向相同的物理文件数据块。 | 特殊类型的文件,包含指向另一文件或目录的路径。 |
类型 | 文件系统层级的链接。 | 文件系统层级的链接。 |
跨文件系统 | 不能跨越文件系统。 | 可以跨越文件系统。 |
目标类型 | 只能链接到文件,不能链接到目录。 | 可以链接到文件或目录。 |
inode | 与目标文件相同的inode号。 | 新的inode号,指向目标的路径。 |
链接计数 | 增加原始文件的硬链接计数。 | 不影响目标文件或目录的链接计数。 |
更新 | 如果原始文件被修改,所有硬连接都会同步更新。 | 软连接可以指向动态变化的目标。 |
删除原始文件 | 不影响硬链接,直到所有硬链接被删除。 | 软连接失效,称为悬空连接。 |
权限和所有权 | 与目标文件相同的权限和所有权。 | 有自己的权限和所有权。 |
用途 | 保护特殊文件,避免被误删除。 | 常用于创建快捷方式或简化路径。 |
命令行创建 | ln targetfile linkfile | ln -s targetfile linkfile |
硬连接需要删除所有的文件,才能最终删除文件。软连接可以使用普通rm命令删除,也可以使用unlink命令取消连接。