将多块磁盘配置为 LVM 后合并为一整块分区.

Record

查看当前磁盘状态, nvme0n1 创建了一块 LVM 卷, 接下来要将 sda 扩展到 vgubuntu-root 上:

$ lsblk 
NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                 7:0    0     4K  1 loop /snap/bare/5
loop1                 7:1    0  63.5M  1 loop /snap/core20/1974
loop2                 7:2    0  63.3M  1 loop /snap/core20/1828
loop3                 7:3    0 349.7M  1 loop /snap/gnome-3-38-2004/143
loop4                 7:4    0 349.7M  1 loop /snap/gnome-3-38-2004/140
loop5                 7:5    0  73.9M  1 loop /snap/core22/817
loop6                 7:6    0  49.9M  1 loop /snap/snapd/18357
loop7                 7:7    0    46M  1 loop /snap/snap-store/638
loop8                 7:8    0  12.3M  1 loop /snap/snap-store/959
loop9                 7:9    0  53.3M  1 loop /snap/snapd/19457
loop10                7:10   0  91.7M  1 loop /snap/gtk-common-themes/1535
loop11                7:11   0 485.5M  1 loop /snap/gnome-42-2204/120
sda                   8:0    0   1.8T  0 disk 
sr0                  11:0    1  1024M  0 rom  
nvme0n1             259:0    0 931.5G  0 disk 
├─nvme0n1p1         259:1    0   512M  0 part /boot/efi
└─nvme0n1p2         259:2    0   931G  0 part 
  ├─vgubuntu-root   253:0    0 930.1G  0 lvm  /
  └─vgubuntu-swap_1 253:1    0   976M  0 lvm  [SWAP]

格式化 /dev/sda 为一块 LVM 卷:

$ sudo fdisk /dev/sda 

欢迎使用 fdisk (util-linux 2.34)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助): n
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p): p
分区号 (1-4, 默认  1): 1
第一个扇区 (2048-3907029167, 默认 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3907029167, 默认 3907029167): 

创建了一个新分区 1,类型为“Linux”,大小为 1.8 TiB。
分区 #1 包含一个 ntfs 签名。

您想移除该签名吗? 是[Y]/否[N]: Y

写入命令将移除该签名。

命令(输入 m 获取帮助): p
Disk /dev/sda:1.84 TiB,2000398934016 字节,3907029168 个扇区
Disk model: CT2000MX500SSD1 
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:dos
磁盘标识符:0x8f780ae0

设备       启动  起点       末尾       扇区  大小 Id 类型
/dev/sda1        2048 3907029167 3907027120  1.8T 83 Linux

Filesystem/RAID signature on partition 1 will be wiped.

命令(输入 m 获取帮助): t
已选择分区 1
Hex 代码(输入 L 列出所有代码): 8e
已将分区“Linux”的类型更改为“Linux LVM”。

命令(输入 m 获取帮助): w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

查看当前磁盘状况:

$ sudo fdisk -l
Disk /dev/loop0:4 KiB,4096 字节,8 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop1:63.46 MiB,66531328 字节,129944 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop2:63.29 MiB,66359296 字节,129608 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop3:349.71 MiB,366682112 字节,716176 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop4:349.71 MiB,366678016 字节,716168 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop5:73.88 MiB,77443072 字节,151256 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop6:49.86 MiB,52260864 字节,102072 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop7:45.95 MiB,48160768 字节,94064 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/nvme0n1:931.53 GiB,1000204886016 字节,1953525168 个扇区
Disk model: Samsung SSD 980 1TB                     
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):16384 字节 / 131072 字节
磁盘标签类型:gpt
磁盘标识符:46A0E5CD-961C-48E4-9C62-E3E15E31EDFB

设备              起点       末尾       扇区  大小 类型
/dev/nvme0n1p1    2048    1050623    1048576  512M EFI 系统
/dev/nvme0n1p2 1050624 1953523711 1952473088  931G Linux LVM


