介紹一種可以讓Linux中存儲(chǔ)具有彈性容量的方法
我們?cè)谑褂肔inux的時(shí)候,有的時(shí)候會(huì)發(fā)現(xiàn)系統(tǒng)盤不夠用的情況。如果系統(tǒng)盤或者其它盤能夠做到彈性就好了。也就是需要更多空間的時(shí)候可以動(dòng)態(tài)擴(kuò)容,而不需要的時(shí)候可以縮容。
有一種方法就是通過SAN存儲(chǔ),因?yàn)榇鎯?chǔ)系統(tǒng)天然具有擴(kuò)容和縮容的功能特性。但是SAN存儲(chǔ)需要一個(gè)獨(dú)立的設(shè)備,而且價(jià)格也很高,不太現(xiàn)實(shí)。其實(shí)在Linux中我們可以通過軟件實(shí)現(xiàn),這就是Linux強(qiáng)大的地方。今天我們就介紹一下這方面的內(nèi)容。
LVM的整體架構(gòu)
在Linux實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)容和縮容特性的軟件稱為L(zhǎng)VM,其全稱是Logical Volume Manager,也就是邏輯卷管理。LVM不僅僅可以實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)容和縮容,還可以實(shí)現(xiàn)其它一些特性,比如條帶化卷,鏡像卷等等。LVM的整體架構(gòu)如圖所示。
通過上圖可以看到,LVM包含3個(gè)基本的概念,分別是Physical Volume(PV),Volume Group(VG)和Logical Volume (LV)。我們分別介紹一下這個(gè)三個(gè)概念。
物理卷(Physical Volume)
物理卷對(duì)應(yīng)著一個(gè)塊設(shè)備,可以是整個(gè)磁盤,或者是磁盤分區(qū)。物理卷通過pvcreate創(chuàng)建,本質(zhì)上是想塊設(shè)備寫入一些元數(shù)據(jù)。
卷組(Volume Group)
卷組是多個(gè)物理卷的集合,當(dāng)我們創(chuàng)建一個(gè)卷組的時(shí)候需要指定包含的物理卷。此時(shí),實(shí)際上是構(gòu)建了一個(gè)物理卷的資源池。當(dāng)后面創(chuàng)建邏輯卷的時(shí)候會(huì)從該資源池分配資源。
邏輯卷(Logical Volume)
邏輯卷本身是一個(gè)塊設(shè)備,是用戶看到的部分,我們可以將邏輯卷理解為一個(gè)硬盤。但是邏輯卷實(shí)際上是由底層的若干個(gè)物理卷構(gòu)成。但是一個(gè)邏輯卷并非使用物理卷的所有空間,通常是部分空間。
LVM的操作
前文我們對(duì)LVM的基本概念和架構(gòu)進(jìn)行了介紹,接下來我們就實(shí)際操作一下。具體如下圖所示,每個(gè)概念對(duì)應(yīng)著一個(gè)操作命令,分別是pvcreate,vgcreate和lvcreate。這些是創(chuàng)建的命令,從名稱上也可以很容易地明白其作用。
我們從下往上看看如何創(chuàng)建需要的資源,比如我們要?jiǎng)?chuàng)建一個(gè)1G的邏輯卷。
創(chuàng)建PV
首先是要?jiǎng)?chuàng)建PV,也就是準(zhǔn)備物理的資源。在本文中我們假設(shè)有兩個(gè)物理磁盤,并且在整個(gè)磁盤上創(chuàng)建物理卷,而不是在分區(qū)上。
除了創(chuàng)建命令外,還有查詢命令,具體包括pvdisplay和pvs,分別顯示詳細(xì)信息和概要信息。
創(chuàng)建VG
完成PV的創(chuàng)建后,我們就可以創(chuàng)建卷組了。卷組的創(chuàng)建命令如下所示。
創(chuàng)建完成后可以看一下信息:
創(chuàng)建LV
最后,我們就可以創(chuàng)建邏輯卷了。假設(shè)我們這里創(chuàng)建一個(gè)線性的邏輯卷,大小為1GB,具體命令如下所示。
通過lvdispaly命令可以看一下詳細(xì)信息。
除了線性卷之外,我們還可以創(chuàng)建條帶卷。關(guān)于具體什么是線性卷,什么是條帶卷,本文不做解釋,我們后面在介紹LVM的原理的時(shí)候再詳細(xì)介紹。
# lvcreate -L 1G -i2 -I64 -n lv_stripe vg-01
Logical volume "lv_stripe" created
創(chuàng)建完成后照例可以看一下詳細(xì)的信息。
LV創(chuàng)建成功后,我們就可以當(dāng)做硬盤來使用了,用法跟普通硬盤沒有差別。
擴(kuò)容操作
有了前面的知識(shí),我們回歸主題,如何進(jìn)行擴(kuò)容呢?其實(shí)就比較簡(jiǎn)單了。前文我們創(chuàng)建的VG的大小35G,而LV只用了1GB的空間。因此,我們可以直接對(duì)LV進(jìn)行擴(kuò)容,比如我們?cè)黾?0GB的容量,可以執(zhí)行如下命令。
是不是很簡(jiǎn)單!
如果上面已經(jīng)有文件系統(tǒng)了,只需要執(zhí)行如下命令即可。
還有一種情況是VG的容量使用完了。也沒有關(guān)系,我們可以添加新的硬盤到VG,然后執(zhí)行上面介紹的命令。
今天的內(nèi)容就介紹到這里,相信大家對(duì)如何實(shí)現(xiàn)一個(gè)彈性容量的存儲(chǔ)有了清晰的認(rèn)識(shí)了。我們?cè)诤罄m(xù)會(huì)逐步深入,介紹LVM的實(shí)現(xiàn)原理,并結(jié)合內(nèi)核代碼介紹其代碼實(shí)現(xiàn)。