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 知识点概要
- fdisk 和 parted 区别? → fdisk 适合 MBR;parted 支持 GPT 和更大磁盘
- mount 后重启失效怎么办? → 写到
/etc/fstab
- LVM 有什么优势? → 在线扩容、跨磁盘组合、快照
- 怎么查看分区 UUID? →
blkid 或 lsblk -f
- ext4 和 btrfs 核心区别? → btrfs 支持 CoW、快照、子卷、压缩;ext4 更稳定成熟