Disk /dev/sda:1.84 TiB,2000398934016 字节,3907029168 个扇区
Disk model: CT2000MX500SSD1 
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:dos
磁盘标识符:0x8f780ae0

设备       启动  起点       末尾       扇区  大小 Id 类型
/dev/sda1        2048 3907029167 3907027120  1.8T 8e Linux LVM




Disk /dev/mapper/vgubuntu-root:930.6 GiB,998638616576 字节,1950466048 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):16384 字节 / 131072 字节


Disk /dev/mapper/vgubuntu-swap_1:976 MiB,1023410176 字节,1998848 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):16384 字节 / 131072 字节


Disk /dev/loop9:53.26 MiB,55844864 字节,109072 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop8:12.33 MiB,12922880 字节,25240 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop10:91.7 MiB,96141312 字节,187776 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop11:485.53 MiB,509100032 字节,994336 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

使用 pvcreate 创建 /dev/sda1 物理卷:

$ sudo pvcreate /dev/sda1
  Physical volume "/dev/sda1" successfully created.
$ sudo pvdisplay 
  --- Physical volume ---
  PV Name               /dev/nvme0n1p2
  VG Name               vgubuntu
  PV Size               931.01 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              238338
  Free PE               0
  Allocated PE          238338
  PV UUID               iXC7Sc-Ifeq-dSA4-601o-IFg4-YHFi-1fpxFl
   
  "/dev/sda1" is a new physical volume of "<1.82 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda1
  VG Name               
  PV Size               <1.82 TiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               saAITP-FMN0-NsFe-9QzR-uVNm-mHCz-piSntC

使用 vgextend/dev/sda1 放入 vgubuntu 卷组中:

$ sudo vgextend vgubuntu /dev/sda1
  Volume group "vgubuntu" successfully extended
$ sudo pvdisplay 
  --- Physical volume ---
  PV Name               /dev/nvme0n1p2
  VG Name               vgubuntu
  PV Size               931.01 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              238338
  Free PE               0
  Allocated PE          238338
  PV UUID               iXC7Sc-Ifeq-dSA4-601o-IFg4-YHFi-1fpxFl
   
  --- Physical volume ---
  PV Name               /dev/sda1
  VG Name               vgubuntu
  PV Size               <1.82 TiB / not usable <4.09 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              476931
  Free PE               476931
  Allocated PE          0
  PV UUID               saAITP-FMN0-NsFe-9QzR-uVNm-mHCz-piSntC
   
$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/vgubuntu/root
  LV Name                root
  VG Name                vgubuntu
  LV UUID                EuzaTo-BC1d-qz7c-U8iv-l2qK-NAIi-LZEBS6
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2023-07-11 20:49:31 +0800
  LV Status              available
  # open                 1
  LV Size                930.05 GiB
  Current LE             238094
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     512
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/vgubuntu/swap_1
  LV Name                swap_1
  VG Name                vgubuntu
  LV UUID                8rnXEm-O2ON-iCnQ-G5uZ-SQNL-FDnW-76COpW
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2023-07-11 20:49:31 +0800
  LV Status              available
  # open                 2
  LV Size                976.00 MiB
  Current LE             244
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     512
  Block device           253:1

使用 lvextend/dev/vgubuntu/root 进行扩展:

$ sudo lvextend -l +100%FREE /dev/vgubuntu/root
  Size of logical volume vgubuntu/root changed from 930.05 GiB (238094 extents) to <2.73 TiB (715025 extents).
  Logical volume vgubuntu/root successfully resized.
$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/vgubuntu/root
  LV Name                root
  VG Name                vgubuntu
  LV UUID                EuzaTo-BC1d-qz7c-U8iv-l2qK-NAIi-LZEBS6
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2023-07-11 20:49:31 +0800
  LV Status              available
  # open                 1
  LV Size                <2.73 TiB
  Current LE             715025
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     512
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/vgubuntu/swap_1
  LV Name                swap_1
  VG Name                vgubuntu
  LV UUID                8rnXEm-O2ON-iCnQ-G5uZ-SQNL-FDnW-76COpW
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2023-07-11 20:49:31 +0800
  LV Status              available
  # open                 2
  LV Size                976.00 MiB
  Current LE             244
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     512
  Block device           253:1

