2013年12月7日 星期六

RHEL - LVM

LVM 的概念

我想出一個比喻。有些宴會餐廳的隔間是彈性的,用很多片活動式的木板來隔間,隨時可以隔出不同的大小。假設有兩對新人要結婚,其中一對親友比較多,隔了一個可以容納 40 桌大小的宴會廳,另一對親友比較少,隔了20桌的宴會廳。一個宴會廳是一個 vg一張方桌是一個 pv 。(餐廳通常是圓桌,這裡為了比喻方便用方桌,假設一個方桌坐4個人)。

兩個方桌合併成一個新的桌子,可以坐6個人。合併後的桌子就是 lv 。從外觀來看,桌子要有多大,拉多少方桌過來合併就可以了。反正桌布蓋上之後,看不出來分別,只看到的一張大桌子。再假設 3 張方桌併成一個 8 人座的桌子,這8人桌也是一個 lv 。所以從外觀上來看,一個桌子就是一個 lv 。

回到 LVM,從使用觀點來看,一個 lv 對應一個分割區。但是從實體觀點來看,pv 才是真正的實體分割區。 vg 是一個大容器,是 pv 的集合,也是 lv 的集合。

還有另一個比喻。vg 視為倉庫。一個好幾層的貨架是 pv。每一層空間就是各別的 lv。 把兩個貨架(pv)並排在一起,同一層(lv)的空間就變大了。


新增可使用的 lv 分割區

建立一個傳統的分割區,並且把磁碟類型改成 8e
[root@server01 ~]# fdisk /dev/sda

讓分割區立即生效
[root@server01 ~]# sleep 5; partx -a /dev/sda

新增 pv
[root@server01 ~]# pvcreate /dev/sda3

新增 vg (設定 vg 名稱,然後設定一個 pv 分割區給它)
[root@server01 ~]# vgcreate myvg0 /dev/sda3

查詢 pv
[root@server01 ~]# pvs

新增 lv
[root@server01 ~]# lvcreate -L 80M -n mylv0 myvg0

查詢 lv
[root@server01 ~]# lvs

格式化 lv
[root@server01 ~]# mke2fs -j /dev/myvg0/mylv0

新增目錄
[root@server01 ~]# mkdir /lvm

掛載指令。把剛新增的lv掛載成這個目錄。
[root@server01 ~]# mount /dev/myvg0/mylv0 /lvm

查詢分割區
[root@server01 ~]# df -h

修改fstab (系統路徑、掛載路徑、分割區類型, defauls 1 2)
[root@server01 ~]# vi /etc/fstab
/dev/myvg0/mylv0    /lvm            ext4    defaults        1 2

把掛載指令寫到開機會執行的批次檔(本項跟 fstab 擇一即可)
[root@server01 ~]# vi /etc/rc.d/rc.local


加大 lv 容量

新增 pv
[root@server01 ~]# pvcreate /dev/sda5

將 pv 加入已存在的 vg
[root@server01 ~]# vgextend myvg0 /dev/sda5

增加空間
[root@server01 ~]# lvextend -L +512M /dev/myvg0/mylv0

增加之後要重新整理檔案系統的容量
[root@server01 ~]# resize2fs -p /dev/myvg0/mylv0

* 如果 vg 還有剩餘空間,不需要新增 pv。直接加大 lv 即可。


縮小 lv 容量
(假 lvtest 是由 /dev/sda5、/de)

將掛載的目錄卸載
[root@server01 ~]# umount /mnt/lvtest

調整大小 - 使用 lvreduce
[root@server01 ~]# lvreduce -L 512M /dev/vg0/lvtest

調整大小 - 使用 resize2fs
[root@server01 ~]# resize2fs -p /dev/vg0/lvtest

磁碟檢查
[root@server01 ~]# e2fsck -f /dev/vg0/lvtest

再調整一次大小
[root@server01 ~]# resize2fs /dev/vg0/lvtest 512M

* 接下來要做搬移 pv 。先說明一下  lv 跟 pv 應該是不相干,因為 lv 是跟 vg 要空間,而 vg 由哪些 pv 組成,是 vg 跟 pv 之間的事。但是既然 lv 縮小了,就有空間釋放出來,還是可以把 pv 分割區移出 vg 之外,另做它用。

搬移 pv (假設要把 sda6 移除,因此要把資料移到 sda5)
[root@server01 ~]#  pvmove /dev/sda6 /dev/sda

確認 PE 是否都是 FREE (Total PE = Free PE)
[root@server01 ~]# pvdisplay

將 pv 從 vg 移除
[root@server01 ~]# vgreduce vg0 /dev/sda6

將 pv 分割區還原為一般分割區
[root@server01 ~]# pvremove /dev/sda6 

刪除分割區
[root@server01 ~]# fdisk /dev/sda


其他相關操作

移除 lv
[root@server01 ~]# lvremove /dev/vg0/lvtest

移除 vg
[root@server01 ~]# vgremove vg1

移除 pv
[root@server01 ~]# pvremove /dev/sda6


調整 swap

卸載 swap
[root@server01 ~]# swapoff -a

[執行增加或縮小,參考上面步驟]

將 lv 分割區設為 swap
[root@server01 ~]# mkswap /dev/vg0/lvswap

掛載 swap
[root@server01 ~]# swapon /dev/vg0/lvswap

沒有留言:

張貼留言