Skip to content

文件系统管理

  • 磁盘分区
    • 在使用文件系统之前,通常需要对磁盘进行分区。分区是将物理磁盘划分为多个独立的存储单元,每个分区可以格式化为不同的文件系统。例如,可以将一个硬盘分区为一个用于安装操作系统的分区(格式化为 ext4 文件系统),一个用于存储用户数据的分区(也可以格式化为 ext4 或其他文件系统),以及一个交换分区(用于虚拟内存)。
  • 格式化
    • 格式化是将选定的文件系统格式应用到分区的过程。例如,使用 mkfs.ext4 命令可以将一个分区格式化为 ext4 文件系统。格式化过程会创建文件系统的基本结构,如 inode 表、超级块等,为后续的文件存储和读取做好准备。
  • 挂载和卸载
    • 挂载是将一个文件系统的分区连接到目录树中的某个挂载点,使其可以被访问。例如,使用 mount /dev/sdb1/mnt/mydrive 命令可以将 /dev/sdb1 分区挂载到/mnt/mydrive 目录,之后就可以通过这个目录访问该分区中的文件了。卸载(umount)则是断开这种连接,当不再需要访问某个分区时,应该先卸载它,以确保数据的一致性。

文件系统分类

Windows 常用文件系统

文件系统最大卷/文件大小特点
FAT32卷: 2TB 文件: 4GB- 兼容性极强(U盘、游戏机、车载设备等) - 不支持大文件(如高清视频)
exFAT卷: 128PB 文件: 16EB- 专为闪存设计(U盘、SD卡) - 支持大文件,无日志功能,跨平台兼容
NTFS卷: 256TB 文件: 16EB- Windows 默认文件系统 - 支持日志、加密、压缩、权限控制 - macOS/Linux 需额外驱动写入

Linux 常用文件系统

文件系统特点
ext4- Linux 默认文件系统 - 支持日志、大文件(16TB)、快照 - 稳定性高
XFS- 高性能(适合大文件/服务器) - 动态扩展,但收缩困难
Btrfs- 支持写时复制(COW)、快照、RAID - 适合数据完整性要求高的场景
ZFS- 高级文件系统(整合卷管理) - 支持数据去重、压缩、快照(需高资源)

macOS 常用文件系统

文件系统特点
APFS- macOS 默认文件系统(SSD优化) - 支持加密、快照、空间共享
HFS+- 旧版 macOS 文件系统 - 兼容性较好但逐渐被淘汰

通用/网络文件系统

文件系统用途
ISO 9660光盘标准格式(兼容所有系统)
UDF可擦写光盘/蓝光文件系统
NFS网络文件系统(Linux/Unix 间共享)
SMB/CIFSWindows 网络共享协议(跨平台文件访问)

对比总结

选择依据推荐文件系统
Windows 系统盘NTFS
Linux 系统盘ext4(通用)、XFS(大文件)
macOS 系统盘APFS
U盘/SD卡exFAT(跨平台)、FAT32(老旧设备)
网络共享NFS(Linux)、SMB(Windows/macOS)
高性能存储XFS(Linux)、NTFS(Windows)、APFS(macOS)

注意事项

  • 跨平台兼容性:exFAT 是 Windows/macOS/Linux 通用选择。
  • 日志功能:NTFS/ext4/XFS 等支持日志,意外断电时数据更安全。
  • SSD 优化:APFS(macOS)、F2FS(Linux/Android)可延长闪存寿命。

文件系统操作命令

查看文件系统信息

bash
df -h                  # 显示磁盘空间使用情况
lsblk                  # 列出块设备信息
mount                  # 显示已挂载的文件系统
file -s /dev/sda1      # 查看分区文件系统类型

文件系统管理

bash
mkfs.ext4 /dev/sdb1    # 创建ext4文件系统
fsck /dev/sda1         # 检查修复文件系统
tune2fs -l /dev/sda1   # 显示ext文件系统信息
resize2fs /dev/sda1    # 调整ext文件系统大小

挂载与卸载

bash
mount /dev/sdb1 /mnt/data   # 挂载文件系统
umount /mnt/data            # 卸载文件系统
mount -a                    # 挂载/etc/fstab中所有文件系统

开机自动挂载

/etc/fstab

在 Linux 系统中,/etc/fstab 文件用于定义文件系统的静态挂载配置,使得系统在启动时能够自动挂载指定的文件系统。

字段解析

bash
<file system> <mount point> <type> <options> <dump> <pass>

<file system>:文件系统标识符,可以是设备名称(如/dev/sda1)、UUID 或标签。

<mount point>:文件系统的挂载点。

<type>:文件系统的类型(如ext4xfsswap等)。

<options>:挂载选项(如defaultsrwro等)。

  • defaults:使用默认挂载选项(rwsuiddevexecautonouserasync)。
  • noauto:不自动挂载,需要手动挂载。
  • user:允许普通用户挂载。
  • ro:只读挂载。
  • rw:读写挂载。

<dump>:用于dump命令的备份选项,通常设置为0(不备份)。

  • 0:代表不要做dump备份
  • 1:代表要每天进行dump的操作
  • 2:代表不定日期的进行dump操作

<pass>:文件系统检查顺序,通常设置为01/根文件系统设置为1,其他文件

  • 0:不要检验
  • 1:最早检验(一般根目录会选择)
  • 2:1级别检验完成之后进行检验

/etc/rc.d/rc.local

/etc/rc.d/rc.local 是 Linux 系统中的一个脚本文件,它在系统启动过程中会被自动执行,用于运行用户自定义的初始化命令或脚本。

位置和名称

  • 在基于 System V init 的系统中,rc.local 文件通常位于 /etc/rc.d/ 目录下。
  • 在一些现代 Linux 发行版中,如使用 systemd 作为初始化系统的,rc.local 文件的位置可能有所不同,但功能类似。

作用

  • 自定义启动任务 :允许用户在系统启动后自动执行特定的任务或命令,例如启动自定义的服务、挂载网络文件系统、设置网络配置等。
  • 方便系统管理 :为系统管理员提供了一种简单的方法来添加启动时需要执行的命令,而无需修改复杂的系统启动脚本。
bash
#!/bin/bash
# 启动自定义服务
/path/to/custom/service1 start
# 挂载网络文件系统
mount -t nfs nfs_server:/path/to/share /mnt/nfs
# 设置环境变量
export MY_ENV_VAR="my_value"

设置文件权限

默认 rc.local 文件不具备执行权限,修改后确认具有可执行权限。可以使用以下命令来设置权限:

bash
chmod +x /etc/rc.d/rc.local

注意事项

  • 兼容性 :在不同的 Linux 发行版中,rc.local 的位置和配置方式可能会有所不同。例如,在 Ubuntu 系统中,rc.local 文件可能位于 /etc/ 目录下,并且需要在 systemd 中启用它。
  • 执行顺序rc.local 脚本通常在系统启动的最后阶段执行,因此如果需要在某些服务启动之前执行命令,可能需要调整服务的启动顺序。
  • 错误处理 :如果 rc.local 中的命令出现错误,可能会导致系统启动过程出现问题。因此,在添加命令时要确保其正确性,并进行充分的测试。

文件链接