LVM (Logical Volume Manager) ช่วยให้สามารถรวม disk หลายตัวเข้าด้วย เพื่อทำเป็น logical volumn ที่สามารถเพิ่ม-ลดขนาดของ volume ได้

สภาพแวดล้อม

ในการทดสอบทำนี้ มีใช้อุปกรณ์ดังนี้

  • Raspberry Pi 4 8G ติดตั้ง Debian 11 bullseye arm64
    • boot จาก USB HDD
  • 2x USB External HDD ขนาด 1 TB

หลักการ

  • Physical disk
  • Logical group
  • Logical volume
  • mount
||-------------------------OS----------------------------||
||-------------------------LVM---------------------------||
||  LV-1 (/)    |LV-2 (swap)|  LV 3 (/home) | LV-4 (/tmp)|| Logical Volumes(LV)
||------------------------------------------|------------||
||                  VG 1                    |    VG 2    || Volume Groups(VG)
||------------------------------------------|------------||
||  /dev/sda2 |    /dev/sda3    | /dev/sdb2 | /dev/sdd4  || Physical Volumes(PV)
||-------------------------------------------------------||
ดูคำสั่งอื่นๆ เพิ่มเติมได้จากลิงค์ในอ้างอิง

ลงมือทำ

  • เริ่มจากตรวจสอบว่า USB HDD ทั้ง 2 ตัวเป็น /dev ใดด้วยคำสั่ง lsblk แล้วสร้าง partition ของ USB HDD ทั้งสอง ด้วยคำสั่ง

# lsblk
sda                     8:0    0 931.5G  0 disk 
├─sda1                  8:1    0   256M  0 part /boot
└─sda2                  8:2    0 931.3G  0 part /
sdb                     8:16   0 931.5G  0 disk 
sdc                     8:32   0 931.5G  0 disk 

# fdisk /dev/sdb
.
  • ดำเนินการติดตั้ง lvm2 และกำหนด PV (Physical volume) ให้กับ device ที่ต้องการนำมาทำ

# apt install -y lvm2
# lsblk
sdb                     8:16   0 931.5G  0 disk 
└─sdb1                  8:17   0 931.5G  0 part 
sdc                     8:32   0 931.5G  0 disk 
└─sdc1                  8:33   0 931.5G  0 part 

# pvcreate /dev/sdb1
# pvcreate /dev/sbc1

# pvscan
  PV /dev/sdc1   VG dsklvm01        lvm2 [<931.51 GiB / 272.26 GiB free]
  PV /dev/sdb1   VG dsklvm01        lvm2 [931.51 GiB / 0    free]
  Total: 2 [<1.82 TiB] / in use: 2 [<1.82 TiB] / in no VG: 0 [0   ]

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               dsklvm01
  PV Size               931.51 GiB / not usable 4.71 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238466
  Free PE               69699
  Allocated PE          168767
  PV UUID               suYAIj-sJou-FE3j-0eOM-3NOe-3eDH-51OB7k
   
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               dsklvm01
  PV Size               931.51 GiB / not usable <1.68 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               0
  Allocated PE          238467
  PV UUID               HRjT9y-JVK0-M8bF-T363-RBSA-jehd-4kXi4b


  • จากนั้นก็ทำการสร้าง virtual group เพื่อกำหนดจัดกลุ่มของ pv ที่ต้องการ

# vgcreate dsklvm01 /dev/sdb1
# vgextend dsklvm01 /dev/sdc1

# vgdisplay
  --- Volume group ---
  VG Name               dsklvm01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               <1.82 TiB
  PE Size               4.00 MiB
  Total PE              476933
  Alloc PE / Size       407234 / 1.55 TiB
  Free  PE / Size       69699 / 272.26 GiB
  VG UUID               f5kgFF-wxKx-Hl81-dtw0-xnkO-B2u0-f6HyQi

.
  • เมื่อได้กรุ๊ปแล้ว ต่อไปก็เป็นการกำหนด logical volume พร้อมขนาดพื้นที่ แล้วทำการ format เพื่อนำไปใช้งานต่อไป โดยการทำ mount point

# lvcreate -n vollvm01 -L 1000g dsklvm01
# mkfs -t ext4 /dev/dsklvm01/vollvm01
# mkdir /disk1
# mount /dev/dsklvm01/vollvm01 /disk1
# lvresize --size +500g vollvm01
# lvdisplay
  --- Logical volume ---
  LV Path                /dev/dsklvm01/vollvm01
  LV Name                vollvm01
  VG Name                dsklvm01
  LV UUID                o7wVRw-xgy8-sbEW-RzHv-5ueP-heN2-39sL0x
  LV Write Access        read/write
  LV Creation host, time rpi4-01, 2022-10-04 22:21:27 +0700
  LV Status              available
  # open                 1
  LV Size                1.55 TiB
  Current LE             407234
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
.

อ้างอิง

https://wiki.debian.org/LVM#Installation

ขอขอบคุณ

Extra note


e2label /dev/mapper/dsklvm01-vollvm01 lvmvol01
blkid

Leave a Reply