必须先设分区类型为8e,因为pvcreate只识别类型id为8e(lvm专用)的分区;内核据此判断是否允许lvm管理,否则报错或静默失败。

为什么必须先设分区类型为 8e 才能 pvcreate
因为 pvcreate 不是万能格式化工具,它只认“已声明为 LVM 用途”的设备。Linux 内核靠分区类型 ID(如 8e)判断该分区是否允许被 LVM 管理;否则会报错 Device does not exist or is not a block device 或静默失败。
- 用
fdisk /dev/sdb→t→ 输入8e设置类型(对整盘无需此步,但生产环境强烈建议分区后设) -
partprobe必须执行——尤其在脚本中,否则/dev/sdb1文件节点可能未生成,pvcreate找不到设备 - RAID 设备(如
/dev/md0)或 NVMe 分区(如/dev/nvme0n1p1)同样需确保内核已识别且类型合规
扩容 LV 时,resize2fs 和 xfs_growfs 不能混用
文件系统类型决定后续命令:ext4/xfs 行为完全不同,强行套用会导致挂载失败甚至数据损坏。
Android Google 手机程序设计教程繁体版,书的内容主要是与Google手机操作系统有关的知识,介绍Google手机平台上进行程序设计的原理与方法,并以范例的形式引导Google程序设计者进入Google Phone的编程艺术殿堂。
- ext4 扩容流程严格三步:
lvextend -L +10G /dev/vg0/lv_data→e2fsck -f /dev/vg0/lv_data(缩容前必做,扩容可选但推荐)→resize2fs /dev/vg0/lv_data - xfs 扩容只需一步:
xfs_growfs /mount/point(注意:是挂载点,不是设备路径!) - xfs 不支持在线缩容;ext4 虽支持,但必须先
umount+e2fsck+resize2fs回缩,风险极高,生产环境应避免
VG 空间不够?加新硬盘不是直接 vgextend 就完事
新加物理磁盘要进 VG,得先变成 PV;而 PV 创建失败最常见的原因是残留元数据或设备忙。
- 旧硬盘重利用前,务必清除 LVM 签名:
pvremove -ff /dev/sdc(-ff强制覆盖,否则pvcreate拒绝写入) - 若提示
device is in use by another device-mapper target,检查是否有残留 LV 映射:dmsetup ls+dmsetup remove xxx -
vgextend vg0 /dev/sdc成功后,用vgs确认VFree值已增加;别只看VG Size—— 它包含已分配空间,不等于可用空间
快照(snapshot)不是备份,lvcreate -s 后必须及时处理
LVM 快照是写时复制(COW)机制,空间耗尽会导致快照失效、原 LV 可能只读甚至 I/O 错误,它只适合短时操作(如升级前临时保存状态)。
- 创建时务必指定大小:
lvcreate -L 5G -s -n snap_root /dev/vg0/lv_root;默认大小为 100MB,几乎立刻打满 - 快照本身不自动清理,长期存在会持续占用 VG 空间;用完即删:
lvremove /dev/vg0/snap_root - 不能对快照再做快照;也不能从快照挂载写入——它是只读的(除非加
--permission rw,但极不推荐)
vgcfgbackup 定期保存,而任何涉及 lvreduce 或 pvmove 的操作,都要求你真正理解数据落盘路径——不是所有“看起来能动”的空间,都真的安全可动。









