LVM – LV 指令

lvcreate 從 VG 中建立 LV
# lvcreate -L <size> [-n <lv name>] <vg>
# lvcreate -L 50M -n v1 diskvg
  Rounding up size to full physical extent 52.00 MiB
  Logical volume “v1” created
# lvcreate -L 150M -n v2 diskvg
  Rounding up size to full physical extent 152.00 MiB
  Logical volume “v2” created
# lvcreate -L 250M -n v3 diskvg
  Rounding up size to full physical extent 252.00 MiB
  Logical volume “v3” created
以 32 個 PE 空間來建立 LV
# lvcreate -l 32 -n v4 diskvg

lvdisplay 顯示 LV 資訊
# lvdisplay /dev/diskvg/v1
  — Logical volume —
  LV Name                /dev/diskvg/v1
  VG Name                diskvg
  LV UUID                50dHxI-bwNi-xksv-P4rS-XS1W-suNi-z3ljTc
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                52.00 MiB
  Current LE             13
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  – currently set to     1024
  Block device           253:0

[@more@]lvscan 用來掃描系統中所有 LV 的資訊
# lvscan
  inactive          ‘/dev/diskvg/v1’ [52.00 MiB] inherit
  inactive          ‘/dev/diskvg/v2’ [152.00 MiB] inherit
  inactive          ‘/dev/diskvg/v3’ [252.00 MiB] inherit
  ACTIVE            ‘/dev/diskvg/v4’ [128.00 MiB] inherit

lvextend 用來放大 Logical volume 的大小
# lvextend {-L [+]LogicalVolumeSize | -1 [+]LogicalExtentsNumber } <lv>
把 v1 空間加大 100M
# lvextend -L +100M /dev/diskvg/v1
  Extending logical volume v1 to 152.00 MiB
  Logical volume v1 successfully resized
# lvdisplay /dev/diskvg/v1
  — Logical volume —
  LV Name                /dev/diskvg/v1
  VG Name                diskvg
  LV UUID                50dHxI-bwNi-xksv-P4rS-XS1W-suNi-z3ljTc
  LV Write Access        read/write
  LV Status              NOT available
  LV Size                152.00 MiB
  Current LE             38
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto

lvremove 刪除 Logical Volume
# lvremove /dev/diskvg/v4
Do you really want to remove active logical volume v4? [y/n]: y
  Logical volume “v4” successfully removed
# lvscan
  inactive          ‘/dev/diskvg/v1’ [152.00 MiB] inherit
  inactive          ‘/dev/diskvg/v2’ [152.00 MiB] inherit
  inactive          ‘/dev/diskvg/v3’ [252.00 MiB] inherit

LVM – VG 指令

vgcreate 將一個或一個以上的 PV 組成一個 VG
 # vgcreate diskvg /dev/sdb1 /dev/sdb2 /dev/sdb3
  Volume group “diskvg” successfully created

vgdisplay 顯示 VG 的相關訊息,包括 PE 的數量、大小等資訊
# vgdisplay diskvg
  — Volume group —
  VG Name               diskvg
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               2.99 GiB
  PE Size               4.00 MiB
  Total PE              765
  Alloc PE / Size       114 / 456.00 MiB
  Free  PE / Size       651 / 2.54 GiB
  VG UUID               KP7wM8-DDuZ-a5jy-RsBP-Be22-5nVu-dk9hCl

[@more@]vgscan 掃描系統中所有的 VG 資訊
# vgscan
  Reading all physical volumes.  This may take a while…
  Found volume group “diskvg” using metadata type lvm2

vgextend 擴充 VG 容量,把 PV 加入已存在的 VG
# vgextend diskvg /dev/sdc1
  Volume group “diskvg” successfully extended
# vgdisplay diskvg
  — Volume group —
  VG Name               diskvg
  System ID
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               3.98 GiB
  PE Size               4.00 MiB
  Total PE              1020
  Alloc PE / Size       114 / 456.00 MiB
  Free  PE / Size       906 / 3.54 GiB
  VG UUID               KP7wM8-DDuZ-a5jy-RsBP-Be22-5nVu-dk9hCl

