Linux LVM 完整說明
LVM架構圖
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCt4rtnekKh3lEKaqdESj7KZojHn_XGCcdux5i3MATmqeTujLZm0hC5npVCmwxxled3i5e5fwZODk_Pko4PFBE_sCnlKZ5_sqV78SYe_DRw7svA8RQYOv5Yp-HPx6qT5apI8PDl27Fq6I/s320/147879781_m.jpg)
PV(Physical Volume)實體卷冊
一般指實體硬碟disk partition
VG(Volume Group)卷策群組
由數個PV組成
LV(Logical Volume)
由VG中劃分出來,可格式化並掛載(實際存放資料)
PE(Physical Extents)實體單位
建立VG時決定大小,預設為4M
開始建立LVM
先用fdisk指令建立LVM的分割區,如下如所示
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgToj9BoXbD8pqlbfZhIZCFq8KpOJNJwVDz1CP8SCBDKlI-r_ihsuzg7kaeVlSAQl7Ql3dELTHrT8vadbUCpmKX16Xbi0Gr7j3GE9cjeXgE78zBft0k_v5R72j5s2-7WIqLvhHV2Q7JLL0/s320/147880997_m.jpg)
PV規畫
指令
pvcreate:將實體分割區建立成pv
pvscan:搜尋系統具有pv的磁碟
pvdisplay:顯示系統上的pv狀態
pvremove:移除分割區上的pv屬性
先查看目前系統是否有pv磁碟,指令pvscan
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheG1tm6wmNeT9hDMclN2_ArG7XYwnSNoIJJXYJ61Zx17FPIxX_IuY4leDVpaXIQ9T_EXtiHJo072ENUiQ-hjTmxFnqhU9z7R125b4wvGpqwLrJSVAu1hFxTIpjS_b9c2tpAMd8OhBQjwU/s320/147883689_m.jpg)
建立分割區sda5和sdb5為pv,指令pvcreate /dev/sda5 /dev/sdb5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhonPM8khm191c_kYyAaEevCXOYPDaF6TJkrNwuxWZPTvUr_6i30zLvUDt78IqeSZjjCPOiiiOak9dBMxoJ_cQquLOhIK1w_tYgVwJkU5wvqJdAkkbikjLh5zzaK0lCKTZzBSKvCp5iNT0/s320/147883691_m.jpg)
再查看系統pv磁碟,出現剛剛所建立的sda5與sdb5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhby9RzpD24HkvtVG-lVVi10pdouPLvyLiMDlDY800QzfAYBt1Qc-WxHK8deAJ3vzF8FuUGmMebgK5RqODHIXfd1MdhK8GxbxXnF0xoyzIjyXxYQ3JSQyMBiARIvNs9n-3tbrrBVg7hOSk/s320/147883693_m.jpg)
查看目前系統的pv狀態,指令pvdisplay
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbQjz9lVlDoZe8imjXYSFXszG8gz3Up_2hoE_xXvW-pTzu7na8YfxYnhxRnffbdcJrZbErZnjuGJCTlNEUS3XgtmCKYLgRDC6M8dKeRsLp2ArkYjhBrlUdMQiZSx4cxNEJz05dk8giOxg/s320/147883695_m.jpg)
移除pv,指令pvremove /dev/sda5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqmjxH9yUfXJzfqnj1P1gUwCS0alNrHOi685YyBXHQvx-YuHzPrsrktmlUjyjbSlahaDsiYX4KZoWUiF-ixipv4ftis5ot2KrWJFZ0NWI46V9ue4W-auhYBxvrZlWTir_h9_NMXedlV28/s320/147888618_m.jpg)
VG規劃
指令
vgcreate:建立系統上的vg
vgscan:搜尋系統上是否有vg存在
vgdisplay:顯示系統上的vg狀態
vgextend:在vg內增加額外pv
vgreduce:在vg內移除pv
vgchange:設定vg是否啟動
vgremove:刪除vg
先建立系統的vg,指令:vgcreate -s 8m testvg /dev/sda5 /dev/sdb5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVX9-LAuCNAjXVkwm5Di4ZraFriu0sVEdgSh05WvKujrmk9TNYrNfBL-2XgGLhDDK59weQo4h35JKWNCPoUXmqANxMtI7B72yCyjti9Rp70c4bovN7TLDqL5JyqT5umw8E7BrguG2kqTc/s320/147891921_m.jpg)
指令說明:-s後面指定pe的大小,若未指定大小預設為4MB,"testvg"是指vg的名稱可自行定義
sda5,sdb5為要加入vg的裝置
注意pe有最多數量限制,最高為65534個,如果預設pe大小為4MB,則最高上限為256GB
查看系統上vg,指令:vgscan
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinAjImxss-VKOi7fDRbNz2wv_BD-hbMa30zu_s-vp5CeNC_WKtHSY1qv9d-kNOkUJ5W4spmx_pcGcHxVOx-Wm0VxS4BOfKh0zQThPh7w4cBIkOiyHZ3xxjekZmqeZjD_HFN_zpMkXY6sY/s320/147891923_m.jpg)
查看系統pv磁碟狀態
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAmGlT9fBiJH8AeYMoXDw34Bah71_hXLA8qNm_3tHwwO6o9UxtIkh_r0kIjQAX6F9JTpDNNSgTPXNIOCHhuS7zRNQUYUWAcCBwSoMHD41Zgzl1gZyJyZyMlZfYXrL7LATjYZ0nfYZsa5k/s320/147891924_m.jpg)
查看vg狀態,指令:vgdisplay
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg48mdZOVsgmoonHgkKq0Z_UbeJxK6py1Nn4tDka96oaXyoRZT4yb2RRrACpah1bfqxjhEV_29VLMzvtPfe6BCcDF4QYk-F-kvoAXOlmz4TMOOVCN1KNbV4KakM1KvWbbWeuftiQvQKCE8/s320/147891925_m.jpg)
將pv加入vg,指令:vgextend testvg /dev/sdc1
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguw1ZJzlqPijwLtXPW73nre5LcbVoGUYiFzbRPsXwb3Cy01Ut0PD51zjajals1_z3HuD1IPfesaCR8aayHp6V6TkTjkfehbNYKnHiypa4qsnBBDDhrhFVrhmOTqZPjgVW29OSc4EnV9YE/s320/147893212_m.jpg)
查看vg狀態
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqytexoTMx17RLw6jwHU0BFUv1Te5789ddGx7ZkGgXeJuF4hJpDMOiOrwdX5uI4qXjmSyYTFEjTAjCgWitMqMhKWeCe4KbnRsV06VU8KqDTiYa9jzsKHzI-G-bDlrlLQMaLBdrMS0Ntrg/s320/147893214_m.jpg)
注意:若重開機後發現vg沒啟動可用指令:vgchang -a y啟動
LV規劃
指令
lvcreate:建立lv
lvscan:查詢系統上的lv
lvdisplay:顯示系統上的lv狀態
lvextend:增加lv容量
lvreduce:減少lv容量
lvremove:刪除一個lv
lvresize:調整lv容量大小
建立lv,指令:lvcreate -L 5g -n testlv testvg
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjLeYPRcReMp4TNQydlEve_y_oFLObpTJlT6SCCIwlFXd4rWmmR-WJNqxpAa0ozXBipZJmHIpXG8Da4pYwuSQ7atBOZPI4hmngy4RjEvnm21lCYyUkQpZX1JJ5urjqqjaDe6Hbc6kozyU/s320/147933356_m.jpg)
指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
-n:後面接lv的名稱,可自行定義
最後面須指定要從哪個vg建立lv
建立出來的lv儲存在/dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGmto3aSDt0i8jvz_DbBPM7PlLBjsgzP8vnPoC8F1eeaqSKOLpqf7DvOeViLP4NCIXbtC-lvZRxwR-mqONhdcOyTXg2dDpChxCJmiou9giby0XzotGM-y2ug29WUfk9E9w_pEVxWZhvyE/s320/147934012_m.jpg)
查看目前系統lv狀態,指令:lvdisplay
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiezKZr9Z17niArl08gMn0sY_sjgf1i1lLChfjAq2c0V_VbqNqqvm9vj_iTRL9Jiv71VYUUOKBNmgFGCE2UOgwgmyXPgZ-7PNAarI5b9mfcnfxiM4QS7SvwIb15bDkRC8BmAq53EKGVSFc/s320/147934615_m.jpg)
格式化與掛載
將lv格式化成ext3格式,指令:mkfs -t ext3 /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF0nIEotCcRIlHeFWjAgShI0R_H_imqDE3A5ZVPbCZ9JYh2qE6NbP9D6QfeHsGVCLJFCXQ9ZSSpmFyeo8xFBgxIxuygjqph9HQHTFPlpIq5uW40kBvzNA5uFQUPc9cVZHof8DPiAw8v_U/s320/147935076_m.jpg)
建立目錄並掛載,指令:mkdir /mnt/testlvm && mount /dev/testvg/testlv /mnt/testlvm
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjYVoAo-_x2pqreyBdMHLYnnDSWrNXrLBMvUc6IpF-GYlfXkOGK7FeQ5ZjZjXQ_EpsRjzNhwhsikanuRWYsbqLeO-10YxEIDHuy5iexTEQIlrwt3OWGIIFLLHzOCj1469kVAyHawkz-BU/s320/147935639_m.jpg)
查看磁碟容量,指令:df -h
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Mo6_6IQwMuiDsiChg89JaRSSQMwfkS-HaLL8S10bV-TbWg4c1FAjGy8Lm2HFaZB3sntzLESX04dnl8Li06gzx8MCkSCBDg-PsTLr5zTbSWSgbJr-b1KK9c7SQhbQCkyTZEI-0MPHm4I/s320/147936126_m.jpg)
增加LV容量
指令:lvresize -L +7g /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9HHndFNsvGQJ4hrGpPT0I0ReDgbej3Z-YnlNZzwOafJPNWG3V-BcFUHPWeXlbWoDGTM-21Gf-nz_LMOcEl2XWMtU-FCCSj0DMnpHAKkzw7bOLtsv4MARQ_aGlHWDP-eo0NNsmujMjxjA/s320/147937720_m.jpg)
指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
最後面要指定lv的完整名稱路徑
注意-L後面要有"+"才是增加容量,如果沒有使用"+"則為修改lv容量
查看系統lv狀態
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWZL8hAz0laqDCYpT9Cz2sBQW87pWROp3tz75Yua20DFEUBQUme89KdLWvhToggXxj7ul_TmcsGhTv-AKl2hmktwgRuDCI_URr2R0-Fl-AUR5lTS5dtkh8qrHzFXqR-e6ZtHJC5-T6Wb4/s320/147938110_m.jpg)
此時已掛載的lv使用df查看容量依然只顯示5G,使用resize2fs指令修改即可
指令:resize2fs /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy5LNbQ87MipRPQHM5699AXZIJP2yYklDJ2FJzFtOp8RsErMgjznuRfFupRecjXndTUfYHFCaIFWlNnyIsborQNN7fhlop2zsBIsHiwTOn4qKSIgqJXsYtCCx4s5aKLK46Bl5F8epf98o/s320/147938292_m.jpg)
指令說明:最後面要指定lv的完整名稱路徑
使用df -h指令查看磁碟容量
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEAX-otq3og2CfgupSKcX_nGgt-PEEP1-Pe-p53Ug20k2Mc6QtwslwndfdfXDnqD0Ikq46kU-cwq6XHM344rcSvyRrD4MzIzZYDvuFginfWrqxxdi7D0F4iRYHplluc-UOGI_b58xtBh8/s320/147938714_m.jpg)
減少LV容量
注意變大是先lvextend(或lvresize)後再resize2fs,變小則先resize2fs在lvreduce
容量變小必須在卸載情況下再能處理
先卸載lv掛載磁區,指令:umount /mnt/testlvm
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4qyhUbEeNfa886CSBilCJBxdSk-BQbWB-ff9wFCFEqzJFGhr1a5yFuHf6_CUU8tEvDFJAOH9nldvDEVqIp1Ze8vjOfBbwk53jrVrKZ73gJEVjYkfrYf7V5qlnn4qBGlYzZ0vcBsjgfm4/s320/147940295_m.jpg)
執行磁碟掃描,指令:e2fsck -f /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLSZdpCYsv1srvV8TYEqzR3CgAFLN7BM0YJTicb2DlLaHfNh5HPpzjf6W3kmwPHTUsXj9XTQy2Vi7E_9qSz6NCF-7MnmTVEEo7wGi5IhzLIta5P5vokIzV8ngkBsCG7EK46DHtVWt7-aQ/s320/147940486_m.jpg)
使用resize2fs指令將磁碟容量減少:指令:resize2fs /dev/testvg/testlv 10000M
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE8wVzzXcpGZSZAIGLMzB4jKCsyHS4fRqYaScKu5RMzGRnamRXkAcV-YBDiCqgGyaaUYM8XIP6n89AMvKP1eMf9EgC9oayGBs8hGFBFPkqAWWvPJ6Fi7ztreJv-UzdstayeRvRHybyA5k/s320/147940837_m.jpg)
指令說明:最後面指令容量,原本12G減少成10G
重新掛載目錄後查看磁碟,容量已從原本12G變成10G
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyWUaXKzVM4s5JcrRPFR29PCCqGKrMMdiN1GI-ZZmkhumay_ANoUFBV1sySpS4v1FYcC2cG84yq736v7ELYdB5ZfpDlc2w9lzPrHnOOaQLn3Zr5PxDDhs1fs0g1buO1_PEqhxtMTTYHmc/s320/147941065_m.jpg)
此時使用lvdisplay指令查看lv的容量依然在12G,使用lvreduce指令減少lv的容量
指令:lvreduce -L 10g /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5uSqtNyD49AbHIGE96ua8LBiKGZYtU3RbMM5MGeXh1mqhq1Ai0geCAxtH3Y3UbqbgJ7n1PknJQ6GjPm1-Fuh-RWoS9_dgfDV7bldZAzFuNSFh58f162S0qHSXYrfkOzxDusoQGXMFJFw/s320/147941285_m.jpg)
指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
最後面要指定lv的完整名稱路徑
使用lvdisplay指令查看lv的容量已經變成10G
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyWUaXKzVM4s5JcrRPFR29PCCqGKrMMdiN1GI-ZZmkhumay_ANoUFBV1sySpS4v1FYcC2cG84yq736v7ELYdB5ZfpDlc2w9lzPrHnOOaQLn3Zr5PxDDhs1fs0g1buO1_PEqhxtMTTYHmc/s320/147941065_m.jpg)
從VG中移除PV
從下圖中看到要移除vg中的sda5,可是系統有使用到sda5的pe,sdb5未使用到任何pe
必須先將sda5的pe移動到sdb5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi27s4mlYujl8KQZ46GjWJoVJEbKWPMR_vkRHGyFIph86tfD7GUkWPseXX9ExGjyCVPzV_VKFL0nnb5f3cv50A_0x0XOBKEzHTfPIgfZH9gh3S5YsfjCAyicMwNAjDXPoQBLWMgmieL95Q/s320/147942385_m.jpg)
使用pvmove指令,將sda5的pe移動到sdb5,指令:pvmove /dev/sda5 /dev/sdb5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3WHuX_xVeU35L61VaRTj99BSZ41XG6X2UD-M9GvgC86EbNpA9jQAZDrXFIghX553ZBpcDnzwEFaBt1hdGUnEnmktWiw7zIH8qSLKqo1mXAXpnwWTijT09rEt_NElOV3xXFR-2tdXkQ-c/s320/147942700_m.jpg)
從vg中移除pv,指令:vgreduce testvg /dev/sda5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnTMmt6Ud1nTrTX9bHuirUOIk3Nxvl3tisNy92idZ2dPhRPDetj0tt-3PlY-Y3SiQGm1ef8gfxm2tQ_ch4AMw_HpeAxDKy0T6Ka9_bD2WJJhacyBQmvJn00EBWH0zuIj4COL9J9UyAxtY/s320/147942802_m.jpg)
指令說明:"testvg"為vg的名稱,最後面接裝置名稱
使用pvscan及vgdisplay查看狀態
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9jv-tffZlamaBEGTkl_tZjrG8u5wvXtK5WBGgAQGiKjPl8YlHbkugg8nF1eTZ_u2yFD4VuiK_yZ_vS6elhNIinGeJQgVP25oxyUMexCRQLQIWWDwWlNusFTKNK4sgohGuCUIdHNEiVow/s320/147943404_m.jpg)
最後移除sda5的pv,指令:pvremove /dev/sda5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwjvX231TJAp6dpt4j2J-AX5t_TE_OExw8frE4JAma11qgxcZjY4VzAYLwEkGttAzTHz9hA0WltzM5vyB6tx-FDIYVFc4BRRrPmyirVDzvJ_e1hxYDhHZ77vDZQSppXGTzNAYBF250gtw/s320/147943562_m.jpg)
建立快照
先用vgdisplay指令查看是否有足夠的pe和容量,因為快照占用vg的容量
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipdh4NFtPmGwy9vCQyyGQOAeFwwAtOjMu-np5YtswuPjiHggK4PGYmElBRu8SYVclWXZ8N6zVNMM8i60jlE6Q6fX-kPBcQ42yeJlk17FpYcIoQmXhVtrSkuvrW3zoClBF3aGZTQVrlizQ/s320/147951604_m.jpg)
使用lvcreate建立lvm的快照,指令:lvcreate -L 1g -s -n testsnap /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhikqqjY4z6d_Ks_Ty6CdSKWKSHlPIuy0l1T1ciujPcIUfVkYYTp8adFMF-MMWytbDweTbmdWPqL2dnLgxgN_rvPeGGZOMAF9Skt1_Any-1UmGlFXcRW-HzKm1AZ7TIgYQNIlxoxbwqLY/s320/147951711_m.jpg)
指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
-s:建立快照
-n:建立名稱,可自行定義
最後面要指定lv的完整名稱路徑
如果在建立快照時無法建立出現以下訊息
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYHz5bRsBlfskDy4Ns5hAd6oGqoKZLLUa0YgcxbvV7V_nDxDPDNqX8_-1f3N6mGKQesdEFLANZ3OToaJ0tGDDD0xSn5RjVlmqt9Z5ZOJ8Cj1xKDGV9aXP2y1jnYNsit3uR_uH6dkOnmKs/s320/147991563_m.jpg)
表示snapshot模組沒有載入所造成,執行指令:modprobe dm-snapshot即可
查看快照狀態,指令:lvdisplay
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjo1RWQ0SbOBiaNgiGZGNGu0MnvwWhwZtENTDKCuzb2Ei1kBTGwJ4_T6cCUlEBDOMIbFgTOyfKFoM-2FvFGHPFSHs_AxljB9Msm2oDVZzGuNVIBBBonob89OmFgRUg62WbwgHYd_GpRv0/s320/147991980_m.jpg)
移除快照,指令:lvremove /dev/testvg/testsnap
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0I6czZYVqwG1s24Dh4ZYuneNyC5cCTNNBtcTU7t-c2s7ONPMhILlMVc9LdfX5EAAWFWtQKyppQCW0Ibx8uMPBpcwusQJVv1L6xhW8keKa7KimS7Z3dIagmTJPFlFuLeOVCwFBElke_CM/s320/147992288_m.jpg)
LVM相關指令整理,圖片來源:鳥哥網站
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOropgGk_Wosl7_Cnt4uvtdLin7UEujltL6VlFTHuKLDmDAS-cUFiRA_A2CCA7JXrcjj_kFXcF-VvtA7SGujf-ACpRBvBHaXF-dfTOkJ0fUikidOXv-2oiUWifQKAl_cXh7QGEyc7Iq2Y/s320/147992750_m.jpg)
系統重新安裝後要再加入原有LVM步驟如下
打 fdisk -l 與 pvscan 應該要可以看到 pv 項目存在
vgscan 應該可以 scan 出 voulme group,若沒看到先 vgchange -ay 跑看看 active vg 項目
如果狀態變成exported請先打vgimport -a
若 vgchange -ay 成功後所有 lv 應該都會出現,那就可以進行一般的存取
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCt4rtnekKh3lEKaqdESj7KZojHn_XGCcdux5i3MATmqeTujLZm0hC5npVCmwxxled3i5e5fwZODk_Pko4PFBE_sCnlKZ5_sqV78SYe_DRw7svA8RQYOv5Yp-HPx6qT5apI8PDl27Fq6I/s320/147879781_m.jpg)
PV(Physical Volume)實體卷冊
一般指實體硬碟disk partition
VG(Volume Group)卷策群組
由數個PV組成
LV(Logical Volume)
由VG中劃分出來,可格式化並掛載(實際存放資料)
PE(Physical Extents)實體單位
建立VG時決定大小,預設為4M
開始建立LVM
先用fdisk指令建立LVM的分割區,如下如所示
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgToj9BoXbD8pqlbfZhIZCFq8KpOJNJwVDz1CP8SCBDKlI-r_ihsuzg7kaeVlSAQl7Ql3dELTHrT8vadbUCpmKX16Xbi0Gr7j3GE9cjeXgE78zBft0k_v5R72j5s2-7WIqLvhHV2Q7JLL0/s320/147880997_m.jpg)
PV規畫
指令
pvcreate:將實體分割區建立成pv
pvscan:搜尋系統具有pv的磁碟
pvdisplay:顯示系統上的pv狀態
pvremove:移除分割區上的pv屬性
先查看目前系統是否有pv磁碟,指令pvscan
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheG1tm6wmNeT9hDMclN2_ArG7XYwnSNoIJJXYJ61Zx17FPIxX_IuY4leDVpaXIQ9T_EXtiHJo072ENUiQ-hjTmxFnqhU9z7R125b4wvGpqwLrJSVAu1hFxTIpjS_b9c2tpAMd8OhBQjwU/s320/147883689_m.jpg)
建立分割區sda5和sdb5為pv,指令pvcreate /dev/sda5 /dev/sdb5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhonPM8khm191c_kYyAaEevCXOYPDaF6TJkrNwuxWZPTvUr_6i30zLvUDt78IqeSZjjCPOiiiOak9dBMxoJ_cQquLOhIK1w_tYgVwJkU5wvqJdAkkbikjLh5zzaK0lCKTZzBSKvCp5iNT0/s320/147883691_m.jpg)
再查看系統pv磁碟,出現剛剛所建立的sda5與sdb5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhby9RzpD24HkvtVG-lVVi10pdouPLvyLiMDlDY800QzfAYBt1Qc-WxHK8deAJ3vzF8FuUGmMebgK5RqODHIXfd1MdhK8GxbxXnF0xoyzIjyXxYQ3JSQyMBiARIvNs9n-3tbrrBVg7hOSk/s320/147883693_m.jpg)
查看目前系統的pv狀態,指令pvdisplay
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbQjz9lVlDoZe8imjXYSFXszG8gz3Up_2hoE_xXvW-pTzu7na8YfxYnhxRnffbdcJrZbErZnjuGJCTlNEUS3XgtmCKYLgRDC6M8dKeRsLp2ArkYjhBrlUdMQiZSx4cxNEJz05dk8giOxg/s320/147883695_m.jpg)
移除pv,指令pvremove /dev/sda5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqmjxH9yUfXJzfqnj1P1gUwCS0alNrHOi685YyBXHQvx-YuHzPrsrktmlUjyjbSlahaDsiYX4KZoWUiF-ixipv4ftis5ot2KrWJFZ0NWI46V9ue4W-auhYBxvrZlWTir_h9_NMXedlV28/s320/147888618_m.jpg)
VG規劃
指令
vgcreate:建立系統上的vg
vgscan:搜尋系統上是否有vg存在
vgdisplay:顯示系統上的vg狀態
vgextend:在vg內增加額外pv
vgreduce:在vg內移除pv
vgchange:設定vg是否啟動
vgremove:刪除vg
先建立系統的vg,指令:vgcreate -s 8m testvg /dev/sda5 /dev/sdb5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVX9-LAuCNAjXVkwm5Di4ZraFriu0sVEdgSh05WvKujrmk9TNYrNfBL-2XgGLhDDK59weQo4h35JKWNCPoUXmqANxMtI7B72yCyjti9Rp70c4bovN7TLDqL5JyqT5umw8E7BrguG2kqTc/s320/147891921_m.jpg)
指令說明:-s後面指定pe的大小,若未指定大小預設為4MB,"testvg"是指vg的名稱可自行定義
sda5,sdb5為要加入vg的裝置
注意pe有最多數量限制,最高為65534個,如果預設pe大小為4MB,則最高上限為256GB
查看系統上vg,指令:vgscan
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinAjImxss-VKOi7fDRbNz2wv_BD-hbMa30zu_s-vp5CeNC_WKtHSY1qv9d-kNOkUJ5W4spmx_pcGcHxVOx-Wm0VxS4BOfKh0zQThPh7w4cBIkOiyHZ3xxjekZmqeZjD_HFN_zpMkXY6sY/s320/147891923_m.jpg)
查看系統pv磁碟狀態
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAmGlT9fBiJH8AeYMoXDw34Bah71_hXLA8qNm_3tHwwO6o9UxtIkh_r0kIjQAX6F9JTpDNNSgTPXNIOCHhuS7zRNQUYUWAcCBwSoMHD41Zgzl1gZyJyZyMlZfYXrL7LATjYZ0nfYZsa5k/s320/147891924_m.jpg)
查看vg狀態,指令:vgdisplay
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg48mdZOVsgmoonHgkKq0Z_UbeJxK6py1Nn4tDka96oaXyoRZT4yb2RRrACpah1bfqxjhEV_29VLMzvtPfe6BCcDF4QYk-F-kvoAXOlmz4TMOOVCN1KNbV4KakM1KvWbbWeuftiQvQKCE8/s320/147891925_m.jpg)
將pv加入vg,指令:vgextend testvg /dev/sdc1
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguw1ZJzlqPijwLtXPW73nre5LcbVoGUYiFzbRPsXwb3Cy01Ut0PD51zjajals1_z3HuD1IPfesaCR8aayHp6V6TkTjkfehbNYKnHiypa4qsnBBDDhrhFVrhmOTqZPjgVW29OSc4EnV9YE/s320/147893212_m.jpg)
查看vg狀態
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqytexoTMx17RLw6jwHU0BFUv1Te5789ddGx7ZkGgXeJuF4hJpDMOiOrwdX5uI4qXjmSyYTFEjTAjCgWitMqMhKWeCe4KbnRsV06VU8KqDTiYa9jzsKHzI-G-bDlrlLQMaLBdrMS0Ntrg/s320/147893214_m.jpg)
注意:若重開機後發現vg沒啟動可用指令:vgchang -a y啟動
LV規劃
指令
lvcreate:建立lv
lvscan:查詢系統上的lv
lvdisplay:顯示系統上的lv狀態
lvextend:增加lv容量
lvreduce:減少lv容量
lvremove:刪除一個lv
lvresize:調整lv容量大小
建立lv,指令:lvcreate -L 5g -n testlv testvg
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjLeYPRcReMp4TNQydlEve_y_oFLObpTJlT6SCCIwlFXd4rWmmR-WJNqxpAa0ozXBipZJmHIpXG8Da4pYwuSQ7atBOZPI4hmngy4RjEvnm21lCYyUkQpZX1JJ5urjqqjaDe6Hbc6kozyU/s320/147933356_m.jpg)
指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
-n:後面接lv的名稱,可自行定義
最後面須指定要從哪個vg建立lv
建立出來的lv儲存在/dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGmto3aSDt0i8jvz_DbBPM7PlLBjsgzP8vnPoC8F1eeaqSKOLpqf7DvOeViLP4NCIXbtC-lvZRxwR-mqONhdcOyTXg2dDpChxCJmiou9giby0XzotGM-y2ug29WUfk9E9w_pEVxWZhvyE/s320/147934012_m.jpg)
查看目前系統lv狀態,指令:lvdisplay
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiezKZr9Z17niArl08gMn0sY_sjgf1i1lLChfjAq2c0V_VbqNqqvm9vj_iTRL9Jiv71VYUUOKBNmgFGCE2UOgwgmyXPgZ-7PNAarI5b9mfcnfxiM4QS7SvwIb15bDkRC8BmAq53EKGVSFc/s320/147934615_m.jpg)
格式化與掛載
將lv格式化成ext3格式,指令:mkfs -t ext3 /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF0nIEotCcRIlHeFWjAgShI0R_H_imqDE3A5ZVPbCZ9JYh2qE6NbP9D6QfeHsGVCLJFCXQ9ZSSpmFyeo8xFBgxIxuygjqph9HQHTFPlpIq5uW40kBvzNA5uFQUPc9cVZHof8DPiAw8v_U/s320/147935076_m.jpg)
建立目錄並掛載,指令:mkdir /mnt/testlvm && mount /dev/testvg/testlv /mnt/testlvm
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjYVoAo-_x2pqreyBdMHLYnnDSWrNXrLBMvUc6IpF-GYlfXkOGK7FeQ5ZjZjXQ_EpsRjzNhwhsikanuRWYsbqLeO-10YxEIDHuy5iexTEQIlrwt3OWGIIFLLHzOCj1469kVAyHawkz-BU/s320/147935639_m.jpg)
查看磁碟容量,指令:df -h
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Mo6_6IQwMuiDsiChg89JaRSSQMwfkS-HaLL8S10bV-TbWg4c1FAjGy8Lm2HFaZB3sntzLESX04dnl8Li06gzx8MCkSCBDg-PsTLr5zTbSWSgbJr-b1KK9c7SQhbQCkyTZEI-0MPHm4I/s320/147936126_m.jpg)
增加LV容量
指令:lvresize -L +7g /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9HHndFNsvGQJ4hrGpPT0I0ReDgbej3Z-YnlNZzwOafJPNWG3V-BcFUHPWeXlbWoDGTM-21Gf-nz_LMOcEl2XWMtU-FCCSj0DMnpHAKkzw7bOLtsv4MARQ_aGlHWDP-eo0NNsmujMjxjA/s320/147937720_m.jpg)
指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
最後面要指定lv的完整名稱路徑
注意-L後面要有"+"才是增加容量,如果沒有使用"+"則為修改lv容量
查看系統lv狀態
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWZL8hAz0laqDCYpT9Cz2sBQW87pWROp3tz75Yua20DFEUBQUme89KdLWvhToggXxj7ul_TmcsGhTv-AKl2hmktwgRuDCI_URr2R0-Fl-AUR5lTS5dtkh8qrHzFXqR-e6ZtHJC5-T6Wb4/s320/147938110_m.jpg)
此時已掛載的lv使用df查看容量依然只顯示5G,使用resize2fs指令修改即可
指令:resize2fs /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy5LNbQ87MipRPQHM5699AXZIJP2yYklDJ2FJzFtOp8RsErMgjznuRfFupRecjXndTUfYHFCaIFWlNnyIsborQNN7fhlop2zsBIsHiwTOn4qKSIgqJXsYtCCx4s5aKLK46Bl5F8epf98o/s320/147938292_m.jpg)
指令說明:最後面要指定lv的完整名稱路徑
使用df -h指令查看磁碟容量
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEAX-otq3og2CfgupSKcX_nGgt-PEEP1-Pe-p53Ug20k2Mc6QtwslwndfdfXDnqD0Ikq46kU-cwq6XHM344rcSvyRrD4MzIzZYDvuFginfWrqxxdi7D0F4iRYHplluc-UOGI_b58xtBh8/s320/147938714_m.jpg)
減少LV容量
注意變大是先lvextend(或lvresize)後再resize2fs,變小則先resize2fs在lvreduce
容量變小必須在卸載情況下再能處理
先卸載lv掛載磁區,指令:umount /mnt/testlvm
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4qyhUbEeNfa886CSBilCJBxdSk-BQbWB-ff9wFCFEqzJFGhr1a5yFuHf6_CUU8tEvDFJAOH9nldvDEVqIp1Ze8vjOfBbwk53jrVrKZ73gJEVjYkfrYf7V5qlnn4qBGlYzZ0vcBsjgfm4/s320/147940295_m.jpg)
執行磁碟掃描,指令:e2fsck -f /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLSZdpCYsv1srvV8TYEqzR3CgAFLN7BM0YJTicb2DlLaHfNh5HPpzjf6W3kmwPHTUsXj9XTQy2Vi7E_9qSz6NCF-7MnmTVEEo7wGi5IhzLIta5P5vokIzV8ngkBsCG7EK46DHtVWt7-aQ/s320/147940486_m.jpg)
使用resize2fs指令將磁碟容量減少:指令:resize2fs /dev/testvg/testlv 10000M
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE8wVzzXcpGZSZAIGLMzB4jKCsyHS4fRqYaScKu5RMzGRnamRXkAcV-YBDiCqgGyaaUYM8XIP6n89AMvKP1eMf9EgC9oayGBs8hGFBFPkqAWWvPJ6Fi7ztreJv-UzdstayeRvRHybyA5k/s320/147940837_m.jpg)
指令說明:最後面指令容量,原本12G減少成10G
重新掛載目錄後查看磁碟,容量已從原本12G變成10G
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyWUaXKzVM4s5JcrRPFR29PCCqGKrMMdiN1GI-ZZmkhumay_ANoUFBV1sySpS4v1FYcC2cG84yq736v7ELYdB5ZfpDlc2w9lzPrHnOOaQLn3Zr5PxDDhs1fs0g1buO1_PEqhxtMTTYHmc/s320/147941065_m.jpg)
此時使用lvdisplay指令查看lv的容量依然在12G,使用lvreduce指令減少lv的容量
指令:lvreduce -L 10g /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5uSqtNyD49AbHIGE96ua8LBiKGZYtU3RbMM5MGeXh1mqhq1Ai0geCAxtH3Y3UbqbgJ7n1PknJQ6GjPm1-Fuh-RWoS9_dgfDV7bldZAzFuNSFh58f162S0qHSXYrfkOzxDusoQGXMFJFw/s320/147941285_m.jpg)
指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
最後面要指定lv的完整名稱路徑
使用lvdisplay指令查看lv的容量已經變成10G
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyWUaXKzVM4s5JcrRPFR29PCCqGKrMMdiN1GI-ZZmkhumay_ANoUFBV1sySpS4v1FYcC2cG84yq736v7ELYdB5ZfpDlc2w9lzPrHnOOaQLn3Zr5PxDDhs1fs0g1buO1_PEqhxtMTTYHmc/s320/147941065_m.jpg)
從VG中移除PV
從下圖中看到要移除vg中的sda5,可是系統有使用到sda5的pe,sdb5未使用到任何pe
必須先將sda5的pe移動到sdb5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi27s4mlYujl8KQZ46GjWJoVJEbKWPMR_vkRHGyFIph86tfD7GUkWPseXX9ExGjyCVPzV_VKFL0nnb5f3cv50A_0x0XOBKEzHTfPIgfZH9gh3S5YsfjCAyicMwNAjDXPoQBLWMgmieL95Q/s320/147942385_m.jpg)
使用pvmove指令,將sda5的pe移動到sdb5,指令:pvmove /dev/sda5 /dev/sdb5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3WHuX_xVeU35L61VaRTj99BSZ41XG6X2UD-M9GvgC86EbNpA9jQAZDrXFIghX553ZBpcDnzwEFaBt1hdGUnEnmktWiw7zIH8qSLKqo1mXAXpnwWTijT09rEt_NElOV3xXFR-2tdXkQ-c/s320/147942700_m.jpg)
從vg中移除pv,指令:vgreduce testvg /dev/sda5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnTMmt6Ud1nTrTX9bHuirUOIk3Nxvl3tisNy92idZ2dPhRPDetj0tt-3PlY-Y3SiQGm1ef8gfxm2tQ_ch4AMw_HpeAxDKy0T6Ka9_bD2WJJhacyBQmvJn00EBWH0zuIj4COL9J9UyAxtY/s320/147942802_m.jpg)
指令說明:"testvg"為vg的名稱,最後面接裝置名稱
使用pvscan及vgdisplay查看狀態
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9jv-tffZlamaBEGTkl_tZjrG8u5wvXtK5WBGgAQGiKjPl8YlHbkugg8nF1eTZ_u2yFD4VuiK_yZ_vS6elhNIinGeJQgVP25oxyUMexCRQLQIWWDwWlNusFTKNK4sgohGuCUIdHNEiVow/s320/147943404_m.jpg)
最後移除sda5的pv,指令:pvremove /dev/sda5
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwjvX231TJAp6dpt4j2J-AX5t_TE_OExw8frE4JAma11qgxcZjY4VzAYLwEkGttAzTHz9hA0WltzM5vyB6tx-FDIYVFc4BRRrPmyirVDzvJ_e1hxYDhHZ77vDZQSppXGTzNAYBF250gtw/s320/147943562_m.jpg)
建立快照
先用vgdisplay指令查看是否有足夠的pe和容量,因為快照占用vg的容量
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipdh4NFtPmGwy9vCQyyGQOAeFwwAtOjMu-np5YtswuPjiHggK4PGYmElBRu8SYVclWXZ8N6zVNMM8i60jlE6Q6fX-kPBcQ42yeJlk17FpYcIoQmXhVtrSkuvrW3zoClBF3aGZTQVrlizQ/s320/147951604_m.jpg)
使用lvcreate建立lvm的快照,指令:lvcreate -L 1g -s -n testsnap /dev/testvg/testlv
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhikqqjY4z6d_Ks_Ty6CdSKWKSHlPIuy0l1T1ciujPcIUfVkYYTp8adFMF-MMWytbDweTbmdWPqL2dnLgxgN_rvPeGGZOMAF9Skt1_Any-1UmGlFXcRW-HzKm1AZ7TIgYQNIlxoxbwqLY/s320/147951711_m.jpg)
指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
-s:建立快照
-n:建立名稱,可自行定義
最後面要指定lv的完整名稱路徑
如果在建立快照時無法建立出現以下訊息
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYHz5bRsBlfskDy4Ns5hAd6oGqoKZLLUa0YgcxbvV7V_nDxDPDNqX8_-1f3N6mGKQesdEFLANZ3OToaJ0tGDDD0xSn5RjVlmqt9Z5ZOJ8Cj1xKDGV9aXP2y1jnYNsit3uR_uH6dkOnmKs/s320/147991563_m.jpg)
表示snapshot模組沒有載入所造成,執行指令:modprobe dm-snapshot即可
查看快照狀態,指令:lvdisplay
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjo1RWQ0SbOBiaNgiGZGNGu0MnvwWhwZtENTDKCuzb2Ei1kBTGwJ4_T6cCUlEBDOMIbFgTOyfKFoM-2FvFGHPFSHs_AxljB9Msm2oDVZzGuNVIBBBonob89OmFgRUg62WbwgHYd_GpRv0/s320/147991980_m.jpg)
移除快照,指令:lvremove /dev/testvg/testsnap
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0I6czZYVqwG1s24Dh4ZYuneNyC5cCTNNBtcTU7t-c2s7ONPMhILlMVc9LdfX5EAAWFWtQKyppQCW0Ibx8uMPBpcwusQJVv1L6xhW8keKa7KimS7Z3dIagmTJPFlFuLeOVCwFBElke_CM/s320/147992288_m.jpg)
LVM相關指令整理,圖片來源:鳥哥網站
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOropgGk_Wosl7_Cnt4uvtdLin7UEujltL6VlFTHuKLDmDAS-cUFiRA_A2CCA7JXrcjj_kFXcF-VvtA7SGujf-ACpRBvBHaXF-dfTOkJ0fUikidOXv-2oiUWifQKAl_cXh7QGEyc7Iq2Y/s320/147992750_m.jpg)
系統重新安裝後要再加入原有LVM步驟如下
打 fdisk -l 與 pvscan 應該要可以看到 pv 項目存在
vgscan 應該可以 scan 出 voulme group,若沒看到先 vgchange -ay 跑看看 active vg 項目
如果狀態變成exported請先打vgimport -a
若 vgchange -ay 成功後所有 lv 應該都會出現,那就可以進行一般的存取
留言
張貼留言