07 - 存储管理进阶


7.1 分区工具

fdisk(MBR/GPT)

sudo fdisk -l # 列出所有磁盘
sudo fdisk /dev/sda # 交互式分区
 
# fdisk 交互命令
# m 帮助
# p 打印分区表
# g 创建 GPT 分区表
# n 创建新分区
# d 删除分区
# t 更改分区类型
# w 写入并退出
# q 不保存退出

parted(GPT 推荐)

sudo parted /dev/sda print
sudo parted /dev/sda mklabel gpt
sudo parted /dev/sda mkpart primary ext4 1MiB 100%
sudo parted /dev/sda set 1 boot on

7.2 创建文件系统

# ext4 — 最通用
sudo mkfs.ext4 /dev/sda1
 
# btrfs — CoW、快照、子卷
sudo mkfs.btrfs /dev/sda1
 
# FAT32 — EFI 分区
sudo mkfs.fat -F32 /dev/sda1
 
# swap
sudo mkswap /dev/sda2
sudo swapon /dev/sda2

文件系统检查与修复

sudo fsck /dev/sda1 # 检查(必须先卸载)
sudo fsck -y /dev/sda1 # 自动修复
sudo fsck.ext4 -f /dev/sda1 # 强制检查

7.3 挂载管理

临时挂载

mount /dev/sda1 /mnt
umount /mnt
umount -l /mnt # 延迟卸载(繁忙时)
mount -t ext4 /dev/sda1 /mnt
mount -o remount,rw / # 重新挂载为读写

查看

mount # 当前挂载
df -h # 磁盘使用
df -i # inode 使用
lsblk -f # 树状展示 + 文件系统类型
blkid # UUID 信息
findmnt # 挂载树

永久挂载 — /etc/fstab

# 格式:设备 挂载点 文件系统 选项 dump fsck
# <device> <mount> <fstype> <options> <dump> <pass>
# /etc/fstab 示例
# 设备 挂载点 类型 选项 dump pass
UUID=abc123-def456 / ext4 defaults 0 1
UUID=7890-ABCD /boot vfat defaults 0 2
UUID=def789-ghi012 /home ext4 defaults,noatime 0 2
UUID=ghi345-jkl678 none swap defaults 0 0
 
# 常用选项
# defaults = rw,suid,dev,exec,auto,nouser,async
# noatime 不记录访问时间(SSD 推荐)
# discard SSD TRIM 支持
# autodefrag btrfs 自动碎片整理
# compress=zstd btrfs 透明压缩

测试 fstab

sudo mount -a # 挂载 fstab 所有(测试配置)

7.4 LVM(逻辑卷管理)

概念

Physical Volume (PV) → Volume Group (VG) → Logical Volume (LV)
 物理卷 卷组 逻辑卷
 /dev/sda1 ──┐
 /dev/sdb1 ──┼── VG_name ──┬── lv_root (/)
 │ ├── lv_home (/home)
 │ └── lv_swap (swap)

创建 LVM

# 1. 创建 PV
sudo pvcreate /dev/sda2 /dev/sdb1
sudo pvs # 查看物理卷
 
# 2. 创建 VG
sudo vgcreate vg0 /dev/sda2 /dev/sdb1
sudo vgs # 查看卷组
 
# 3. 创建 LV
sudo lvcreate -L 30G -n lv_root vg0 # 30G 固定大小
sudo lvcreate -L 8G -n lv_swap vg0
sudo lvcreate -l 100%FREE -n lv_home vg0 # 剩余全部空间
sudo lvs # 查看逻辑卷
 
# 4. 格式化并挂载
sudo mkfs.ext4 /dev/vg0/lv_root
sudo mount /dev/vg0/lv_root /mnt

动态扩展

# 扩展 LV
sudo lvextend -L +5G /dev/vg0/lv_root
sudo lvextend -l +100%FREE /dev/vg0/lv_root
sudo resize2fs /dev/vg0/lv_root # 扩展文件系统(ext4)
 
# 添加新磁盘到 VG
sudo pvcreate /dev/sdc1
sudo vgextend vg0 /dev/sdc1
 
# 缩减 LV(需先缩减文件系统,有风险)
sudo umount /dev/vg0/lv_home
sudo e2fsck -f /dev/vg0/lv_home
sudo resize2fs /dev/vg0/lv_home 20G
sudo lvreduce -L 20G /dev/vg0/lv_home
sudo mount /dev/vg0/lv_home /home

7.5 磁盘配额

# 安装
sudo pacman -S quota-tools
 
# 在 /etc/fstab 中启用
# UUID=xxx /home ext4 defaults,usrquota,grpquota 0 2
 
# 重新挂载
sudo mount -o remount /home
 
# 创建配额数据库
sudo quotacheck -cug /home
 
# 开启配额
sudo quotaon /home
 
# 设置配额
sudo edquota -u alice
# 编辑:软限制、硬限制、inode 限制
 
# 查看配额
sudo quota alice
sudo repquota /home

7.6 知识点概要

  1. fdisk 和 parted 区别? → fdisk 适合 MBR;parted 支持 GPT 和更大磁盘
  2. mount 后重启失效怎么办? → 写到 /etc/fstab
  3. LVM 有什么优势? → 在线扩容、跨磁盘组合、快照
  4. 怎么查看分区 UUID? → blkidlsblk -f
  5. ext4 和 btrfs 核心区别? → btrfs 支持 CoW、快照、子卷、压缩;ext4 更稳定成熟