本文原载于 https://www.idc.moe/archives/qcloud-LighthouseDisk-LVM-Synthesis.html
腾讯云 2022 年新春大促,可以分别以 5 元、9.9 元和 19.9 元的价格购买 100GB, 500GB 和 1000GB 的轻量应用服务器用高性能云硬盘。全球主机交流论坛有位 mjj 写了用 mdadm 创建 RAID0 阵列的方法【传送门】,然 RAID0 的风险较大、灵活性不强(扩展与收缩分区困难)等问题并不比 LVM 更适合管理跨设备卷,故在这里简单介绍一下使用 LVM 将三块硬盘合成为一个 1.65TiB 的分区。
购买云硬盘
访问腾讯云 2022 年新春采购页面 https://curl.qcloud.com/LnDqyoqH 拉至下方“加购·专区”的“轻量 数据盘”处选购。
提示:
100GB, 500GB 和 1000GB 三种规格各能且仅能买一份,云硬盘地域和可用区不互通,购买前可以先到轻量应用服务器控制台 https://console.cloud.tencent.com/lighthouse/instance/index 查看服务器的地域和可用区。
控制台挂载云硬盘
访问轻量应用服务器-云硬盘控制台 https://console.cloud.tencent.com/lighthouse/cbs/index 逐个挂载硬盘(挂载时选择“到期后不进行任何操作”)
挂载成功后登陆服务器,执行 fdisk -l
即可查看已挂载的磁盘。
root@debian:~# fdisk -l
Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 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
Disklabel type: dos
Disk identifier: 0xfa1ddc9a
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 81885183 81883136 39G 83 Linux
/dev/vda2 81887230 83884031 1996802 975M 5 Extended
/dev/vda5 81887232 83884031 1996800 975M 82 Linux swap / Solaris
Disk /dev/vdb: 100 GiB, 107374182400 bytes, 209715200 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/vdc: 500 GiB, 536870912000 bytes, 1048576000 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/vdd: 1000 GiB, 1073741824000 bytes, 2097152000 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
其中 /dev/vdb
, /dev/vdc
和 /dev/vdd
为新购买的云磁盘。
创建 VG
先安装软件包 lvm2
,CentOS 用户执行 yum install -y lvm2
,Debian 和 Ubuntu 用户执行 apt install -y lvm2
。
使用 pvcreate
命令创建 PV
依次执行以下命令:
pvcreate /dev/vdb
pvcreate /dev/vdc
pvcreate /dev/vdd
创建成功的输出如下:
root@debian:~# pvcreate /dev/vdb
Physical volume "/dev/vdb" successfully created.
root@debian:~# pvcreate /dev/vdc
Physical volume "/dev/vdc" successfully created.
root@debian:~# pvcreate /dev/vdd
Physical volume "/dev/vdd" successfully created.
使用 pvs
命令查看所有的 PV
root@debian:~# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb lvm2 --- 100.00g 100.00g
/dev/vdc lvm2 --- 500.00g 500.00g
/dev/vdd lvm2 --- 1000.00g 1000.00g
使用 vgcreate
命令创建 VG
vgcreate main /dev/vdb /dev/vdc /dev/vdd
其中 main
为 VG 名称,可以自定义。
创建成功的输出如下:
root@debian:~# vgcreate main /dev/vdb /dev/vdc /dev/vdd
Volume group "main" successfully created
使用 vgs
命令查看所有的 VG,使用 vgdisplay
命令查看所有的 VG 的详细信息
root@debian:~# vgs
VG #PV #LV #SN Attr VSize VFree
main 3 0 0 wz--n- 1.56t 1.56t
root@debian:~# vgdisplay
--- Volume group ---
VG Name main
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 1.56 TiB
PE Size 4.00 MiB
Total PE 409597
Alloc PE / Size 0 / 0
Free PE / Size 409597 / 1.56 TiB
VG UUID qX7SUf-tp7w-uiv1-jMPN-sn5Q-DjNC-bBVm35
VG 名称为 main
,由 PV /dev/vdb
, /dev/vdc
和 /dev/vdd
组成。
故目前 VG main
的大小为 /dev/vdb
, /dev/vdc
和 /dev/vdd
的大小的总和。
创建 LV
使用 lvcreate 命令创建 LV
创建含 409597
个 PE 块,每个 PE 块为 4MiB
的 LV:
lvcreate -l 409597 -n maindisk main
其中 main
为上一步创建的文件系统名称,maindisk
为 LV 名称,可以自定义,409597
为 PE 数量,可以自定义,PE 数量
*PE 大小
(默认 4MiB
)=LV 大小
,最大值为上一步显示的 Total PE
。填写最大值,即代表使用该 VG 的全部空间 (1.65TiB)。
创建成功的输出如下:
root@debian:~# lvcreate -l 409597 -n maindisk main
WARNING: ext4 signature detected on /dev/main/maindisk at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/main/maindisk.
Logical volume "maindisk" created.
使用 lvs
命令查看所有的 LV,使用 lvdisplay
命令查看所有的 LV 的详细信息
root@debian:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
maindisk main -wi-a----- 1.56t
root@debian:~# lvdisplay
--- Logical volume ---
LV Path /dev/main/maindisk
LV Name maindisk
VG Name main
LV UUID wg415F-f14m-khdw-JJ7D-tgSS-pfhL-W91XXf
LV Write Access read/write
LV Creation host, time debian, 2022-02-17 03:56:49 -0500
LV Status available
# open 0
LV Size 1.56 TiB
Current LE 409597
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
格式化 LV
mkfs -t ext4 /dev/main/maindisk
挂载
使用 blkid
或 lsblk -o name,uuid
命令查看各分区 UUID:
root@debian:~# blkid
/dev/vda1: UUID="4e510f36-2c5c-447f-87ba-e2de7b74cc1a" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="fa1ddc9a-01"
/dev/vda5: UUID="c77bfc1e-00ed-44c7-9e91-3f171b248714" TYPE="swap" PARTUUID="fa1ddc9a-05"
/dev/vdb: UUID="as8Wtb-KDmx-nbfC-ptOu-bZa5-xJKX-9pGnQ5" TYPE="LVM2_member"
/dev/vdc: UUID="hcT6j5-ilQ4-FDzp-oarR-slIJ-IUr3-9eKZxn" TYPE="LVM2_member"
/dev/vdd: UUID="p9vC3Y-fsfH-Qcwk-8prK-SSDx-J9L7-fo0jUb" TYPE="LVM2_member"
/dev/sr0: BLOCK_SIZE="2048" UUID="2022-02-17-16-03-44-00" LABEL="config-2" TYPE="iso9660"
/dev/mapper/main-maindisk: UUID="b54e9b1a-2665-41d9-852a-d50fb5f948a7" BLOCK_SIZE="4096" TYPE="ext4"
root@debian:~# lsblk -o name,uuid
NAME UUID
sr0 2022-02-17-16-03-44-00
vda
├─vda1 4e510f36-2c5c-447f-87ba-e2de7b74cc1a
├─vda2
└─vda5 c77bfc1e-00ed-44c7-9e91-3f171b248714
vdb as8Wtb-KDmx-nbfC-ptOu-bZa5-xJKX-9pGnQ5
└─main-maindisk b54e9b1a-2665-41d9-852a-d50fb5f948a7
vdc hcT6j5-ilQ4-FDzp-oarR-slIJ-IUr3-9eKZxn
└─main-maindisk b54e9b1a-2665-41d9-852a-d50fb5f948a7
vdd p9vC3Y-fsfH-Qcwk-8prK-SSDx-J9L7-fo0jUb
└─main-maindisk b54e9b1a-2665-41d9-852a-d50fb5f948a7
新建挂载点空文件夹,例如 /data
:
mkdir -p /data
编辑 /etc/fstab
文件,在底部加入一行:
UUID=b54e9b1a-2665-41d9-852a-d50fb5f948a7 /data ext4 errors=remount-ro 0 1
其中,b54e9b1a-2665-41d9-852a-d50fb5f948a7
为 /dev/mapper/main-maindisk
的 UUID,/data
为上一步创建的挂载点,保存之。
执行 mount -a
挂载,并执行 echo $?
查验,若返回 0
,则挂载完成。
root@debian:~# mount -a
root@debian:~# echo $?
0