標籤:lvm pv pe
LVM
lvm的英文全名是logical volume manager,顧名思義lvm就好像有邏輯的管理卷的管家一樣,也叫做“邏輯卷管理”。是傳統Unix下進階管理非常強大的磁碟管理工具,!而在linux系統下lvm也是對於磁碟分割的一種管理機制。
設想下面一個情境,當你最初規劃主機的時候,給/home這個分出50GB,等到使用者不斷增加,然後你某天無意一個`df -h`,use%突破80%多了,怎麼辦?給它重新加一塊新硬碟,再去做分區、格式化、掛載,然後再將以前即將滿負荷的舊磁碟資料拷貝過來?若是伺服器呢?假設是多人線上的伺服器,你還要提前通知他們停止使用電腦,待我把資料拷貝過來嗎?這樣一次可以,來回弄幾次,我想回頭老闆就找你喝茶啦。
其實在linux系統下有個特別好用的磁碟管理機制就是lvm,它的彈性調整檔案系統的容量使這個棘手的問題不再是難關,lvm可以根據需要擴充或者縮小磁碟容量,甚至可以在系統運行過程中把一個分區臨時加進來當做擴充,真的是非常好用!說起lvm,就不得不談談組成它的各部分是什麼。講講它是什麼做的吧。
lvm的作法是:
1、可以使用虛擬機器虛擬出幾個分區。
2、或者是使用真實的物理磁碟或者是分區。
把以上的通過軟體把它們組合成一塊看起來像是一個獨立的大容量的磁碟,再把這個大容量的磁碟通過分區的方法使它們變成一個個的邏輯卷分區,最後把這些邏輯卷通過格式化和掛載,就能為我們所用了!
這裡其實有幾個概念,希望朋友們牢記。
1、pv是什嗎?
pv在英文全稱就是physical volume,翻譯過來就是物理卷裝置。pv是組成lv的根基,把它們通過pvcreate命令變成能被作業系統識別的vg,再由vgcreate的方法變成lv啦
2、vg是什嗎?
vg的英文全稱就是volume group,即“卷組”。它就是上述所說的“大硬碟”,它最大的容量是多大呢?然而這要看pe的數量。
3、pe是什嗎?
physical extend,物理的拓展塊。在lvm預設的情形下,pe的預設單位是4MB。它是整個lvm裡面最小的儲存塊,而實際上我們寫入檔案資料都是由pe寫入處理的。
4、lv是什麼?
logical volume,邏輯卷。它就像磁碟的分區一樣,你可以把它進行格式化掛載,方便我們彈性使用了!這裡有個概念,實際上lv的容量是由pe的個數和每個pe的大小加起來決定的。
它的效果如
650) this.width=650;" title="第一.jpg" src="http://s3.51cto.com/wyfs02/M01/3F/A5/wKiom1PLrdigvsf7AAMuEk0DrFk425.jpg" alt="wKiom1PLrdigvsf7AAMuEk0DrFk425.jpg" />
首先,我們展示一下如何建立LV
step1、先對已購買的物理磁碟或者是虛擬機器劃分的磁碟進行分區。
我這裡使用fdisk命令對/dev/sdc下的裝置分了三個分區,分別是
/dev/sdc1,
/dev/sdc2
/dev/sdc3。而且三個分區的檔案系統格式都為8e 即linux LVM。
650) this.width=650;" title="1.jpg" src="http://s3.51cto.com/wyfs02/M00/3F/A5/wKioL1PLr16Sbw4LAAHcjQ8cW7k247.jpg" width="781" height="246" alt="wKioL1PLr16Sbw4LAAHcjQ8cW7k247.jpg" />
step2、然後再建立pv即物理卷組。
命令:pvcreate [options] PhysicalVolume
PhysicalVolume就是你分區裝置的名字,我這裡就是上述的三個分區。 看,顯示successfully created以成功建立。
650) this.width=650;" title="pvcreate.jpg" src="http://s3.51cto.com/wyfs02/M01/3F/A5/wKiom1PLsGKgGUFjAAE-si9jW3U476.jpg" alt="wKiom1PLsGKgGUFjAAE-si9jW3U476.jpg" />
step3、在pv基礎上建立vg,即volume group 邏輯卷組
命令:vgcreate [options] VolumeGroupName PhysicalDevicePath... 注意這裡volumegroupname是你要為你所建立的vg組起個名字,比如叫bill,而後面的PhysicalDevicePath則是你物理磁碟分割的路徑,這裡個人推薦用絕對路徑,因為這樣不容易產生歧義。
這裡還有個選項-s,可以定義PE的大小,即為physcial Extend大小,因為PE是邏輯卷的直接儲存單元,而LV只是含有多少PE的個數。這裡PE的大小預設是4MB
650) this.width=650;" title="vgcreate.jpg" src="http://s3.51cto.com/wyfs02/M01/3F/A5/wKioL1PLtXrRYlkNAAI10Cnmytw439.jpg" alt="wKioL1PLtXrRYlkNAAI10Cnmytw439.jpg" />
如果建立成功,則會在螢幕顯示volume group XXX successfully created建立成功。
而假設想看自己建立的vg裝置,可以使用命令 vgs or vgdisplay,兩個命令都可以把vg的資訊輸出到螢幕上,相比之下vgdisplay較為詳細。
step4、very important的一步,建立邏輯卷 LV(這裡LV不是那些奢侈的包包兒啊~~~)
讓我們看下建立LV的命令格式
# lvcreate -n 這裡鍵入你要為lv起什麼名字 -L 這裡鍵入邏輯卷的大小,如果不加+符號,後面跟數字,表示直接分配多少數量的容量給LV 後面支援的單位有bBsSkKmMgGtTpPeE。
這裡我給LV起個名字叫billy,區別於vg的bill,看!效果:
這裡我們可以使用命令lvs或者lvdisplay來查看lv的資訊。
650) this.width=650;" style="width:646px;height:182px;" title="lvcreate.jpg" src="http://s3.51cto.com/wyfs02/M00/3F/A5/wKiom1PLtOqzeu9JAACNt-Y_kic655.jpg" width="705" height="174" alt="wKiom1PLtOqzeu9JAACNt-Y_kic655.jpg" />
其次,建立完成了還沒有辦法立即使用,好比敲鑼打鼓把花轎抬到洞房那,結果發現不知道在哪個單元的幾樓而且也房子也沒有裝修,還是毛坯房,結果豈不是很糟。
於是乎我們執行下面兩步:
step1、把建立好的邏輯卷給建立檔案系統(又稱格式化),但是先要找到它的位置不是?
一般來說剛建立好的LV的位置在/dev/mapper/vg的名字-lv的名字。
那好,我們來找找billy,並順便把它給格式化嘍
650) this.width=650;" title="開始給lv格式化.jpg" src="http://s3.51cto.com/wyfs02/M02/3F/A5/wKioL1PLtjXywGftAAKknBUMvRM767.jpg" alt="wKioL1PLtjXywGftAAKknBUMvRM767.jpg" />
下面就是第二步了
step2、把建立好的lv進行最後一步,掛載到linux下的某個目錄下,就可以做資料存放區了。我們這裡提前在tmp下建立好一個叫mountbilly的目錄,用於掛載生產的LV
650) this.width=650;" title="最後的mount.jpg" src="http://s3.51cto.com/wyfs02/M01/3F/A5/wKiom1PLtT3zrxLiAAIUilhwSfA548.jpg" alt="wKiom1PLtT3zrxLiAAIUilhwSfA548.jpg" />
tara!
注意!
本文還沒有結束,這裡還是幾個LV的命令,包括如何擴建和縮減LV的容量,以及給LV建立快照!
關於對LV的容量擴充
我們可以使用lvextend命令對LV進行擴充,這裡需要注意,你要擴充的容量不能超過VG的容量,而且還要注意當你用lvextend擴充完以後還要使用resize2fs 命令對檔案系統進行擴充!
#lvextend -L 擴充的大小 後面跟上數字n 如果想在原有的基礎上再加上多少容量要用“+”號,如對LV billy在原來10G的容量上擴充到13G,看!
650) this.width=650;" title="擴充lv.jpg" src="http://s3.51cto.com/wyfs02/M00/3F/A5/wKiom1PLtbmC9NWvAADLZdXxtnw695.jpg" alt="wKiom1PLtbmC9NWvAADLZdXxtnw695.jpg" />
關於對LV的容量縮減
我們也可以使用lvreduce命令對LV進行縮減,注意!首先保證最好你進行的是離線操作
這裡要縮減前,先要對LV進行umount卸載,把裝置卸載掉,然後要使用命令e2fsck -f執行強制檢查。
檢查ok
然後先要對檔案系統進行縮減,再對LV大小進行縮減,看!
縮減到11G了
650) this.width=650;" style="float:none;" title="縮減lv.jpg" src="http://s3.51cto.com/wyfs02/M01/3F/A5/wKioL1PLt3TyWOEZAAMiUX7Acow732.jpg" alt="wKioL1PLt3TyWOEZAAMiUX7Acow732.jpg" />
關於給LV建立snapshot(快照)
在lvcreate中有這麼一個選項 [-s|--snapshot [VolumeGroup{Name|Path}/] -s表示建立快照,這裡可以配合使用其他選項譬如--size=-L 指定快照大小來進行對LV進行快照,而快照最好設定一下快照的許可權,把它設成唯讀吧~
650) this.width=650;" style="float:none;" title="快照.jpg" src="http://s3.51cto.com/wyfs02/M00/3F/A5/wKiom1PLtlrT4oeCAAB9M4OYvWA905.jpg" alt="wKiom1PLtlrT4oeCAAB9M4OYvWA905.jpg" />ok,快照建立完成。
不過這裡要注意的是,萬一你建立快照的時候,別人有資料正在寫入怎麼辦?所以一般來說為了不出錯,可以採取下列三步,第一臨時把LV掛載成唯讀掛載,然後再建立LV的快照,最後在把掛載改成讀寫掛載就ok啦
LVM是一個彈性很強的工具,而且方便伸縮容量,真是殺人越貨,啊不,倉儲資料的必備良品。
本文出自 “標題可以空” 部落格,請務必保留此出處http://libincla.blog.51cto.com/6249823/1440594
這次中規中矩的寫一回LVM