lvm在線擴容

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


# vgs

 VG       #PV #LV #SN Attr   VSize VFree

 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


# lvs

 LV       VG       Attr   LSize Origin Snap%  Move Log Copy%  Convert

 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

# pvs

 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開始往下排。


# pvs

 PV         VG       Fmt  Attr PSize PFree  

 /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;


掛載快照卷,拷貝數據到備份目錄



# lvcreate -L 100M -n mysql-lv-sp -s /dev/mysql-vg/mysql-lv

 Logical volume "mysql-lv-sp" created


==========================================


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章