我缺少一些有关 Linux 磁盘管理的概念,我在单个物理卷上有一些可用空间,我想用它来扩展 ext4 文件系统,这是一个逻辑卷。
我查看了 fdisk -l - 它是一个 GPT(警告)
Disk /dev/sda: 299.4 GB, 299439751168 bytes
255 heads, 63 sectors/track, 36404 cylinders, total 584843264 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 1 584843263 292421631+ ee GPT
我查看了物理卷:
root@node-29:/home# pvs
PV VG Fmt Attr PSize PFree
/dev/sda4 os lvm2 a-- 62.00g 4.00m
/dev/sda5 logs lvm2 a-- 10.00g 4.00m
/dev/sda6 mysql lvm2 a-- 20.00g 4.00m
/dev/sda7 narcine lvm2 a-- 11.00g 4.00m
这加起来有 93GB,是一个交换分区和一些其他分区,但我有很多可用空间
我查看了 parted,因为它们是 GPT 分区 - 我想查看可用的空间:
root@node-29:/home# parted /dev/sda print free
Model: DELL PERC H710 (scsi)
Disk /dev/sda: 299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
17.4kB 1049kB 1031kB Free Space
1 1049kB 26.2MB 25.2MB primary bios_grub
26.2MB 27.3MB 1049kB Free Space
2 27.3MB 237MB 210MB primary
237MB 238MB 1049kB Free Space
3 238MB 448MB 210MB ext2 primary
448MB 449MB 1049kB Free Space
4 449MB 67.1GB 66.6GB primary
67.1GB 67.1GB 1049kB Free Space
5 67.1GB 77.9GB 10.8GB primary
77.9GB 77.9GB 1049kB Free Space
6 77.9GB 99.4GB 21.5GB primary
99.4GB 99.4GB 1049kB Free Space
7 99.4GB 111GB 11.9GB primary
111GB 111GB 1049kB Free Space
8 111GB 111GB 21.0MB ext2 primary
111GB 299GB 188GB Free Space
所有卷上都有一点可用空间,但最后一行有我想要的空间
Number Start End Size File system Name Flags
111GB 299GB 188GB Free Space
在 LVM 中,我看到设备位于 /dev/mapper 中,我查看 dmsetup
root@node-29:/home# dmsetup info
Name: narcine-nartemp
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 252, 0
Number of targets: 1
UUID: LVM-eDmr02vsptbjvAdvX9c7VZGuI3drAkuMqYAIwCAy6EEZ2GTAopLlD96o6CmOtszP
Name: os-swap
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 2
Event number: 0
Major, minor: 252, 4
Number of targets: 1
UUID: LVM-hMIdqpNc1W6paxT044lNpBcPUfWGA2kESL4f6dB9OJu14mKzLvnOzKMeNM6zV4SK
Name: os-root
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 252, 3
Number of targets: 1
UUID: LVM-hMIdqpNc1W6paxT044lNpBcPUfWGA2kEcIBDlsTce6uqieEfh6ehzYfLxJwaIoEe
Name: mysql-root
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 252, 1
Number of targets: 1
UUID: LVM-rYCHA1YXEPa6jDTS8NIHRvTXllf7jeNhT5d7pulT4efAq4TMll6ndWVuyiDYgGbs
Name: logs-log
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 252, 2
Number of targets: 1
UUID: LVM-npxUm7C9dQX7fIrLeAGyfJxrDWKzmb9rVfJS8FEspobIPK8bnuOnDzLNdQtsY4jE
我应该如何进行扩展?顺序是什么(parted、lvm、dmsetup?)- parted 告诉我设备分区是循环的 - 这是什么意思?
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/os-root: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number Start End Size File system Flags
1 0.00B 53.7GB 53.7GB ext4
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/os-swap: 12.9GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number Start End Size File system Flags
1 0.00B 12.9GB 12.9GB linux-swap(v1)
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/logs-log: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number Start End Size File system Flags
1 0.00B 10.7GB 10.7GB ext4
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/mysql-root: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number Start End Size File system Flags
1 0.00B 21.5GB 21.5GB ext4
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/narcine-nartmp: 11.8GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number Start End Size File system Flags
1 0.00B 11.8GB 11.8GB xfs
我希望pvsan -vv
显示 /dev/sda 上的免费 PEfree - 为什么不显示呢?
让我困惑的是,这个命令dmcreate
看起来像这样,没有必要创建“传统”分区 - 这是正确的吗?
谢谢。
答案1
如何扩展 LVM
cfdisk /dev/sda # create new partition, using all free space
pvcreate /dev/sdaX # initialize partition for use with LVM
vgdisplay # to find VG name
vgextend /dev/vgname /dev/sdaX # this extends the volume group
lvextend -l +100%FREE /dev/vgname/root # this extends the LVM
resize2fs /dev/vgname/root # this extends the filesystem
LVM 解释
LVM 不关心分区。LVM 具有以下层次结构:
- 文件系统
- 大号逻辑的五体积
- 五音量G团体
- 磷物理的五体积
- (分区)
- 硬件
我们从下往上来。
最底层是硬件。大惊喜。最上面是 PV。现在这里变得令人困惑。你可以让 PV 成为驱动器本身或分区。LVM 不需要分区。您可以将原始块设备添加为 PV。但是,许多人还是会创建分区。这样做有很多原因。例如,与需要分区的工具或人员的向后兼容性。如果系统管理员不知道布局并看到“空”磁盘,他可能会认为磁盘是空的,尽管它是一个 PV!所以这就是您有时将分区用作 PV 的原因。
这就是您在示例中看到的,显然,无论是谁设置了服务器,都为每个 VG 创建了一个分区。
接下来是卷组。VG 是一个或多个 PV。这是保存后续所有内容的容器。由于 PV 可以是磁盘、来自 RAID 控制器的虚拟磁盘、分区等,因此 VG 可以跨越任意数量的这些内容。
在 VG 之上,您有 LV。这实际上是将文件系统放在其之上。您可以将 LV 视为分区。您可以在此处找到它们:
/dev/VGName/LVname
因此,一个 LV 始终属于一个 VG,但每个 VG 可以拥有多个 LV。
最后,将文件系统放置在 LV 之上。
为什么循环
循环难题:没有循环设备!Parted 无法在 LVM 上找到分区表(应该可以找到),因此它只显示“循环”。
答案2
添加一些额外的解决方案:
扩展物理卷
如果您只想扩展 LVM,则可以按照 mzhaase 的回答并跳过前两个命令(cfdisk
和pvcreate
)。但是,如果您还必须扩展物理卷,我会使用以下步骤:
partprobe /dev/sda
pvresize /dev/sda3
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
在动态扩展磁盘上扩展 LVM
对于动态扩展磁盘(至少在 Hyper-V 上),我发现此脚本运行良好:
growpart /dev/sda 3
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv