磁盘存储与文件系统管理

内容目录

一、磁盘结构与基础术语

在 Linux 中,所有设备(包括硬盘)都被视为文件,称为“设备文件”。

1. 设备文件

  • 位于 /dev 目录中;
  • 命名规则:
    • /dev/sda:第一个SCSI/SATA磁盘
    • /dev/sdb1:第二块磁盘的第一个分区

2. 常见术语解释

名称含义
块设备(Block device)支持随机访问的存储设备,如硬盘、U盘
分区(Partition)将一个磁盘划分为若干逻辑区域
文件系统(Filesystem)用于组织和管理文件数据的结构
挂载(Mount)将设备或目录接入主文件系统目录树
挂载点(Mount point)用于访问挂载设备的目录

二、分区类型与分区表结构

1. 分区表类型对比:MBR vs GPT

项目MBRGPT
最大容量2TB理论上无限(目前为 9.4ZB)
分区数最多 4 个主分区128 个以上
兼容性与旧 BIOS 兼容需 UEFI 启动支持
结构主引导记录 + 分区表主 GUID 表 + 备份分区表
安全性无冗余有分区表备份,防破坏

2. 管理分区工具

fdisk /dev/sdX       # 针对 MBR 分区
parted /dev/sdX      # 支持 GPT 和 MBR
lsblk                # 查看块设备结构
blkid                # 查看设备 UUID 与类型

三、文件系统基础与管理

1. 常见文件系统类型

类型特点
ext4默认文件系统,稳定可靠
xfs大文件支持好,写入性能佳
btrfs支持快照、自修复、高可用性
vfat跨平台兼容性高

2. 文件系统创建与管理命令

mkfs.ext4 /dev/sda1     # 创建 ext4 文件系统
mkfs.xfs /dev/sdb1      # 创建 xfs
fsck /dev/sda1          # 检查并修复文件系统
tune2fs -l /dev/sda1    # 查看文件系统详细信息

四、挂载与挂载管理

1. 挂载操作

mount /dev/sda1 /mnt         # 手动挂载
umount /mnt                  # 卸载

2. 查看挂载状态

mount        # 显示所有挂载项
df -h        # 查看磁盘空间与挂载点
findmnt      # 层级结构查看挂载

3. 永久挂载

编辑 /etc/fstab 文件,添加一行:

UUID=xxxxx  /mnt/data  ext4  defaults  0  2

获取 UUID:

blkid /dev/sda1

4. 交换分区操作

mkswap /dev/sdX
swapon /dev/sdX
swapoff /dev/sdX

5. 可移动设备管理

  • 通常由系统自动挂载到 /media/用户名/
  • 使用 udisksctlmount 可手动挂载

五、磁盘配额管理(Quota)

用于限制用户/组使用磁盘资源:

quota username              # 查看用户配额
edquota username            # 编辑配额
repquota -a                 # 查看所有配额统计

启用步骤:

  1. 修改挂载选项支持 usrquotagrpquota
  2. 重新挂载分区;
  3. 初始化配额数据库 quotacheck -cum /mnt;
  4. 启用配额 quotaon /mnt

六、RAID 技术概览

RAID(Redundant Array of Independent Disks):冗余磁盘阵列,用于提高性能与可靠性。

各级别对比

RAID级别最少磁盘数利用率冗余性性能特点
RAID 02100%读写最快条带化,无冗余,性能优先
RAID 1250%读取快,写入略慢镜像,数据完全复制
RAID 53(n-1)/n可容忍1块读取快,写入中等条带化+奇偶校验
RAID 10450%高读写性能RAID 1+0,镜像后再条带化
RAID 01450%较快RAID 0+1,条带化后再镜像
  • 💡 RAID 10 优于 RAID 01,在故障容忍方面更稳定。RAID 不等于备份,仍建议定期备份数据。

七、LVM(逻辑卷管理)

LVM(Logical Volume Manager)为 Linux 提供灵活的磁盘管理方式,支持动态扩容、快照等。

基本结构

物理卷(PV) -> 卷组(VG) -> 逻辑卷(LV)

1. 创建流程

# 创建 PV
pvcreate /dev/sdb1

# 创建 VG
vgcreate myvg /dev/sdb1

# 创建 LV
lvcreate -L 10G -n mylv myvg

# 格式化并挂载
mkfs.ext4 /dev/myvg/mylv
mount /dev/myvg/mylv /mnt

2. 扩容与缩减

lvextend -L +5G /dev/myvg/mylv     # 扩容
resize2fs /dev/myvg/mylv           # 同步文件系统

lvreduce -L 5G /dev/myvg/mylv      # 缩减(需先 umount)
  • ⚠️ 缩减卷存在数据丢失风险,建议备份数据并确保挂载已卸载。

3. 快照卷(snapshot)

lvcreate -s -L 1G -n snap /dev/myvg/mylv
  • 快照通常用于备份或短期实验;
  • 恢复快照前需卸载原卷。

八、使用场景建议

场景推荐方式
单用户系统,简单挂载ext4 + 手动分区
多用户或动态扩展LVM + ext4/xfs
高可用服务器RAID 1 / 5 / 10 + LVM
快速备份LVM 快照 + rsync
移动设备兼容性使用 vfatexfat 文件系统