vgchange 停止 VG 的作用,目的是讓所有程式不能再存取此 VG
# vgchange -a n diskvg
0 logical volume(s) in volume group “diskvg” now active

vgremove 刪除 VG
要先停止 VG 後,才能刪除 VG
# vgremove diskvg
Volume group “diskvg” sucessfully removed

vgreduce 移除加入到 VG 的 PV
# vgreduce diskvg /dev/sdc1
Removed “/dev/sdc1” from volume group “diskvg”

LVM – PV 指令

pvcreate 將實體的分割區轉換成 Physical Volume
# pvcreate /dev/sdb1
  Physical volume “/dev/sdb1” successfully created

pvdisplay 顯示 PV 相關資訊
# pvdisplay /dev/sdb1
  — Physical volume —
  PV Name               /dev/sdb1
  VG Name               diskvg
  PV Size               1.00 GiB / not usable 4.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              255
  Free PE               141
  Allocated PE          114
  PV UUID               CblZP6-Xks3-1TwD-E26S-iBkW-2c4f-zzj3vb

[@more@]pvscan 掃描系統中所有的 PV 資訊
# pvscan
  PV /dev/sdb1   VG diskvg   lvm2 [1020.00 MiB / 564.00 MiB free]
  PV /dev/sdb2   VG diskvg   lvm2 [1020.00 MiB / 1020.00 MiB free]
  PV /dev/sdb3   VG diskvg   lvm2 [1020.00 MiB / 1020.00 MiB free]
  Total: 3 [2.99 GiB] / in use: 3 [2.99 GiB] / in no VG: 0 [0   ]

pvmove 搬移 Physical Volume 內的資料
# pvmove [-n <lv>] < source pv> [<destination pv>]
pvmove 這個並不是搬移 PV,而是搬移 PV 內的資料,其實就是將 PV 中的 PE 資料搬移到同一個 VG 中的另一個 PV 內(註:一定要在同一個 VG 內的 PV),這個指令通常是用於我們要將某個 PV 從 VG 中移除時(註:利用 vgreduce 指令時),先將 PV 中的資料搬移到另一個 PV 之中,再進行移除 PV 的動作。

pvremove 移除 PV
# pvremove /dev/sdb1 /dev/sdb2 /dev/sdb3
Labels on physical volume “/dev/sdb1” successfully wiped
Labels on physical volume “/dev/sdb2” successfully wiped
Labels on physical volume “/dev/sdb3” successfully wiped

刪除邏輯卷冊 / 卷冊群組 / 實體卷冊

刪除邏輯卷冊
# umount /dev/systemVG/www_LV
# lvremove /dev/systemVG/www_LV
Do you really want to remove active logical volume www_LV? [y/n]: y
  Logical volume “www_LV” successfully removed

# pvscan
  PV /dev/sda5   VG systemVG        lvm2 [1020.00 MiB / 1020.00 MiB free]
  PV /dev/sda6   VG systemVG        lvm2 [1020.00 MiB / 1020.00 MiB free]
  PV /dev/sda7                      lvm2 [1.00 GiB]
  Total: 3 [2.99 GiB] / in use: 2 [1.99 GiB] / in no VG: 1 [1.00 GiB]

[@more@]將卷冊群組停止使用
# vgchange -a n systemVG
刪除卷冊群組
# vgremove systemVG
  Volume group “systemVG” successfully removed

刪除實體卷冊
# pvremove /dev/sda5 /dev/sda6 /dev/sda7
  Labels on physical volume “/dev/sda5” successfully wiped
  Labels on physical volume “/dev/sda6” successfully wiped
  Labels on physical volume “/dev/sda7” successfully wiped

縮放卷冊群組和邏輯卷冊的大小

增加實體卷冊到卷冊群組
# vgdisplay systemVG
— Volume group —
VG Name systemVG
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
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.99 GiB
PE Size 4.00 MiB
Total PE 510
Alloc PE / Size 125 / 500.00 MiB
Free PE / Size 385 / 1.50 GiB
VG UUID oWUkZt-IOhU-1qw2-THBl-qRfY-w3xK-JDCPXe

