本文原載於 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 拉至下方“加購·專區”的“輕量 數據盤”處選購。

docker騰通雲_#lvm

提示:

100GB, 500GB 和 1000GB 三種規格各能僅能買一份,雲硬盤地域和可用區不互通,購買前可以先到輕量應用服務器控制枱 https://console.cloud.tencent.com/lighthouse/instance/index 查看服務器的地域和可用區。

docker騰通雲_#lvm_02

docker騰通雲_#騰訊雲_03

控制枱掛載雲硬盤

訪問輕量應用服務器-雲硬盤控制枱 https://console.cloud.tencent.com/lighthouse/cbs/index 逐個掛載硬盤(掛載時選擇“到期後不進行任何操作”)

docker騰通雲_#lvm_04

掛載成功後登陸服務器,執行 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

掛載

使用 blkidlsblk -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