在Linux中使用LVM構建靈活的磁碟存儲(第一部分)
邏輯卷管理器(LVM)讓磁碟空間管理更為便捷。如果一個文件系統需要更多的空間,可以在它的卷組中將空閑空間添加到其邏輯卷中,而文件系統可以根據你的意願調整大小。如果某個磁碟啟動失敗,用於替換的磁碟可以使用卷組註冊成一個物理卷,而邏輯卷擴展可以將數據遷移到新磁碟而不會丟失數據。
在Linux中創建LVM存儲
在如今,每台伺服器空間都會因為我們的需求增長而不斷擴展。邏輯卷可以用於RAID,SAN。單個物理卷將會被加入組以創建卷組,在卷組中,我們需要切割空間以創建邏輯卷。在使用邏輯卷時,我們可以使用某些命令來跨磁碟、跨邏輯卷擴展,或者減少邏輯卷大小,而不用重新格式化和重新對當前磁碟分區。卷可以跨磁碟抽取數據,這會增加I/O數據量。
LVM特性
- 可以在任何時候靈活地擴展空間。
- 可以安裝和處理任何文件系統。
- 可以通過遷移來恢復錯誤磁碟。
- 可以使用快照功能恢復文件系統到先前的階段。等等……
我的伺服器設置 - 需求
- 操作系統 —— 安裝有LVM的CentOS 6.5
- 伺服器IP地址 —— 192.168.0.200
在Linux中創建LVM磁碟存儲
1. 我們已經在虛擬磁碟(VDA)中使用了帶LVM的CentOS 6.5操作系統。在此,我們可以使用下列命令查看到物理卷(PV),卷組(VG),邏輯卷(LV)。
# pvs
# vgs
# lvs
檢查物理卷
下面是上面截圖中各個參數的說明。
- 物理磁碟大小(PV Size)
- 用作虛擬磁碟vda的磁碟
- 卷組大小(VG Size)
- 卷組名稱(vg_tecmint)
- 邏輯卷名稱(LogVol00,LogVol01)
- LogVol00分配給swap,大小1GB
- LogVol01分配給/,大小16.5GB
從上面看,我們可以知道VDA磁碟中沒有足夠的空閑空間。
2. 為了創建一個新卷組,我們需要在這台伺服器上添加額外的3個硬碟。3個驅動器不是強制使用的,只要一個就足夠用來創建新的VG,並在其中創建LV了。我在這裡添加了更多的磁碟,目的只是用於演示和更多命令功能的說明。
下面是我已經額外添加的磁碟。
sda, sdb, sdc
# fdisk -l
驗證添加的磁碟
- 用於操作系統(CentOS 6.5)的默認磁碟。
- 默認磁碟上定義的分區(vda1 = swap),(vda2 = /)。
- 額外添加的磁碟Disk1,Disk2,Disk3。
各個磁碟大小都是20GB,默認的卷組的PE大小為4MB,我們在該伺服器上配置的卷組使用默認PE。
卷組顯示
- VG Name – 卷組名稱。
- Format – LVM架構使用LVM2。
- VG Access – 卷組為讀寫模式,備好待用。
- VG Status – 卷組可調整大小,如果我們需要添加更多空間,我們可以擴展更多。
- Cur LV – 當前卷組中有2個邏輯卷。
- CurPV and Act PV – 當前使用的物理磁碟是1(vda),已被激活,因此我們可以使用該卷組。
- PE Size – 磁碟的物理擴展大小,可以定義使用PE,或者GB,LVM的默認PE大小是4MB。例如,如果我們需要創建5GB大小的邏輯卷,我們可以使用總計1280 PE,你們懂我的意思么?
這裡解釋一下 -> 1024MB = 1GB,這樣的話,1024MB x 5 = 5120PE = 5GB,然後5120/4 = 1280,4是默認的PE大小。
- Total PE – 該卷組具有的PE數量。
- Alloc PE – 總的PE使用量,已經使用的全部PE,4482 x 4PE = 17928。
- Free PE – 這裡因為已經使用,所以沒有空閑PE了。
3. 只使用了vda,當前CentOS在使用lvm的vda物理磁碟中安裝了/boot,/,swap,,該磁碟中沒有空間剩餘。
# df -TH
檢查磁碟空間
上面的圖片中顯示了用於根的掛載點已使用了18GB,因此沒有空閑空間可用了。
4. 那麼,讓我們創建新的物理卷(pv),以及名為tecmintaddvg的卷組(vg),並在其中創建邏輯卷(lv)。這裡,我們可以創建4個邏輯卷,分別名為 tecmint_documents,tecmint_manager以及tecmintaddvg。
我們可以擴展當前使用的卷組以獲得更多空間。但在這裡,我們將要做的是,創建新的卷組,然後在裡面肆意妄為吧。過會兒,我們可以看到怎樣來擴展使用中的卷組的文件系統。
在使用新磁碟前,我們需要使用fdisk來對磁碟分區。
# fdisk -cu /dev/sda
- c – 關閉DOS兼容模式,推薦使用該選項。
- u – 當列出分區表時,會以扇區而不是柱面顯示。
創建新的物理分區
接下來,請遵循以下步驟來創建新分區。
- 選擇n來創建新分區。
- 選擇p來創建主分區。
- 選擇我們需要創建的分區號。
- 按Enter兩次來使用整個磁碟空間。
- 我們需要修改新創建的分區類型,輸入t。
- 選擇需要修改的分區號,選擇我們創建的分區號1。
- 這裡,我們需要修改類型。我們需要創建LVM,因此我們使用LVM的類型代碼8e。如果不知道類型代碼,按L來列出所有類型代碼。
- 列印我們創建的分區以確認。
- 這裡我們可以看到Linux LVM的ID 8e。
- 寫入修改並退出fdisk。
重複以上步驟,為另外2個磁碟sdb和sdc創建新分區。然後重啟機器,使用fdisk命令來驗證分區表。
# fdisk -l
驗證分區表
創建物理卷
5. 現在,該使用3個磁碟來創建物理卷了。這裡,我已經使用pvs命令將物理磁碟列了出來,現在只有一個默認的pvs被列出來了。
# pvs
然後,使用命令創建新的物理磁碟。
# pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
再次列出磁碟來查看新創建物理磁碟。
# pvs
創建物理卷
創建卷組
6. 使用可用的空閑PV來創建名為tecmintaddvg的卷組,PE大小為32。顯示當前卷組,我們可以看到只有帶有1個PV的一個卷組在使用。
# vgs
這將使用上面創建的3個物理卷創建名為tecmintaddvg的卷組,PE大小為32MB。
# vgcreate -s 32M tecmint_add_vg /dev/sda1 /dev/sdb1 /dev/sdc1
接下來,再次運行vgs命令來驗證卷組。
# vgs
創建卷組驗證卷組
理解vgs命令輸出:
- 卷組名。
- 本卷組中使用的物理卷。
- 顯示本卷組中的可用空閑空間。
- 卷組總大小。
- 本卷組中的邏輯卷,這裡我們還沒創建,所以是0。
- SN = 卷組包含的快照數量。(後面,我們會創建一個快照。)
- 卷組狀態,如可寫,可讀,可調整大小,已導出,部分的和集群的。這裡是wz——意為w = 可寫,z = 可調整大小。
- 卷組中使用的物理卷(PV)數量。
7. 使用命令來顯示更多卷組信息。
# vgs -v
檢查卷組信息
8. 要獲取更多關於新創建的卷組信息,運行以下命令。
# vgdisplay tecmint_add_vg
列出新卷組
- 卷組名稱
- 使用的LVM架構。
- 可讀寫,備好待用。
- 該卷組可以調整大小。
- 使用和激活的物理磁碟數量。
- 卷組總大小。
- 這裡單個PE大小為32。
- 該卷組中可用的PE總數。
- 當前還沒有在卷組中創建任何LV,因此它是空閑的。
- 該卷組的UUID。
創建邏輯卷
9. 現在,創建3個名為tecmint_documents,tecmint_manager和tecmint_public的邏輯卷。這裡,我們可以看到如何分別以PE為單位和GB為單位來創建邏輯卷。首先,使用以下命令來列出當前邏輯卷。
# lvs
列出當前卷組
10. 這些邏輯卷處於vg_tecmint卷組中使用pvs命令來列出並查看有多少空閑空間可以創建邏輯卷。
# pvs
檢查空閑空間
11. 卷組大小為54GB,而且未被使用,所以我們可以在該組內創建LV。讓我們將卷組平均劃分大小來創建3個邏輯卷,就是說54GB/3 = 18GB,創建出來的單個邏輯卷應該會是18GB。
方法1: 使用PE創建邏輯卷
首先,讓我們使用物理擴展(PE)為單位來創建邏輯卷。我們需要知道分配到該卷組的默認PE大小,以及總的可用PE大小來創建新的邏輯卷,運行下面的命令來獲取使用中的卷組信息。
# vgdisplay tecmint_add_vg
創建新邏輯卷
- 默認分配給該卷組的PE為32MB,這裡單個的PE大小為32MB。
- 總可用PE是1725。
只要用bc命令做一點小小的計算來看看就知道了。
# bc
1725PE/3 = 575 PE.
575 PE x 32MB = 18400 --> 18GB
計算磁碟空間
按CRTL+D退出bc。現在讓我們使用575個PE來創建3個邏輯卷。
# lvcreate -l (Extend size) -n (name_of_logical_volume) (volume_group)
# lvcreate -l 575 -n tecmint_documents tecmint_add_vg
# lvcreate -l 575 -n tecmint_manager tecmint_add_vg
# lvcreate -l 575 -n tecmint_public tecmint_add_vg
- -l – 使用擴展大小創建
- -n – 給邏輯卷命名
使用lvs命令來列出創建的邏輯卷。
# lvs
列出創建的邏輯卷
方法2: 使用GB大小創建邏輯卷
在使用GB大小創建邏輯卷時,我們不能獲得精確的大小。因此,最好的辦法是用擴展。
# lvcreate -L 18G -n tecmint_documents tecmint_add_vg
# lvcreate -L 18G -n tecmint_manager tecmint_add_vg
# lvcreate -L 18G -n tecmint_public tecmint_add_vg
# lvcreate -L 17.8G -n tecmint_public tecmint_add_vg
使用lvs命令來列出創建的邏輯卷。
# lvs
驗證創建的邏輯卷
這裡,我們可以看到,當創建第三個LV的時候,我們不能收集到18GB空間。這是因為尺寸有小小的改變,但在使用或者尺寸來創建LV時,這個問題會被忽略。
創建文件系統
12. 要使用邏輯卷,我們需要格式化。這裡我使用ext4文件系統來創建卷,並打算掛載到/mnt。
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_documents
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_public
# mkfs.ext4 /dev/tecmint_add_vg/tecmint_manager
創建Ext4文件系統
13. 讓我們在/mnt下創建目錄,並將已創建好文件系統的邏輯卷掛載上去。
# mount /dev/tecmint_add_vg/tecmint_documents /mnt/tecmint_documents/
# mount /dev/tecmint_add_vg/tecmint_public /mnt/tecmint_public/
# mount /dev/tecmint_add_vg/tecmint_manager /mnt/tecmint_manager/
使用下面的命令來列出並確認掛載點。
# df -h
掛載邏輯卷
永久掛載
現在,這些邏輯卷是臨時掛載上去的,要永久掛載,我們需要添加條目到fstab中。要達到這個目的,讓我們使用下面的命令來獲取掛載條目
# cat /etc/mtab
在輸入來自mtab中的掛載條目內容時,我們需要在fstab中做些小小的改變,修改rw為默認。
# vim /etc/fstab
我們的fstab條目應該和下面的類似,使用wq!保存並退出fstab。
/dev/mapper/tecmint_add_vg-tecmint_documents /mnt/tecmint_documents ext4 defaults 0 0
/dev/mapper/tecmint_add_vg-tecmint_public /mnt/tecmint_public ext4 defaults 0 0
/dev/mapper/tecmint_add_vg-tecmint_manager /mnt/tecmint_manager ext4 defaults 0 0
獲取mtab掛載條目打開fstab文件添加自動掛載條目*
重啟前,執行mount -a命令來檢查fstab條目。
# mount -av
驗證fstab條目
這裡,我們已經了解了怎樣來使用邏輯卷構建靈活的存儲,從使用物理磁碟到物理卷,物理卷到卷組,卷組再到邏輯卷。
在我即將奉獻的文章中,我將介紹如何擴展卷組、邏輯卷,減少邏輯卷,拍快照以及從快照中恢復。
via: http://www.tecmint.com/create-lvm-storage-in-linux/
作者:Babin Lonston 譯者:GOLinux 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive