======邏輯捲軸管理員LVM====== -名詞定義(關於PV、PE、VG、LV) -套件及工具程式 -實作流程 -擴充硬碟 -參考資料 ======名詞定義====== 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: dm-devel@redhat.com 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.gif|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.gif|Fdisk -l 結果}} [root@localhost]# fdisk /dev/hdb(中間過程過程略) [root@localhost]# fdisk /dev/hdc(中間過程過程略) [root@localhost]# fdisk /dev/hdd(中間過程過程略) 再觀察是否班更為8e {{:fdisk2.jpeg|Fdisk -l 結果}} 3.針對/dev/hdb1及/dev/hdc建立PV [root@localhost]#pvcreate /dev/hdb1 [root@localhost]#pvcreate /dev/hdc1 {{:pvscan.gif|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|vgdisplay.png}} 5.利用lvcreate分割testvg為LV [root@localhost]#lvcreate -l +62 -n testlv testvg [root@localhost]#lvdisplay 以下第一個紅框為新建立lv的裝置名稱為(/dev/testvg/testlv) 以下第二個紅框為lv容量 {{:lvdisplay.png|lvdisplay.png}}{{:lvdisplay.png|lvdisplay.png}} 6.格式化lv及掛載 [root@localhost]#mkfs.ext3 /dev/testvg/testlv [root@localhost]#mount /dev/testvg/testlv /mnt/lvm [root@localhost]#df -h {{:format.png|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|vgdisplay_testvg.png}} 4.增加63個PE到lv及觀看其容量變化 [root@localhost]#lvextend -l +63 /dev/testvg/testlv [root@localhost]#lvdisplay /dev/testvg/testlv {{:lvdisplay_testlv.png|lvdisplay_testlv.png}} 5.格式化增加的部份(額外做一個實驗,先增加幾個檔案到目前的/mnt/lvm中) [root@localhost]#touch test{1..5} {{:test12345.png|test12345.png}} {{:mount_df1.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|mount_df.png}} ======參考資料====== - http://linux.vbird.org/ 鳥哥 - http://docs.brad.tw/ Brad - http://benjr.tw/node/55 Logical Volume Manager_benjr * [[http://maxubuntu.blogspot.com/2010/05/lvm2.html#target8|LVM2學習筆記]]