使用 LVM 将腾讯云轻量 100G, 500G 和 1000G 云硬盘合成 1.6TB 分区

2022-02-22 22:27:23 浏览数 (1)

全球主机交流论坛有位 mjj 写了用 mdadm 创建 RAID0 阵列的方法【传送门】,然 RAID0 的风险较大、灵活性不强(扩展与收缩分区困难)等问题并不比 LVM 更适合管理跨设备卷,故在这里简单介绍一下使用 LVM 将三块硬盘合成为一个 1.65TiB 的分区。

控制台挂载云硬盘

  访问轻量应用服务器-云硬盘控制台 https://console.cloud.tencent.com/lighthouse/cbs/index 逐个挂载硬盘(挂载时选择“到期后不进行任何操作”)

  挂载成功后登陆服务器,执行 fdisk -l 即可查看已挂载的磁盘。

代码语言:txt复制
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

  依次执行以下命令:

代码语言:txt复制
pvcreate /dev/vdb
pvcreate /dev/vdc
pvcreate /dev/vdd

  创建成功的输出如下:

代码语言:txt复制
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

代码语言:txt复制
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

代码语言:txt复制
vgcreate main /dev/vdb /dev/vdc /dev/vdd

  其中 main 为 VG 名称,可以自定义。

  创建成功的输出如下:

代码语言:txt复制
root@debian:~# vgcreate main /dev/vdb /dev/vdc /dev/vdd
  Volume group "main" successfully created

  使用 vgs 命令查看所有的 VG,使用 vgdisplay 命令查看所有的 VG 的详细信息

代码语言:txt复制
root@debian:~# vgs
  VG   #PV #LV #SN Attr   VSize VFree
  main   3   0   0 wz--n- 1.56t 1.56t
代码语言:txt复制
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:

代码语言:txt复制
lvcreate -l 409597 -n maindisk main

  其中 main 为上一步创建的文件系统名称,maindisk 为 LV 名称,可以自定义,409597 为 PE 数量,可以自定义,PE 数量*PE 大小(默认 4MiB)=LV 大小,最大值为上一步显示的 Total PE。填写最大值,即代表使用该 VG 的全部空间 (1.65TiB)。

  创建成功的输出如下:

代码语言:txt复制
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 的详细信息

代码语言:txt复制
root@debian:~# lvs
  LV       VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  maindisk main -wi-a----- 1.56t
代码语言:txt复制
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

代码语言:txt复制
mkfs -t ext4 /dev/main/maindisk

挂载

  使用 blkidlsblk -o name,uuid 命令查看各分区 UUID:

代码语言:txt复制
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"
代码语言:txt复制
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

代码语言:txt复制
mkdir -p /data

  编辑 /etc/fstab 文件,在底部加入一行:

代码语言:txt复制
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,则挂载完成。

代码语言:txt复制
root@debian:~# mount -a
root@debian:~# echo $?
0

0 人点赞