分区与 LVM
RHEL 9 看懂磁盘、fdisk 分区、格式化挂载、fstab 永久生效,以及 LVM 的 PV/VG/LV 与扩容(xfs_growfs)。
本页目录
这一篇把「多出来的那块盘」变成能用的目录,并解决考试爱考的 LVM 扩容。全文按操作顺序写:先认清磁盘 → 分区 → 格式化 → 挂载 → 写进开机配置;再进入 LVM 的仓库模型与扩容。
系列:从 RHCSA 到 RHCE · 第 10 / 17 篇 上一篇:find、grep 与脚本入门下一篇:服务与计划任务总目录:系列索引
环境说明
- 系统:RHEL 9
- 身份:root
- 硬件:建议虚拟机额外加 1 块空数据盘(例如 10GB),不要在系统盘上练
fdisk写分区表 - 前置:基础命令;知道
/dev里是设备文件
危险:
fdisk/parted对错误磁盘写入会丢数据。每一步先lsblk确认盘符;有快照先打快照。
1. 先认清:硬盘、分区、挂载
用生活比喻:
| 概念 | 比喻 |
|---|---|
| 硬盘 /dev/vdb | 一整块空地 |
| 分区 /dev/vdb1 | 在空地上划出的地块 |
| 格式化 mkfs.xfs | 给地块铺上某种「地板」(文件系统) |
| 挂载 mount | 给地块开一个门牌目录,比如 /data,人才能进去放东西 |
Windows 习惯 C 盘、D 盘;Linux 是一棵树,把设备「接到」某个目录上。
常见设备名
| 名字 | 常见含义 |
|---|---|
| /dev/sda /dev/sdb | SATA/SCSI 盘(a、b 表示第几块) |
| /dev/vda /dev/vdb | 虚拟机 virtio 盘 |
| /dev/nvme0n1 | NVMe 固态 |
| /dev/sr0 | 光驱 |
| /dev/vda1 | 第 1 块盘上的第 1 个分区 |
数字后缀就是分区号:vdb → vdb1、vdb2…
2. 查看磁盘:lsblk
lsblk
示例(你的机器数字会不同):
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 1024M 0 rom
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
vdb 252:16 0 10G 0 disk
| 列 | 怎么看 |
|---|---|
| NAME | 设备名 |
| SIZE | 容量 |
| TYPE | disk 整盘 / part 分区 / lvm 逻辑卷 / rom 光驱 |
| MOUNTPOINTS | 挂到了哪个目录(空的说明还没挂载) |
再看文件系统类型(格式化成什么):
lsblk -f
3. 分区:fdisk
下面用第二块盘 /dev/vdb 做实验(请改成你的空盘名)。
fdisk /dev/vdb
进入交互界面,常用键:
| 键 | 作用 |
|---|---|
| m | 帮助 |
| p | 打印当前分区表 |
| n | 新建分区 new |
| t | 改分区类型(LVM 时用到) |
| w | 写入并退出(不写等于白分区) |
| q | 不保存退出 |
新建一个 1G 主分区(标准考场节奏)
fdisk /dev/vdb- 按
n - 分区类型:直接回车(默认 primary 主分区)
- 分区号:回车(默认 1)
- 起始扇区:回车(默认从头)
- 结束位置:输入
+1G(大小) - 按
p确认能看到vdb1 - 按
w保存
验证:
lsblk
应看到 vdb 下多了 vdb1。
易错:改完不按
w,分区不存在。 易错:对/dev/vda(系统盘)乱分区导致起不来——练习只用空盘。 主分区数量:传统 MBR 最多 4 个主分区;需要更多时用扩展分区(考试一般 1~2 个主分区就够)。
4. 格式化:mkfs
分区还是「空地块」,要铺上文件系统才能存文件。
RHEL 常用 xfs(也常见 ext4):
mkfs.xfs /dev/vdb1
# 警告:格式化会清掉该分区上的数据!
其它格式:
mkfs.ext4 /dev/vdb1
mkfs.vfat /dev/vdb1 # 可能需 dnf 安装 dosfstools
查看:
lsblk -f
blkid /dev/vdb1
5. 挂载:mount(临时)
mkdir -p /data
mount /dev/vdb1 /data
lsblk
df -h
| 命令 | 看什么 |
|---|---|
| lsblk | MOUNTPOINTS 列是否出现 /data |
| df -h | 人类可读的已用/可用空间 |
试一下能不能写:
touch /data/hello.txt
ls /data
临时挂载的缺点
reboot
# 重启后
df -h
lsblk
重启后 mount 命令挂的分区会消失(除非写进了配置文件)。生产与考试都要做「永久挂载」。
6. 永久挂载:/etc/fstab
vim /etc/fstab
在文件末尾追加一行(字段用空格或 Tab 分开):
/dev/vdb1 /data xfs defaults 0 0
| 列 | 含义 | 本例 |
|---|---|---|
| 1 | 挂谁(设备) | /dev/vdb1 |
| 2 | 挂到哪(目录) | /data |
| 3 | 文件系统类型 | xfs |
| 4 | 选项 | defaults 最常用;还有 ro 只读等 |
| 5 | dump 备份标记 | 一般 0 |
| 6 | 开机 fsck 检查顺序 | 一般 0(数据盘)/ 根分区常为 1 |
保存后立即按配置挂载(不必重启):
mount -a
df -h
mount -a = 把 fstab 里尚未挂上的都挂上。若 fstab 写错,这里会报错——比直接重启更安全。
考点:改 fstab 后用
mount -a验证。 易错:fstab 里设备写错或目录不存在,可能导致开机卡住。练习机务必先mount -a。
7. Swap:用磁盘当「备用内存」
内存不够时,系统可以把不常用的数据换到 swap 分区。
查看:
free -m
total used free
Mem: 956 305 666
Swap: 2047 0 2047
新建 swap 分区(接着用 vdb)
fdisk /dev/vdb
# n → 主分区 → 2 → 回车 → +512M → w
lsblk
格式化并启用:
mkswap /dev/vdb2
swapon /dev/vdb2
free -m
swapon -s
永久启用(fstab):
vim /etc/fstab
/dev/vdb2 swap swap defaults 0 0
swapon -a
free -m
记忆:普通分区用
mkfs+mount;swap 用mkswap+swapon。
8. LVM:可以「长大」的分区
普通分区建好后很难改大小。LVM(Logical Volume Manager)在中间加了一层「仓库」,逻辑卷可以从仓库里灵活取空间。
三层模型
物理硬盘/分区 卷组 VG(仓库) 逻辑卷 LV(真正挂载用)
───────────── ──────────────── ────────────────────
/dev/vdb3 → myvg(很多 PE) → mylv → 格式化 → /volume
/dev/vdb4 → ↑
| 名称 | 全称 | 一句话 |
|---|---|---|
| PV | Physical Volume | 把硬盘/分区交给 LVM 管理 |
| VG | Volume Group | 把多个 PV 合成一个「空间仓库」 |
| LV | Logical Volume | 从仓库里划出来的「可挂载卷」 |
| PE | Physical Extent | 仓库里的最小格子(默认 4MiB,可改) |
流程口诀:
分区 → PV → VG → LV → mkfs → mount
8.1 准备分区(示例 3G)
fdisk /dev/vdb
# n → 3 → 回车起始 → +3G → w
lsblk
8.2 建 VG(卷组)
vgcreate -s 16M myvg /dev/vdb3
| 参数 | 含义 |
|---|---|
| -s 16M | 每个 PE 为 16MiB(可省略,用默认 4MiB) |
| myvg | 卷组名(自定义) |
| /dev/vdb3 | 用哪个物理卷 |
查看:
vgdisplay myvg
# 或
vgs
关注:VG Size 总容量、Free PE 还剩多少格子。
8.3 建 LV(逻辑卷)
两种写法任选:
lvcreate -n mylv -l 100 myvg # 取 100 个 PE
# 或
lvcreate -n mylv -L 1G myvg # 取大约 1G 容量
| 参数 | 含义 |
|---|---|
| -n mylv | 逻辑卷名字 |
| -l 100 | 100 个 PE |
| -L 1G | 直接按容量 |
lvs
lsblk
设备路径常见两种(等价):
/dev/myvg/mylv
/dev/mapper/myvg-mylv
8.4 格式化并挂载
mkfs.xfs /dev/myvg/mylv
mkdir -p /volume
vim /etc/fstab
/dev/myvg/mylv /volume xfs defaults 0 0
mount -a
df -h
lsblk -f
9. 扩容(考试高频)
逻辑卷「不够用了」分两种情况。
情况 A:VG 里还有剩余 PE → 只扩 LV
vgs # 看 Free PE / Free
lvextend -L 2G /dev/myvg/mylv
# 若原来是 1G,这里扩到总共 2G(-L 是目标大小)
或增加指定增量:
lvextend -L +512M /dev/myvg/mylv
关键一步:扩完 LV 后,文件系统不会自动变大。
df -h /volume # 可能仍旧显示旧大小
按文件系统类型扩展:
# xfs(RHEL 默认常见)
xfs_growfs /volume
# ext4 则用
resize2fs /dev/myvg/mylv
再看:
df -Th /volume
lvs
考点:
lvextend之后必须xfs_growfs(或resize2fs),否则df不变。
情况 B:VG 空间不够 → 先扩 VG,再扩 LV
- 新建一个分区(或用整块新盘)
vgcreate不行,要用vgextend把新 PV 加进已有 VG- 再
lvextend+xfs_growfs
fdisk /dev/vdb
# n → 4 → 剩余空间 → w
lsblk
vgextend myvg /dev/vdb4
vgdisplay myvg # Free PE 应变多
lvextend -L 3G /dev/myvg/mylv
xfs_growfs /volume
df -Th /volume
扩容记忆图
不够用?
├─ VG 还有空 → lvextend → xfs_growfs/resize2fs
└─ VG 也不够 → fdisk 新分区 → vgextend → lvextend → xfs_growfs
10. 推荐完整实验(约 40 分钟)
准备:虚拟机加一块 10GB 空盘(假定为 /dev/vdb)。
lsblk
lsblk -f
# --- 普通分区与挂载 ---
fdisk /dev/vdb
# 创建 vdb1 = +1G,w 保存
mkfs.xfs /dev/vdb1
mkdir -p /data
mount /dev/vdb1 /data
echo 'fstab line: /dev/vdb1 /data xfs defaults 0 0' >> /tmp/reminder.txt
vim /etc/fstab
# 追加:/dev/vdb1 /data xfs defaults 0 0
mount -a
df -h /data
touch /data/from-part1.txt
# --- swap(可选)---
# fdisk 创建 vdb2 = +512M
# mkswap /dev/vdb2 && swapon /dev/vdb2 && free -m
# --- LVM ---
# fdisk 创建 vdb3 = +3G
vgcreate -s 16M myvg /dev/vdb3
vgdisplay myvg
lvcreate -n mylv -l 100 myvg
lvs
mkfs.xfs /dev/myvg/mylv
mkdir -p /volume
vim /etc/fstab
# 追加:/dev/myvg/mylv /volume xfs defaults 0 0
mount -a
df -h /volume
# --- 扩容 LV ---
vgs
lvextend -L +512M /dev/myvg/mylv
df -h /volume # 注意:可能还没变大
xfs_growfs /volume
df -h /volume # 应变大
期望
/data可写,重启后仍在(fstab 生效)lvs能看到mylvlvextend+xfs_growfs后df -h /volume容量增加
11. 速查表
| 目标 | 命令 |
|---|---|
| 看磁盘 | lsblk / lsblk -f |
| 分区 | fdisk /dev/vdX(n / p / w) |
| 格式化 | mkfs.xfs /dev/vdXN |
| 临时挂载 | mount 设备 目录 |
| 永久挂载 | 写 /etc/fstab 后 mount -a |
| 看空间 | df -h / df -Th |
| 建 VG | vgcreate -s 16M 卷组名 PV |
| 建 LV | lvcreate -n 名 -l PE数 卷组 或 -L 大小 |
| 扩 VG | vgextend 卷组名 新PV |
| 扩 LV | lvextend -L +512M /dev/卷组/逻辑卷 |
| 扩文件系统 | xfs_growfs 挂载点 或 resize2fs 设备 |
| swap | mkswap + swapon |
考点与易错
考点:完整链路
fdisk → mkfs → fstab → mount -a;LVMvgcreate/lvcreate;扩容vgextend? → lvextend → xfs_growfs。 易错:lvextend后忘记xfs_growfs,df看起来「没扩上」。 易错:fstab 写错仍重启,机器起不来;先mount -a。 易错:对系统盘vda做破坏性分区练习。 易错:swap 用了mkfs.xfs(应该用mkswap)。 练习环境:课堂盘名若是vdc/vdd,步骤相同只换设备名。
小结
- 先
lsblk认盘,再fdisk分区、mkfs格式化、mount挂载。 - 重启后仍要生效,就写
/etc/fstab,并用mount -a验证。 - LVM 三层:PV → VG → LV;LV 挂载前仍要
mkfs。 - 扩容记住:VG 有空只
lvextend;VG 不够先vgextend;最后必须xfs_growfs。
下一篇进入服务:systemctl、计划任务 cron、时间同步 chrony,以及 NFS 共享目录。
系列导航:总目录 · 上一篇:find、grep 与脚本入门 · 下一篇:服务与计划任务