為什麼要寫這一個LVM 管理呢?跟貓纜一樣的狀況,好多人在小瑞的鳥站查LVM,只好應觀眾要求,寫一下Linux 下的LVM 管理。雖然我常用,但沒有很深入的了解,寫的不好,別打我呀..
引用至 Brilliant Bry *:歡樂吧!生命 bryan1974 聳肩、攤手 作品
使用LVM 有什麼好處呢?
以往在硬碟分割時,常常捉不太準每一個partition 應該分多少空間,有時這邊少一點,那邊又多一點,每次空間不夠時,工程就會有點浩大,通常要另外準備一硬碟,把原本資料copy 出來,再重新來好好分割一下;或著直接把資料,轉存至分割好的新硬碟上。所以每次資料容量一爆時,就會很頭痛。
這個時候,如果使用了LVM ,那就方便多了。LVM 可以彈性的對Partition 做管理。你可以把不同的實體Partition,組成一個大的邏輯硬碟。這個邏輯硬碟,可以隨時動態的加入或移除Partition,所以邏輯硬碟,是可以你想要變大就變大,想要變小就變小,彈性很大。
有了這個邏輯硬碟後,你可以由這顆邏輯硬碟切割出,邏輯磁碟區,再把這個邏輯磁碟區格式化好了之後,再把它掛載至系統目錄上,即可使用。而這個邏輯磁碟區,一樣可以自由的加大,或變小,管理上很方便。
LVM 是什麼東西呢 ?這是英文的縮寫 (Logical Volume Management),邏輯卷冊管理。 “邏輯” 跟 “管理” 小瑞還了解, “卷冊” 就有點不太了。我覺得有點像是磁碟的感覺,所以小瑞稱 LVM 為 “邏輯磁碟機系統管理” 。
上面那張圖有看到幾個名詞,分別是 VG / PV / LV ,個別做一下名詞解釋。
VG (Volume Group) 的英文縮寫,由許多實體磁碟機或實體磁區,所組成的邏輯磁碟機。
PV (Physical Volumes)的英文縮寫,指的是實體磁碟機或實體磁區,例如: /dev/hda 或 /dev/hda1 。
LV (Logical Volumes)的英文縮寫,指的是由邏輯磁碟機,再分割出來的邏輯磁碟區。
以上是大致的概念,也大概描繪出,使用的方式。
建立 PV –> 組成 VG –> 分割出 LV
第1步,建立PV
指令為 pvcreate ,這個指令很簡單,就是
pvcreate /dev/hda1 /dev/hab …..
後面可以接,磁碟區或磁碟機,可以把後面接的裝置變成 PV 。看你要使用磁碟區,還是磁碟機都可以,不過要注意幾個地方;如果使用磁碟區,則磁碟區的系統編號必須為0x8e,可以使用fdisk 工具去做partition id的設定即可;如果使用磁碟機,則必須刪除整顆磁碟機的partition table ,怎麼做呢? 可以利用這個指令:
dd if=/dev/zero of=/dev/hde bs=512 count=1
那個/dev/hde 指的是,你要使用的磁碟機代號,大家自己視狀況調整。
第2步,組合VG
有了很多的PV 後,就可以把這些PV 組合起來,變成一個大的VG。指令是
vgcreate vgname pvname1 pvname2
第1個參數,是你要建立的邏輯磁碟機的名稱,之後的參數,就是你那很多很多的PV名稱了。這個指令的功能,就是把pvname1 , pvname2 ....組成你要的vgname。
第3步,分割出LV
有了VG 後,就可以由這個邏輯磁碟機,分割出你想要的邏輯分割區LV 了。指令為
lvcreate -n lvname -L 20G vgname
例如:
lvcreate -n testlv -L 10G testvg,此時,你可以在 /dev/testvg 下看到一個磁碟裝置名稱testlv 。
做了以上3步驟後,你就有了一個 testlv 的邏輯分割區了,接著跟實體的分割區作業就差不多了,
mke2fs -j /dev/testvg/testlv
,你就可以把 testlv這個分割區,格式化為ext3 ,接著再把它mount 起來,就可以用了。
例如:
mount -t ext3 /dev/testvg/testlv /u01 。
建立好了之後,如何調整VG 的大小呢?
增加VG 的大小:指令->
vgextend vgname pvname1 pvname2
在電腦上新增加一顆磁碟機,或在原本電腦中的磁碟機,另切出一塊實體分割區出來,再按照PV 的建立方式,把它變成PV 後,使用這個指令,即可把 pvname1 及 pvname2…等PV 加入原有的VG 裏面,來增加原本VG 的大小。
減少VG 的大小:指令->
vgreduce vgname pvname1 pvname2
這個指令可以,讓你移除在vgname 中,沒有被使用的PV ,注意:要沒有被使用到的PV 才可以被移除,要怎麼查PV 有沒有被使用到呢?可以下 pvdisplay pvname 即可查詢PV 的使用狀況。注意那個Allocated PE 那個數字,如果是0即代表,這個PV ,沒有被使用到。
講到一半,有個題外話。PE 是什麼?這個是 physicalextentsize 這個英文字的縮寫。指的是VG 的最小儲存單位,在lvm1的規格下,一個VG 只可以含有65534個PE ,所以如果一個PE 的尺寸大小為4MB 的話,那一個VG 的最大容量即為 256GB,如果你想要建構一個比256GB大的VG ,即必須在建立VG 時,調整PE 的大小。目前使用的lvm2規格,已經沒有這個65534個PE 的限制了,所以基本上容量是不會有限制的,但如果一個VG 中含有太大量的PE ,會影響到Disk I/O 的效能,最小的PE size 為1K ,不過在2.4核心對block device 有2TB 的限制。
PE Size 的大小考量,小瑞會依據要存放檔案內容,分別設定不同的PE 大小,例如:要存文件的,我會設定比較小PE Size;如果是要存放AVI 檔,我會設定比較大的PE Size,跟空間的利用,及效能會有些關係。
也就是,如果設定一個比較大的PE Size ,例如:PE 設64MB ,但要存的每一個文字檔,都只有1MB ,每存一個檔,就用一個64MB ,就有點浪費了;反過來,如果要存的AVI 檔,每一個都超過600MB ,PE設為4MB ,那存一個600MB 的檔,所使用的block I/O 就很多,效能有點影響…所以要大要小,嗯自己拿捏...
好了,接著來看,要如何調整LV 的尺寸大小呢?
增加LV 的Size 指令:lvextend -L +3G /dev/testvg/testlv ,這樣子,就可以增加LV 的尺寸大小。partition 的空間加大了,可以直接使用lvdisplay 檢視一下,可以發現testlv 這個邏輯分割區的空間真的變大了,但是使用df 指令,卻發現檔案系統的空間,卻沒有增加,為什麼呢?因為我們沒有告訴系統,多出來的分割區要做什麼,所以,接著我們要另外下一個指令,resize2fs /dev/testvg/testlv,把剛才增加的partition 空間,轉換至檔案系統,再做一次df 檢視一下,檔案系統空間,就會發現,檔案系統的空間也同步的增加了。
再去檢視原本的檔案系統資料,並沒有因為增加空間,而被影響到,這個功能真的是很好用。
2018-04-27 補充一下: 時代發展到今天,出現了XFS 檔案系統,如果要 resize2fs 的話,要改用 xfs_growfs /dev/testvg/testlv
要如何減少LV 的空間呢?步驟有一點多,基本上是倒著做!
第1步,要先 umount 已掛載的LV ,在做增加時,可以是已掛載的狀態,但是如果是要減少容量,必須是卸載狀態,所以第一步先umount /test (這個是測試LV 的掛載點)
第2步,要做 e2fsck 這個動作,先做一下磁碟檢查
e2fsck -f /dev/VolGroup00/testlv
第3步,處理檔案系統的size 縮小,使用resize2fs 這個指令
resize2fs /dev/VolGroup00/testlv 5G (指的是最後要留下容量)
第4步,接著要處理partition 的縮小,此時才可以做 lvreduce ,有2個參數可以用 -l 跟-L ,-l 是用在,你要減少多少個PE ,可以自己指定;-L 可以直接指定size ,小瑞都習慣使用-L 這個參數,比較方便一點
lvreduce /dev/VolGroup00/testlv -5G
就是把 testlv 這個邏輯分割區減少 5G 的空間,以上就是縮小LV的方法
至於LVM 的管理,還有快照的功能,不過小瑞沒在用,就懶得貼上來了,有機會再分亨這個部份,以下為小瑞自己常用的LVM 指令列表。
有關VG
vgdisplay | 顯示VG |
vgcreate | 建立VG |
vgextend | 增加VG大小用 |
vgreduce | 減少VG大小用 |
vgremove | 刪除VG用 |
有關 PV
pvdisplay | 顯示PV |
pvcreate | 建立PV |
pvremove | 刪除PV |
有關LV
lvdisplay | 顯示LV |
lvcreate | 建立LV |
lvextend | 增加LV容量 |
lvreduce | 減少LV容量 |
lvremove | 刪除LV |
整理完畢,如果有想到什麼,小瑞再上來補充^_^
我很菜,linux還停留在安裝階段,所以有個疑問,若是HD壞軌,LVM不受影響嗎?若是做raid,那有需要LVM嗎?
Hello , 如果HD 有壞軌, LVM 會受到影響的! 如果做raid , 跟LVM 是不同的目的, 如果是 raid 0 , 跟LVM 很像, 但raid 0 會交錯讀寫不同的磁頭, 速度會跟有的實體硬體顆數有關, 越多越快; LVM (預設) 只會循序寫入實體硬碟, 所以只有會容量加大的效果, 不會加快速度; 但如果HD 壞軌出現在raid 0 上, 那就沒救, 但如果HD 壞軌出現在LVM 的磁碟機上, 可能還有救! 以上請參考哦^_^
volume的翻譯”卷冊”詞不達意
翻譯成”容量”就很清楚了
PV 實體容量
VG 容量群組
LV 邏輯容量
對呀, 卷冊 真的會讓人搞不清楚在說什麼, 謝謝您的回應哦!
[…] http://blog.nuface.tw/?p=1267 […]