VG Size 為 2G,Cur PV 2 由 2 個 PV 組成

[@more@]# vgextend systemVG /dev/sda7
Volume group “systemVG” successfully extended

# vgdisplay systemVG
— Volume group —
VG Name systemVG
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 2.99 GiB
PE Size 4.00 MiB
Total PE 765
Alloc PE / Size 125 / 500.00 MiB
Free PE / Size 640 / 2.50 GiB
VG UUID oWUkZt-IOhU-1qw2-THBl-qRfY-w3xK-JDCPXe

VG 變成 3G,Cur PV 由 3 個 PV 所組成

將實體卷冊從卷冊群組中移除
# vgreduce systemVG /dev/sda7
Removed “/dev/sda7” from volume group “systemVG”
vgreduce 指令工具可以將尚未使用到的實體卷冊從卷冊群組中移除,但如果實體卷冊已經被有存取容量空間占用時,就會無法刪除

透過指令來縮放邏輯卷冊
# df -h | grep www_LV
/dev/mapper/systemVG-www_LV 500M 33M 468M 7% /var/www

# lvdisplay | grep “LV Size”
LV Size 500.00 MiB

加大 www_LV 邏輯卷冊 加到 750M(原有 500M + 250M)
# umount /var/www
# lvextend -L +250M /dev/systemVG/www_LV
Rounding up size to full physical extent 252.00 MiB
Extending logical volume www_LV to 752.00 MiB
Logical volume www_LV successfully resized

# ls -l /var/www
總計 0
-rw-r–r– 1 root root 0 5月 17 21:16 test.html

格式化後續新增的部分
ext2/ext3 resizefs
# resize2fs -s +250M /dev/systemVG/www_LV
# resize_reiserfs -s +250M /dev/systemVG/www_LV
resize_reiserfs 3.6.21 (2009 www.namesys.com)

ReiserFS report:
blocksize 4096
block count 192000 (128000)
free blocks 183783 (119785)
bitmap block count 6 (4)

Syncing..done

resize_reiserfs: Resizing finished successfully.

重新掛載
# mount -t reiserfs /dev/systemVG/www_LV /var/www
檢查容量
# lvdisplay | grep “LV Size”
LV Size 752.00 MiB
# df -h | grep www_LV
/dev/mapper/systemVG-www_LV 750M 33M 718M 5% /var/www

縮小邏輯卷冊的大小
# umount /var/www
# resize_reiserfs -s -100M /dev/systemVG/www_LV
resize_reiserfs 3.6.21 (2009 www.namesys.com)

You are running BETA version of reiserfs shrinker.
This version is only for testing or VERY CAREFUL use.
Backup of you data is recommended.

Do you want to continue? [y/N]: y
Processing the tree: 0%….20%….40%….60%….80%….100% left 0, 0 /sec

nodes processed (moved):
int 0 (0),
leaves 1 (0),
unfm 0 (0),
total 1 (0).

check for used blocks in truncated region

ReiserFS report:
blocksize 4096
block count 166400 (192000)
free blocks 158183 (183783)
bitmap block count 6 (6)

Syncing..done

resize_reiserfs: Resizing finished successfully.

使用 lvreduce 減少 www_LV 的 100 空間
# lvreduce -L -100M /dev/systemVG/www_LV
WARNING: Reducing active logical volume to 652.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce www_LV? [y/n]: y
Reducing logical volume www_LV to 652.00 MiB
Logical volume www_LV successfully resized

重新掛載
# mount -t reiserfs /dev/systemVG/www_LV /var/www
# df -h | grep www_LV
/dev/mapper/systemVG-www_LV 650M 33M 618M 5% /var/www
# lvdisplay | grep “LV Size”
LV Size 652.00 MiB

Proxmox – LVM

掃描目前實體卷冊的狀態
# pvscan
  PV /dev/sda3   VG pve   lvm2 [118.99 GiB / 14.61 GiB free]
  Total: 1 [118.99 GiB] / in use: 1 [118.99 GiB] / in no VG: 0 [0   ]

掃描目前卷冊群組的狀態
# vgscan
  Reading all physical volumes.  This may take a while…
  Found volume group “pve” using metadata type lvm2

