使用者工具

網站工具


linux:lvm

邏輯捲軸管理員LVM

  1. 名詞定義(關於PV、PE、VG、LV)
  2. 套件及工具程式
  3. 實作流程
  4. 擴充硬碟
  5. 參考資料

名詞定義

1. LVM (Logical Volume Manager)

2. PV (Physical Volume)

與實體硬碟最直接關係,相當於硬碟中的Partition(分割區)

3. VG (Volume Group)

PV1+PV2+PV3+………+=VG

顧名思議就是許多PV整合為一個VG 每個 VG 最多僅能包含 65534 個 PE 而已。 如果使用 LVM 預設的參數,則一個 VG 最大可達 256GB 的容量

4. PE (Physical Extend)

LVM當中儲存資料的地方,換句話說是整個 LVM 最小的儲存區塊。

LVM 預設使用 4MB 的 PE 區塊,而 LVM 的 VG 最多僅能含有 65534 個 PE ,因此預設的 LVM VG 會有 4M*65534/(1024M/G)=256G。

5. LV (Logical Volume) a. 由VG分割成LV

b. 調整LV容量利用PE來達成。

c. LV 的裝置檔名通常指定為『 /dev/vgname/lvname 』的樣式。

套件及工具程式

1. 觀察系統是否安裝套件,另外Linux核心也必須支援LVM(以下用Centos 5.4版來參考)

觀察套件 [ali@andy ~]$ rpm -qa | grep lvm

 lvm2-2.02.46-8.el5_4.2
 system-config-lvm-1.1.5-1.0.el5_4.1

核心支援觀察 [ali@andy ~]$ dmesg | grep -i Device-mapper

 device-mapper: uevent: version 1.0.3
 device-mapper: ioctl: 4.11.5-ioctl (2007-12-12) initialised: [email protected]
 device-mapper: dm-raid45: initialized v0.2594l
 device-mapper: multipath: version 1.0.5 loaded

參考依據:http://sources.redhat.com/dm/

2. LVM需用到的工具程式

[ali@andy ~]$ rpm -ql lvm2

  /etc/lvm
 /etc/lvm/archive
 /etc/lvm/backup
 /etc/lvm/cache
 /etc/lvm/cache/.cache
 /etc/lvm/lvm.conf
/etc/rc.d/init.d/lvm2-monitor
/lib/libdevmapper-event-lvm2mirror.so
/lib/libdevmapper-event-lvm2mirror.so.2.02
/lib/libdevmapper-event-lvm2snapshot.so
/lib/libdevmapper-event-lvm2snapshot.so.2.02
/sbin/lvm
/sbin/lvm.static
/sbin/pvscan
/sbin/vgchange
/sbin/vgscan
/usr/include/lvm2cmd.h
/usr/lib/liblvm2cmd.a
/usr/lib/liblvm2cmd.a.2.02
/usr/lib/liblvm2cmd.so
/usr/lib/liblvm2cmd.so.2.02
/usr/sbin/fsadm
/usr/sbin/lvchange
/usr/sbin/lvconvert
/usr/sbin/lvcreate
~略~

3. 以下整理常用的工具指令

功能 PV階段 VG階段 LV階段
搜尋(scan) pvscan vgscan lvscan
建立(create) pvcreate vgcreate lvcreate
列出(display) pvdisplay vgdisplay lvdisplay
增加(extend) vgextend lvextend(lvresize)
減少(reduce) vgreduce lvreduce
刪除(remove) pvremove vgremove lvremove
改變容量(resize) lvresize
改變屬性(attribute) pvchange vgchange lvchange

(資料來源:鳥哥Linux私房菜 http://linux.vbird.org/)

實作流程

1. 圖示分析

lvm實作流程圖

資料來源:鳥哥Linux私房菜 http://linux.vbird.org/

2. 大致步驟(以VirtualBox來模擬LVM過程)

 i.利用fdisk工具來分割3獨立硬碟(或分割區)及改變System ID 為8e
 ii.利用pvcreate把3個獨立硬碟建立成PV
 iii利用vgcreate整合2顆各為512MB成為VG
 iiii利用lvcreate把整合好的VG成為LV
 iiiii格式化LV來建立檔案系統並掛載起來(mount)

建立8e System_Id

[root@localhost]# fdisk -l

Fdisk -l 結果

[root@localhost]# fdisk /dev/hdb(中間過程過程略)

[root@localhost]# fdisk /dev/hdc(中間過程過程略)

[root@localhost]# fdisk /dev/hdd(中間過程過程略)

再觀察是否班更為8e

Fdisk -l 結果

3.針對/dev/hdb1及/dev/hdc建立PV

[root@localhost]#pvcreate /dev/hdb1

[root@localhost]#pvcreate /dev/hdc1

pvscan

4.建立VG.把/dev/hdb1及/dev/hdc1合併並命名為testvg

[root@localhost]#vgcreate -s 16M testvg /dev/hdb1 —>指定每個PE為16MB 且命名為 testvg

[root@localhost]#vgcreate -s 16M testvg /dev/hdc1 —>指定每個PE為16MB 且命名為 testvg

[root@localhost]#vgdisplay testvg —→觀看total PE的數目,這個數目值要被LV相關指令所使用

vgdisplay.png

5.利用lvcreate分割testvg為LV

[root@localhost]#lvcreate -l +62 -n testlv testvg

[root@localhost]#lvdisplay

以下第一個紅框為新建立lv的裝置名稱為(/dev/testvg/testlv)

以下第二個紅框為lv容量

lvdisplay.pnglvdisplay.png

6.格式化lv及掛載

[root@localhost]#mkfs.ext3 /dev/testvg/testlv

[root@localhost]#mount /dev/testvg/testlv /mnt/lvm

[root@localhost]#df -h

format.png

擴充硬碟

現在要外加1GB的硬碟/dev/hdd1

1.先分割成PV

[root@localhost]#pvcreate /dev/hdd1

2.利用vgextend指令加入testvg

[root@localhost]#vgextend testvg /dev/hdd1

3.觀看/dev/hdd1 加入testvg的使用容量

[root@localhost]#vgdisplay testvg

多增加了63個PE(/dev/hdd1)

vgdisplay_testvg.png

4.增加63個PE到lv及觀看其容量變化

[root@localhost]#lvextend -l +63 /dev/testvg/testlv

[root@localhost]#lvdisplay /dev/testvg/testlv

lvdisplay_testlv.png

5.格式化增加的部份(額外做一個實驗,先增加幾個檔案到目前的/mnt/lvm中)

[root@localhost]#touch test{1..5}

test12345.png

mount_df1.png

[root@localhost]#lvextend -l +63 /dev/testvg/testlv

[root@localhost]#resize2fs /dev/testvg/testlv

[root@localhost]#mount /dev/testvg/testlv /mnt/lvm

[root@localhost]#df -h

mount_df.png

參考資料

linux/lvm.txt · 上一次變更: 2013/07/06 01:28 (外部編輯)