最终 vgubuntu-root 被扩展为 2.7T:

$ lsblk 
NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                 7:0    0     4K  1 loop /snap/bare/5
loop1                 7:1    0  63.5M  1 loop /snap/core20/1974
loop2                 7:2    0  63.3M  1 loop /snap/core20/1828
loop3                 7:3    0 349.7M  1 loop /snap/gnome-3-38-2004/143
loop4                 7:4    0 349.7M  1 loop /snap/gnome-3-38-2004/140
loop5                 7:5    0  73.9M  1 loop /snap/core22/817
loop6                 7:6    0  49.9M  1 loop /snap/snapd/18357
loop7                 7:7    0    46M  1 loop /snap/snap-store/638
loop8                 7:8    0  12.3M  1 loop /snap/snap-store/959
loop9                 7:9    0  53.3M  1 loop /snap/snapd/19457
loop10                7:10   0  91.7M  1 loop /snap/gtk-common-themes/1535
loop11                7:11   0 485.5M  1 loop /snap/gnome-42-2204/120
sda                   8:0    0   1.8T  0 disk 
└─sda1                8:1    0   1.8T  0 part 
  └─vgubuntu-root   253:0    0   2.7T  0 lvm  /
sr0                  11:0    1  1024M  0 rom  
nvme0n1             259:0    0 931.5G  0 disk 
├─nvme0n1p1         259:1    0   512M  0 part /boot/efi
└─nvme0n1p2         259:2    0   931G  0 part 
  ├─vgubuntu-root   253:0    0   2.7T  0 lvm  /
  └─vgubuntu-swap_1 253:1    0   976M  0 lvm  [SWAP]

重新定义文件系统大小:

$ sudo resize2fs /dev/vgubuntu/root 
resize2fs 1.45.5 (07-Jan-2020)
/dev/vgubuntu/root 上的文件系统已被挂载于 /;需要进行在线调整大小
old_desc_blocks = 117, new_desc_blocks = 350
/dev/vgubuntu/root 上的文件系统大小已经调整为 732185600 个块(每块 4k)。

$ df -h
文件系统                   容量  已用  可用 已用% 挂载点
udev                        24G     0   24G    0% /dev
tmpfs                      4.7G  2.6M  4.7G    1% /run
/dev/mapper/vgubuntu-root  2.7T  136G  2.5T    6% /
tmpfs                       24G  611M   23G    3% /dev/shm
tmpfs                      5.0M  4.0K  5.0M    1% /run/lock
tmpfs                       24G     0   24G    0% /sys/fs/cgroup
/dev/loop0                 128K  128K     0  100% /snap/bare/5
/dev/loop1                  64M   64M     0  100% /snap/core20/1828
/dev/loop2                  64M   64M     0  100% /snap/core20/1974
/dev/loop3                  74M   74M     0  100% /snap/core22/817
/dev/loop4                 350M  350M     0  100% /snap/gnome-3-38-2004/143
/dev/loop5                 486M  486M     0  100% /snap/gnome-42-2204/120
/dev/loop6                 350M  350M     0  100% /snap/gnome-3-38-2004/140
/dev/loop7                  46M   46M     0  100% /snap/snap-store/638
/dev/loop8                  50M   50M     0  100% /snap/snapd/18357
/dev/loop9                  13M   13M     0  100% /snap/snap-store/959
/dev/loop11                 54M   54M     0  100% /snap/snapd/19457
/dev/loop10                 92M   92M     0  100% /snap/gtk-common-themes/1535
/dev/nvme0n1p1             511M  6.1M  505M    2% /boot/efi
tmpfs                      4.7G   92K  4.7G    1% /run/user/1000

References

Linux下使用lvm将多块盘合并
Centos LVM磁盘合并方法
5.4. Logical Volume Administration
Extend LVM partition after resizing disk – Linux