顯示目前系統上面的 VG 狀態
# vgdisplay pve
  — Volume group —
  VG Name               pve
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  80
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                5
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               118.99 GiB
  PE Size               4.00 MiB
  Total PE              30461
  Alloc PE / Size       26720 / 104.38 GiB
  Free  PE / Size       3741 / 14.61 GiB
  VG UUID               M7GUTE-om2m-DMcv-1D0G-o3FQ-Ta3I-HCsZa3
[@more@]

# lvs
  LV                    VG   Attr       LSize  Pool Origin        Data%  Meta%  Move Log Cpy%Sync Convert
  data                  pve  twi-aotz– 66.74g                    1.69   1.36
  root                  pve  -wi-ao—- 29.50g
  snap_vm-103-disk-1_OK pve  Vri—tz-k  8.00g data vm-103-disk-1
  swap                  pve  -wi-ao—-  8.00g
  vm-103-disk-1         pve  Vwi-a-tz–  8.00g data               13.88

顯示硬碟分割
# fdisk -l
Device      Start       End   Sectors  Size Type
/dev/sda1    2048      4095      2048    1M BIOS boot
/dev/sda2    4096    528383    524288  256M EFI System
/dev/sda3  528384 250069646 249541263  119G Linux LVM

Disk /dev/mapper/pve-root: 29.5 GiB, 31675383808 bytes, 61865984 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/pve-swap: 8 GiB, 8589934592 bytes, 16777216 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/pve-vm–103–disk–1: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes

掃描目前邏輯卷冊的狀態
# lvscan
  ACTIVE            ‘/dev/pve/swap‘ [8.00 GiB] inherit
  ACTIVE            ‘/dev/pve/root‘ [29.50 GiB] inherit
  ACTIVE            ‘/dev/pve/data‘ [66.74 GiB] inherit
  ACTIVE            ‘/dev/pve/vm-103-disk-1‘ [8.00 GiB] inherit
  inactive          ‘/dev/pve/snap_vm-103-disk-1_OK‘ [8.00 GiB] inherit

# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  pve    1   5   0 wz–n- 118.99g 14.61g

LVM

# fdisk /dev/sda
Disk /dev/sda: 60.0 GB, 60011642880 bytes
255 磁頭,63 磁區/磁軌,7296 磁柱,總計 117210240 磁區
單位 = 磁區 之於 1 * 512 = 512 位元組
磁區大小 (邏輯/實體):512 位元組 / 512 位元組
I/O 大小 (最小/最佳化):512 位元組 / 512 位元組
磁碟識別碼:0x0004176a

所用裝置 開機      開始         結束      區塊   識別號  系統
/dev/sda1   *        2048      208895      103424   83  Linux
/dev/sda2          208896     2314239     1052672   82  Linux 交換區/ Solaris
/dev/sda3         2314240    87859199    42772480   83  Linux
/dev/sda4        87859200   117209087    14674944    f  W95 Ext’d (LBA)

命令 (m 以獲得說明):n
起初 磁區 (87861248-117209087, 預設 87861248):
使用預設值 87861248
最後 磁區, +磁區 或 +大小{K,M,G} (87861248-117209087, 預設 117209087):+1G

命令 (m 以獲得說明):p

Disk /dev/sda: 60.0 GB, 60011642880 bytes
255 磁頭,63 磁區/磁軌,7296 磁柱,總計 117210240 磁區
單位 = 磁區 之於 1 * 512 = 512 位元組
磁區大小 (邏輯/實體):512 位元組 / 512 位元組
I/O 大小 (最小/最佳化):512 位元組 / 512 位元組
磁碟識別碼:0x0004176a

所用裝置 開機      開始         結束      區塊   識別號  系統
/dev/sda1   *        2048      208895      103424   83  Linux
/dev/sda2          208896     2314239     1052672   82  Linux 交換區/ Solaris
/dev/sda3         2314240    87859199    42772480   83  Linux
/dev/sda4        87859200   117209087    14674944    f  W95 Ext’d (LBA)
/dev/sda5        87861248    89958399     1048576   83  Linux
命令 (m 以獲得說明):t
分割區編號 (1-5): 5
十六進位編碼 (輸入 L 以列出編碼):8e
分割區 5 的系統類型已變更為 8e (Linux LVM)

