跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

怎么在Linux利用Lvm-Pvs-O-Dev_Size查看物理硬盘的总容量与PV分配差值

pvs是LVM中查看物理卷信息的核心命令,显示设备路径、所属卷组、总容量、空闲空间等;默认不显示未分配PV,需加-a选项,依赖lvm2包。 在 Linux 中,
pvs
命令本身不直接提供“物理硬盘总容量”与“PV 已分配空间”的差值,因为 PV(Physical Volume)只是硬盘或分区的一部分,且底层设备可能有未用于 LVM 的空间、保留扇区、RAID 元数据、对齐填充等。但你可以通过组合命令,分步获取物理设备总大小、PV 大小、PV 已用空间,再手动计算差值。 1. 查看 PV 对应的底层物理设备及大小
pvs -o pvname,vgname,pvsize,pvfree,pvused --units g
显示 PV 名称、所属卷组、总大小、空闲大小、已用大小(单位 GB)。但
pvs
中的
PV Size
是 LVM 初始化时识别并使用的容量(即
pvcreate
时实际写入元数据后可用的空间),通常略小于底层块设备的总大小。 要查底层设备真实大小,先确认 PV 路径(如
/dev/sdb2
),再用:
lsblk -d -o name,size /dev/sdb2
—— 显示设备原始大小(含所有扇区)
blockdev --getsize64 /dev/sdb2
—— 返回字节数,可除以 1024³ 得 GiB
cat /sys/block/sdb2/size
—— 输出扇区数(512 字节/扇区),乘以 512 即为字节数 2. 理解 PV Size 为何小于物理设备大小 LVM 在创建 PV 时会预留空间用于元数据(默认 2048 扇区 ≈ 1 MiB),并按 PE(Physical Extent)大小对齐(如默认 4 MiB)。因此: Docker Desktop(linux) 当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。 下载
PV Size = floor((device_bytes - metadata_offset) / pe_size) × pe_size
例如:200 GiB 分区 → 实际
PV Size
可能是 199.99 GiB(取决于对齐) 这个差值不是“未分配”,而是 LVM 主动放弃的底层空间 3. 计算“物理设备总容量 − PV 已分配空间”差值 这是你关心的“还能从该盘额外划出多少非 LVM 空间”。步骤如下: 取底层设备总字节数:
blockdev --getsize64 /dev/sdb2
取 PV 已用字节数:
pvs -o pvused --units b --noheadings /dev/sdb2 | tr -d ' '
相减得剩余裸空间字节数,再换算成易读单位 一行示例(输出 GiB):
echo $(echo "scale=2; ($(blockdev --getsize64 /dev/sdb2) - $(pvs -o pvused --units b --noheadings /dev/sdb2 | tr -d ' ')) / (1024^3)" | bc)
4. 注意事项与常见误区 PV 可以跨多个设备(如 RAID 或多磁盘 PV),此时需分别计算每个底层设备 如果 PV 建在整盘(如
/dev/sdb
)而非分区,
lsblk
会显示盘大小,但需注意 BIOS/UEFI 保护区域(如最后 1MiB)通常不可用
pvs -o dev_size
并不存在;
pvs
没有
dev_size
字段,官方字段列表中只有
pvsize
(即 PV 容量) 想看整个磁盘是否还有未分区空间?用
fdisk -l /dev/sdb
或
parted /dev/sdb print free

相关文章