lvm線上擴容
pv 實體卷帶有邏輯卷中繼資料的實體裝置:分區、硬碟、鏡像檔案、raid裝置等
vg 卷組由多個實體卷組成,容量是所有實體卷的累計,提供容量的存儲池
lv 邏輯卷真正操作的對象,對它進行格式化、挂載
盤碟硬碟分區
pv\/lv
vg
pv/\lv
動态調整容量、條帶化、鏡像、快照
例子1:建立邏輯卷
1、pv
# pvcreate /dev/sda7 /dev/sda8
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda7 lvm2 -- 1.92G 1.92G
/dev/sda8 lvm2 -- 1.92G 1.92G
# pvdisplay
2、vg
# vgcreate mysql-vg /dev/sda7
Volume group "mysql-vg" successfully created
# vgs
VG #PV #LV #SN Attr VSize VFree
mysql-vg 1 0 0 wz--n- 1.91G 1.91G
# vgdisplay
# vgextend mysql-vg /dev/sda8 《---增加pv到vg中,進行擴容
Volume group "mysql-vg" successfully extended
mysql-vg 2 0 0 wz--n- 3.83G 3.83G
3、lv
# lvcreate -n mysql-lv -L 1G mysql-vg
Logical volume "mysql-lv" created
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
mysql-lv mysql-vg -wi-a- 1.00G
# lvdisplay
# ll /dev/mysql-vg/mysql-lv
lrwxrwxrwx 1 root root 31 11-15 16:27 /dev/mysql-vg/mysql-lv -> /dev/mapper/mysql--vg-mysql--lv
# mkfs.ext3 /dev/mysql-vg/mysql-lv
例子2:如何線上調整lv的容量
一、增加容量
# mount /dev/mysql-vg/mysql-lv /mnt
# lvextend -L 2G /dev/mysql-vg/mysql-lv 《---邏輯卷是正在挂載使用
# resize2fs /dev/mysql-vg/mysql-lv
# df -h
檔案系統 容量 已用 可用 已用% 挂載點
/dev/sda2 39G 27G 11G 73% /
/dev/sda1 190M 169M 12M 94% /boot
tmpfs 1009M 0 1009M 0% /dev/shm
/dev/sda5 94G 61G 29G 68% /vmware
/dev/sda6 46G 23G 21G 53% /soft
/dev/mapper/mysql--vg-mysql--lv
2.0G 34M 1.9G 2% /mnt
二、裁減容量
前提:確定裁減後容量要不比原來裝置已用的容量要大
1、取消挂載,停止使用
# umount /dev/mapper/mysql--vg-mysql--lv
2、手工檢測檔案系統是否有錯
# fsck -f /dev/mysql-vg/mysql-lv
3、調整檔案系統的容量
# resize2fs /dev/mysql-vg/mysql-lv 1.50G
4、裁減容量
# lvreduce -L 1.50G /dev/mysql-vg/mysql-lv
WARNING: Reducing active logical volume to 1.51 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mysql-lv? [y/n]: y
Reducing logical volume mysql-lv to 1.51 GB
Logical volume mysql-lv successfully resized
mysql-lv mysql-vg -wi-a- 1.51G
5、再次檢查檔案系統
fsck -f /dev/mysql-vg/mysql-lv
mkfs.ext3 /dev/mysql-vg/mysql-lv 裁減容量需要格式化空間
mount /dev/mysql-vg/mysql-lv /mnt
-------------------------------------------------------------------------------
例子1:實作LVM條帶化
pvcreate /dev/sda7 /dev/sda8
PV VG Fmt Attr PSize PFree
/dev/sda7 mysql-vg lvm2 a- 1.91G 936.00M
/dev/sda8 mysql-vg lvm2 a- 1.91G 1.91G
建立:
# lvcreate -L 300M -n webroot -i 2 mysql-vg
Using default stripesize 64.00 KB
Rounding size (75 extents) up to stripe boundary size (76 extents)
Logical volume "webroot" created
-i:此處寫lv用到的pv的數量,不能超過所在vg的pv數量,一般設定與vg的pv個數相同
-I:條帶單元大小,機關Kb
-L:lv的大小,預設為Mb,可帶機關G,M,K
-l:小寫L,配置設定給lv的LE個數,對應于VG中的PE,在上條vgdisplay的輸出中可看到VG中一共有1533個PE。
-n:自定義lv的名字,預設從lvol0開始往下排。
/dev/sda7 mysql-vg lvm2 a- 1.91G 784.00M
/dev/sda8 mysql-vg lvm2 a- 1.91G 1.77G
驗證
# iostat -dk sda7 sda8 2
例子2:實作lvm鏡像
# lvcreate -L 500M -n uplv -m 1 mysql-vg
Logical volume "uplv" created
-m 1 把資料儲存到一個原始裝置,明且鏡像儲存到另外一個原始裝置。
至少需要三個原始裝置,其中還有一個儲存鏡像日志
删除邏輯卷
# lvremove /dev/mysql-vg/uplv
例子3:實作lvm快照
快照卷不支援鏡像lv
對一個普通的lv建立快照
# lvcreate -L 100M -n mysql-lv-sp -s /dev/mysql-vg/mysql-lv
Logical volume "mysql-lv-sp" created
挂載,看到的資料和mysql-lv是一樣
# mount /dev/mysql-vg/mysql-lv-sp /mnt/mysql-lv-sp/
根據快照原理,一般用于快速備份。
例子:使用快照卷實作mysql的"熱"備份
前提:mysql資料檔案儲存在邏輯卷
鎖表
mysql> flush tables with read lock;
建立快照
解鎖
mysql> unlock tables;
挂載快照卷,拷貝資料到備份目錄
==========================================