命令 (m 以獲得說明):wq
分割表已變更!

呼叫 ioctl() 以重新讀取分割表。

警告:重新讀取分割表失敗並產生錯誤 16: 裝置或系統資源忙碌中。
內核仍然使用舊的表格。新的表格將於下一次
重新開機時使用,或是您執行 partprobe(8) 或 kpartx(8) 之後。
同步磁碟。[@more@]
# fdisk -l
Disk /dev/sda: 60.0 GB, 60011642880 bytes
255 磁頭,63 磁區/磁軌,7296 磁柱,總計 117210240 磁區
單位 = 磁區 之於 1 * 512 = 512 位元組
磁區大小 (邏輯/實體):512 位元組 / 512 位元組
I/O 大小 (最小/最佳化):512 位元組 / 512 位元組
磁碟識別碼:0x0004176a

所用裝置 開機      開始         結束      區塊   識別號  系統
/dev/sda1   *        2048      208895      103424   83  Linux
/dev/sda2          208896     2314239     1052672   82  Linux 交換區/ Solaris
/dev/sda3         2314240    87859199    42772480   83  Linux
/dev/sda4        87859200   117209087    14674944    f  W95 Ext’d (LBA)
/dev/sda5        87861248    89958399     1048576   8e  Linux LVM
/dev/sda6        89960448    92057599     1048576   8e  Linux LVM
/dev/sda7        92059648    94156799     1048576   8e  Linux LVM

將磁碟分割區轉換成實體卷冊裝置(Physical Volume)
# pvcreate /dev/sda5 /dev/sda6 /dev/sda7
  Physical volume “/dev/sda5” successfully created
  Physical volume “/dev/sda6” successfully created
  Physical volume “/dev/sda7” successfully created

掃描目前實體卷冊的狀態
# pvscan
  PV /dev/sda5                      lvm2 [1.00 GiB]
  PV /dev/sda6                      lvm2 [1.00 GiB]
  PV /dev/sda7                      lvm2 [1.00 GiB]
  Total: 3 [3.01 GiB] / in use: 0 [0   ] / in no VG: 3 [3.01 GiB]

將實體卷冊裝置組合成卷冊群組(Volume Group)
# vgcreate systemVG /dev/sda5 /dev/sda6
  Volume group “systemVG” successfully created

# vgscan
  Reading all physical volumes.  This may take a while…
  Found volume group “systemVG” using metadata type lvm2

顯示更完整的邏輯卷冊組成資訊
# vgdisplay systemVG
  — Volume group —
  VG Name               systemVG
  System ID            
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               2.00 GiB
  PE Size               4.00 MiB
  Total PE              512
  Alloc PE / Size       0 / 0  
  Free  PE / Size       512 / 2.00 GiB
  VG UUID               Ck34kQ-uRCu-7Sy5-Xuz3-707j-9do0-wfx6rq

建立邏輯卷冊裝置(Logical Volume)
-L 指定邏輯卷冊裝置的容量大小
-n 指定名稱
# lvcreate -L 500M -n www_LV systemVG
  Logical volume “www_LV” created

顯示邏輯卷冊裝置相關資訊
# lvdisplay /dev/systemVG/www_LV
  — Logical volume —
  LV Name                /dev/systemVG/www_LV
  VG Name                systemVG
  LV UUID                YMPbbQ-W3Hs-nFX1-GmUh-QsTE-0AT9-MsUgS4
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                500.00 MiB
  Current LE             125
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  – currently set to     1024
  Block device           253:0

格式化
# mkfs.reiserfs /dev/systemVG/www_LV
# mkdir /var/www
# mount -t reiserfs /dev/systemVG/www_LV /var/www
# mount | grep www_LV
/dev/mapper/systemVG-www_LV on /var/www type reiserfs (rw)
修改 /etc/fstab 組態檔
# vim /etc/fstab
/dev/systemVG/www_LV /var/www                 reiserfs       acl,user_xattr              0 0