邏輯卷(LVM)管理實例詳解

LVM基本術語

下面是LVM需要了解的基本術語:

 

 物理卷(PV physical volume: 它可以是物理硬盤上的分區,也可以是整塊物理硬盤;

 卷組(VG volume group: 建立在物理卷之上,一個卷組至少包括一個物理卷,可以動態增刪物理卷;

 邏輯卷(LV logical volume:建立在卷組之上,卷組中未分配的空間可以用來建立邏輯卷,并且可以動態調整大小直到用完卷組空間,系統中的多個邏輯卷可以屬于同一個卷組,也可以屬于不同卷組(卷組是物理卷容器,它又被不同邏輯卷動態占用著,就好像一塊物理硬盤被分割成不同的區域一樣);

 物理區域(PE physical extend: PEPV中可以用于分配的最小儲存單元,一旦確定大小不能更改,同一VG中的所有PVPE大小要一致;

 邏輯區域(LE logical extend: LELV中可以用來分配的最小存儲單元,LE的大小取決于LV所在卷中的PE大??;

卷組描述區域(VGDA volume group descriptor area):VGDA在建立物理卷時建立,用于描述PV本身,所屬VG,VG中的LV,以及LV中的PE大小等等;

 

試驗環境介紹:

操作系統:CentOS7;

硬盤:/dev/sda(系統所在硬盤)、/dev/sdb20G)、/dev/sdc20G ;

使用/dev/sdb、/dev/sdc這兩塊硬盤完成下面的實驗;

如何創建LVM

創建LVM步驟:創建物理卷(PV->將物理卷加入卷組(VG->使用卷組創建邏輯卷(LV->格式化邏輯卷->掛載使用

如何創建PV

#LVM的創建必須使用root權限,如果沒有給硬盤分區,可以直接使用硬盤號將其創建為PV,將sdbsdc這兩塊硬盤創建成PV

[root@localhost ~]# pvcreate /dev/sd{b,c}
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc" successfully created

#查看剛創建好的PV

[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sda2  vg0  lvm2 a--u 59.99g  7.99g
  /dev/sdb        lvm2 ---- 20.00g 20.00g
  /dev/sdc        lvm2 ---- 20.00g 20.00g

PV創建好了就可以創建VG了。

如何創建VG

#sdbsdc這兩塊已經創建成PV的硬盤劃分到vg0這個卷組池中,vg0是自定義的名稱,代表一個卷組池(同樣,如果硬盤已經分區,請攜帶分區號)

[root@localhost ~]# vgcreate vg1 /dev/sd{b,c}
  Volume group "vg1" successfully created

#查看VG池

[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg0    1   4   0 wz--n- 59.99g  7.99g
  vg1    2   0   0 wz--n- 39.99g 39.99g

創建好卷組池就能從池中劃分容量給邏輯卷(LV)了。

如何創建LV

#從卷組vg0中拿出10G,分配給lv0,其中-n后面是lv自定義名稱,-L后面跟需要從vg0中分配給lv0的大小以及從哪個VG分配

[root@localhost ~]# lvcreate -n lv0 -L 10G vg1
  Logical volume "lv0" created.
[root@localhost ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root vg0  -wi-ao---- 20.00g                                                    
  swap vg0  -wi-ao----  2.00g                                                    
  usr  vg0  -wi-ao---- 10.00g                                                    
  var  vg0  -wi-ao---- 20.00g                                                    
  lv0  vg1  -wi-a----- 10.00g

創建好lv后就可以格式化它。

文件系統格式化

#創建好的lv所在目錄是"/dev/卷組名稱/邏輯卷名稱",所以本例就是/dev/vg0/lv0,將它格式化成ext4文件系統

[root@localhost ~]# mkfs.ext4 /dev/vg1/lv0

格式化完成后就能掛載使用它了

掛載和使用

#將lv0掛載到/web目錄下(不一定非要掛載到/web才能使用,請根據實際情況掛載到其他目錄)

[root@localhost ~]# mkdir /web
[root@localhost ~]# mount /dev/vg1/lv0 /web/
如何擴充和縮小LVM

只要卷組(VG)中有空余空間,就能將其增加到對應邏輯卷(LV)中;或將對應邏輯卷(LV)中的某些分區刪除,讓其成為卷組(VG)中的空余空間。

如何擴充LV

#首先確保VG池中有足夠的VFree空間可供使用(VSize是這個VG的總大小,VFree是還剩下多少空間可以劃分,PV是這個VG包含多少個物理卷,LV是這個VG以及劃分了多少個邏輯卷)

[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg0    1   4   0 wz--n- 59.99g  7.99g
  vg1    2   1   0 wz--n- 39.99g 29.99g

#給lv0增加5G的大小

[root@localhost ~]# lvextend -L +15G /dev/vg1/lv0
  Size of logical volume vg1/lv0 changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
  Logical volume lv0 successfully resized.

#更新lv0大?。ū仨殻?/span>

[root@localhost ~]# resize2fs /dev/vg1/lv0

#查看,lv0被擴充到了15G

[root@localhost ~]# df -h /dev/vg1/lv0 
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/vg1-lv0   25G   28M   24G   1% /mnt
如何擴充VG

如果此時我們的VG池容量不夠,可以給計算機添加一塊物理硬盤,先將它創建成PV,之后將它放入VG池即可,請看下面的實例:

#新增加一塊硬盤sdd(20G),將它創建成PV后劃分到vg0下,此時vg0的容量將增加sdd硬盤的大小

[root@localhost ~]# pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created
[root@localhost ~]# vgextend vg1 /dev/sdd
  Volume group "vg1" successfully extended
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg0    1   4   0 wz--n- 59.99g  7.99g
  vg1    3   1   0 wz--n- 59.99g 34.99g
如何縮小LV

注意:縮小LV大小有一定風險,可能造成數據丟失,如果不是必要,最好不要縮小它:

#縮小邏輯卷之前,如果此邏輯卷已經掛載,必須先卸載,以lv1為例

[root@localhost ~]# umount /web

#首先對lv0進行檢查

[root@localhost ~]# e2fsck -f /dev/vg1/lv0

#然后縮小文件系統,本例將lv0從15G縮小到10G大小

[root@localhost ~]# resize2fs /dev/vg1/lv0 10G

#最后將lv0縮小5G,縮小有風險,請慎用

[root@localhost ~]# lvreduce -L -5G /dev/vg1/lv0

WARNING: Reducing active logical volume to 20.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv0? [y/n]: y
  Size of logical volume vg1/lv0 changed from 25.00 GiB (6400 extents) to 20.00 GiB (5120 extents).
  Logical volume lv0 successfully resized.

#重新掛載使用

[root@localhost ~]# mount /dev/vg1/lv0 /web/
如何縮小VG

縮小VG比縮小LV稍微安全一點,確保這個要被移除的分區或者硬盤沒有被使用后,可以用下面的命令將它從VG池中去除:

#將sdc這塊硬盤從vg0中移除

root@localhost ~]# vgreduce vg1 /dev/sdd
  Removed "/dev/sdd" from volume group "vg1"
如何創建LVM備份(快照)

注意:邏輯卷的備份是放在和邏輯卷同一個卷組中的,也需要占用卷組的大小,所以卷組的大小不夠備份就不會成功:

[root@localhost ~]# lvcreate -L 10G -s -n lv0bk /dev/vg1/lv0 
  Logical volume "lv0bk" created.
[root@localhost vg1]# ls
lv0  lv0bk

#快照保存了創建時,對應邏輯卷所有數據,路徑"/dev/vg0/lv0back",如果lv0的數據被破壞,只需要將快照文件掛載到某個目錄,然后將其中的數據完整拷貝到lv0即可將lv0恢復到快照創建時的狀態

[root@localhost vg1]# lvs
  LV    VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert                                                  
  lv0   vg1  owi-a-s--- 10.00g                                                    
  lv0bk vg1  swi-a-s--- 10.00g      lv0    0.00
如何刪除LVM

刪除LVM的步驟:如果邏輯卷已掛載,需要先卸載->刪除邏輯卷(LV)->刪除卷組(VG)->刪除物理卷(PV)。

如何刪除LV

#卸載lv1

[root@localhost vg1]# umount /dev/vg1/lv0

#刪除lv0,如果lv0存在快照,會詢問是否刪除快照

[root@localhost vg1]# lvremove /dev/vg1/lv0
Do you really want to remove active logical volume lv0bk? [y/n]: y
  Logical volume "lv0bk" successfully removed
Do you really want to remove active logical volume lv0? [y/n]: y
  Logical volume "lv0" successfully removed

如何刪除VG

[root@localhost vg1]# vgremove vg1
  Volume group "vg1" successfully removed

如何刪除PV

[root@localhost vg1]# pvremove /dev/sd{b,c}
  Labels on physical volume "/dev/sdb" successfully wiped
  Labels on physical volume "/dev/sdc" successfully wiped

 

原創文章,作者:M20_he,如若轉載,請注明出處:http://www.www58058.com/42259

(0)
M20_heM20_he
上一篇 2016-09-01
下一篇 2016-09-01

相關推薦

  • 馬哥門徒Linux運維課程筆記-第1天03講 計算機及操作系統基礎

    第1天03講 計算機及操作系統基礎   ◆  市面上主流Unix廠商簡介         由于Unix系統的流行,當時行業中的主流大廠商都根據SysV或BSD開發了自己的版本,主要分類如下:       ●  IBM公司根據自己CPU硬件架…

    Linux干貨 2015-03-23
  • Shell腳本編程入門

    認識Shell Shell原意為貝殼 Linux系統中的shell是一個特殊的應用程序,它介于操作系統內核與用戶之間,充當一個“命令解釋器”的角色,負責接收用戶輸入的操作指令(命令)并進行解釋,將需要執行的操作傳遞給內核執行,并輸出執行結果。 可以使用命令查看當前使用的是哪種shell以及當前Linux系統中都支持哪些shell種類。   查看當前…

    Linux干貨 2016-08-12
  • OpenSSL 的使用

    OpenSSL 是一個開源項目,其組成主要包括一下三個組件:     openssl:多用途的命令行工具     libcrypto:加密算法庫     libssl:加密模塊應用庫,實現了ssl及tls openssl可以實現:秘鑰證書管…

    Linux干貨 2017-06-07
  • LVS(Linux Virtual Server)學習筆記

    LVS(Linux Virtual Server)學習筆記 此文主要對lvs負載均衡學習的總結,一為記錄,二為鞏固。主要介紹:1、lvs基礎;2、lvs的配置;3、lvs的實現 前提:負載均衡(LB Cluster)     負載均衡實現方法有兩種:硬件實現和軟件實現;    &…

    Linux干貨 2017-02-13
  • 手動編譯內核+busybox+dropbear+nginx

    我們需要先在宿主機上添加一個磁盤,然后,把這個磁盤做好分區和文件系統: fdisk /dev/sdb 創建第一個分區: n p 1 +512M 創建第二個分區: n p 2 +10G 保存退出: w 為分區提供文件系統: kpartx /dev/sdb 為分區提供文件系統: mke2fs -t ext4 /dev/sd…

    Linux干貨 2015-09-24
  • 通過Nginx來安裝一個Discuz

    這次由于時間有限,所以我就沒有用編譯安裝來啟動LMP,只有Nginx 是編譯安裝的 因為是在centos7上面安裝的Nginx所以我們這里由于能力有限,暫時不能將其加入開機啟動,日后我會進行改進,將其加入開機啟動。這里我們給出Nginxd的編譯選項及環境   yum groupinstall "Development&…

    Linux干貨 2016-10-30

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-01 15:26

    文章操作性強,同時建議對邏輯卷的工作原理進行簡介,同時也能通過作圖來展示自己對lvm的理解。

欧美性久久久久