这个特殊的系统表现得很奇怪,我以前从未见过。系统运行 CentOS,是 VMWare 上的虚拟机。我将驱动器空间从 100GB 增加到 130GB。当我进入系统时,我可以在运行时看到新的空间fdisk
,但是我在 /dev/sdb 上没有看到任何分区。
Disk /dev/sdb: 139.6 GB, 139586437120 bytes
255 heads, 63 sectors/track, 16970 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/sys-swap: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/sys-root: 106.3 GB, 106266886144 bytes
255 heads, 63 sectors/track, 12919 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
fdisk
在该磁盘上运行将返回:
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x8926c36c.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/sdb: 139.6 GB, 139586437120 bytes
255 heads, 63 sectors/track, 16970 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8926c36c
Device Boot Start End Blocks Id System
那里根本没有列出任何分区。即使是 VG,我通常仍然会看到8e
它的类型和一些信息。当我运行时,vgdisplay
它看起来也有点奇怪。似乎没有给我完整的路径,只是将 VG 列为“sys”。
VG Name sys
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 12
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 99.97 GiB
PE Size 32.00 MiB
Total PE 3199
Alloc PE / Size 3199 / 99.97 GiB
Free PE / Size 0 / 0
VG UUID E3jBIZ-BbxE-CnJg-IwBi-mXaP-xrN2-JbjXmY
我是否只是丢失或忘记了一些东西,这是完全正常的,我应该检查fdisk
并创建新分区,运行pvcreate
并使用 等扩展它vgextend
?
在此先感谢您的时间!我不确定我是否错过了一些东西......只是看起来很奇怪。另外,这里还可以mount
查看驱动器类型:
/dev/mapper/sys-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs
(rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
答案1
pvcreate
只需将整个磁盘设备作为目标而不是使用分区,就可以将整个磁盘用作 LVM PV 。例如,使用pvcreate /dev/sdb
代替pvcreate /dev/sdb1
.
需要注意的是,这样的磁盘只能被 Linux 识别,不能被系统固件(无论是 BIOS 还是 UEFI)识别,因此它可能无法用作可启动系统磁盘。 (详细信息取决于所使用的确切固件和引导加载程序。)
此外,其他操作系统会将磁盘视为“未格式化”,并且完全不知道磁盘实际上包含数据。如果磁盘意外地呈现给另一个操作系统,则可能会导致数据丢失。
卷组始终有一个简单的名称:只有 PV 和 LV 具有路径名。基本上任何可以准备的块设备pvcreate
都可以是 LVM PV。 LV 的名称可以表示为/dev/<VG name>/<LV name>
或/dev/mapper/<VG name>-<LV name>
。通常可以使用两种 LV 名称形式,但某些发行版更喜欢其中一种形式,特别是对于启动过程早期阶段涉及的磁盘。
在虚拟化环境中,跳过数据磁盘上的分区可以更轻松地扩展虚拟磁盘:您可以告诉虚拟化平台(例如VMware)扩展虚拟磁盘,然后在必要时告诉内核使用 重新检测磁盘大小echo 1 > /sys/block/sdb/device/rescan
。 (是否需要重新检测步骤取决于所使用的虚拟化平台和驱动程序:如果使用半虚拟化驱动程序,主机可能会与虚拟机通信磁盘已扩展,因此可能会自动检测到。)
完成这些步骤后,您将能够使用 use pvresize /dev/sdb
(或其他)来扩展 PV,然后新的未分配容量将在卷组中可用,并且可以根据需要通过lvextend
或命令来使用。lvcreate
通过省略处理扩展分区或创建新分区的需要,这从存储扩展过程中删除了一个步骤。
虚拟化平台的管理员可能会喜欢将给定 VM 中的虚拟磁盘数量保持在相对较小的水平,并使每个虚拟磁盘成为单个有意义的实体,例如“系统磁盘”、“应用程序 1 的所有数据”、“应用程序的所有数据” 2”等。从这个意义上说,当需要更多容量时,扩展现有虚拟磁盘可能比添加新虚拟磁盘更好。
答案2
能够通过在虚拟机上创建新磁盘并使用 fdisk、pvcreate 等正常处理来扩展卷组。