‹ Miaoblog:~#

Hetzner 使用 LVM 合并硬盘空间

Nov 25, 2021

由于原始硬盘容量无法满足业务需求,遂额外加购硬盘。起初使用的是 RAID0 方案合并硬盘空间,但是由于 RAID0 的特性限制,最终可用容量为最小硬盘容量乘以总硬盘数。如果硬盘大小不同则不可避免有大量的容量浪费。且 RAID0 本身有高风险,如果一枚硬盘物理损坏则全部数据丢失,无法找回。

开干

前往 Rescue System, 删除 RAID 并格式化盘符

mdadm --remove /dev/md0
mdadm --remove /dev/md1
mdadm --remove /dev/md2

mdadm --stop /dev/md0
mdadm --stop /dev/md1
mdadm --stop /dev/md2

mkfs.ext4 /dev/nvme0n1
mkfs.ext4 /dev/nvme1n1
mkfs.ext4 /dev/nvme2n1

通过 installimage 安装操作系统。在安装配置文件中修改和添加分区信息

...
SWRAID 0 ## 关闭 RAID
...

## 编写分区
PART  /boot  ext3  512M
PART  lvm    vg0   all

LV   vg0   swap   swap  swap  32G
LV   vg0   root   /     ext4  all

进入正常系统后,列出本机中的物理硬盘,记录硬盘名

fdisk -l

Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
Disk model: SAMSUNG MZVL22T0HBLB-00B00
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xacf2949f

Device         Boot   Start        End    Sectors  Size Id Type
/dev/nvme0n1p1         2048    1050623    1048576  512M 83 Linux
/dev/nvme0n1p2      1050624 4000795311 3999744688  1.9T 8e Linux LVM

Disk /dev/nvme1n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: SAMSUNG MZVLB512HBJQ-00000
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 /dev/nvme2n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: SAMSUNG MZVLB512HBJQ-00000
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 /dev/mapper/vg0-swap: 32 GiB, 34359738368 bytes, 67108864 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 /dev/mapper/vg0-root: 1.83 TiB, 2013504995328 bytes, 3932626944 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

添加其他物理卷至 LVM

pvcreate /dev/nvme1n1 /dev/nvme2n1

将其他物理卷扩展至卷组 vg0

vgextend vg0 /dev/nvme1n1 /dev/nvme2n1

将剩余空间添加至逻辑卷并整理

lvextend -l +100%FREE /dev/mapper/vg0-root
resize2fs /dev/mapper/vg0-root

查询可用空间

df -hl

Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 6.3G  940K  6.3G   1% /run
/dev/mapper/vg0-root  2.8T  1.9G  2.6T   1% /
tmpfs                  32G     0   32G   0% /dev/shm
tmpfs                 5.0M     0  5.0M   0% /run/lock
/dev/nvme0n1p1        488M   89M  374M  20% /boot
tmpfs                 6.3G     0  6.3G   0% /run/user/0

fdisk -l

Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
Disk model: SAMSUNG MZVL22T0HBLB-00B00
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xacf2949f

Device         Boot   Start        End    Sectors  Size Id Type
/dev/nvme0n1p1         2048    1050623    1048576  512M 83 Linux
/dev/nvme0n1p2      1050624 4000795311 3999744688  1.9T 8e Linux LVM

Disk /dev/nvme1n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: SAMSUNG MZVLB512HBJQ-00000
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 /dev/nvme2n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: SAMSUNG MZVLB512HBJQ-00000
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 /dev/mapper/vg0-swap: 32 GiB, 34359738368 bytes, 67108864 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 /dev/mapper/vg0-root: 2.76 TiB, 3037720477696 bytes, 5933047808 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

Bingo! 🎉


最后吐槽一下,中文互联网信息质量是真的烂。在中文互联网搜索技术资料,基本除了漫天飞舞的垃圾广告,剩下就是你抄我我抄你的垃圾社区“博客”和采集站,真正有意义的内容少之又少。这是我第一次处理 LVM 的问题,折腾花了不少时间,最终还是在某个英文网站上找到了参考资料;当然也有可能是我的中文搜索水平太烂。总之,务必学好英文,远离垃圾中文互联网。

https://i.loli.net/2021/11/25/QDKIhH7eNmgsE8j.png