天天看點

邏輯卷擴充實體卷的磁盤邊界

   在日常的使用中我們可能會出現這種情況,就是在系統中有兩塊硬碟,一塊為4GB,另一塊為8GB,這兩塊磁盤的總容量就是12GB,現在有需要将其分為兩塊6GB的磁盤,如果隻是使用普通的分區方式就無法做到了。因為這種需要,是以就有了邏輯卷這個東西,使用邏輯卷我們就可以将所有的磁盤空間進行整合,然後在按照自己的需求來進行配置設定每個分區的空間。邏輯卷的英文叫做:Logical Volume,管理一個邏輯卷需要的工具叫做:Logical Volume Manager,簡稱為:LVM——邏輯卷管理。實作LVM管理的步驟是首先要建立一個實體卷PV,然後基于這個PV實體卷建立卷組和邏輯塊裝置,在建立的卷組的同時指定PE的大小(注意:一旦PE大小被指定,就不允許更改)。在建立完成實體卷之後就可以在已經建立的卷組中建立邏輯卷了。此時的邏輯卷已經是一個按照使用者的想法分好大小的分區了。是以接下來的操作就和如何使用一塊分區是一樣的,是以接下來要在邏輯卷中建立檔案系統(進階格式化)。在建立好檔案系統之後的最後一步就是挂載了。下面分别對這些操作進行詳細的說明。

在進行下面的操作之前,請先在系統中添加一塊至少16GB的硬碟:

    如果是在虛拟機中的centos系統,可以使用設定來添加一塊新的磁盤,在添加之後,要想讓系統識别有兩種方法,第一種是重新開機系統,第二種是使用下面的指令,讓系統重讀接口(三條指令最好都執行一遍,因為不确定新配置設定的磁盤插到哪個接口):

<code>echo</code> <code>"- - -"</code> <code>&gt; </code><code>/sys/class/scsi_host/host0/scan</code>

<code>echo</code> <code>"- - -"</code> <code>&gt; </code><code>/sys/class/scsi_host/host1/scan</code>

<code>echo</code> <code>"- - -"</code> <code>&gt; </code><code>/sys/class/scsi_host/host2/scan</code>

執行上面的指令之後,在使用fdisk -l指令就可以看到新插入的磁盤,圖一:

************************************************

<a href="https://s1.51cto.com/wyfs02/M01/9A/C3/wKiom1laNTuwJG7OAADv5fKQeFs105.jpg-wh_500x0-wm_3-wmp_4-s_3800078410.jpg" target="_blank"></a>

然後在這塊磁盤中使用fdisk指令分出兩個分區,如圖二所示:

<a href="https://s1.51cto.com/wyfs02/M01/9A/C4/wKioL1laNTzAU4ePAAEX1euosoE167.jpg-wh_500x0-wm_3-wmp_4-s_3685431678.jpg" target="_blank"></a>

在配置設定分區之後就可以使用下面的指令對實體卷進行管理操作:

pvcreate:建立實體卷

pvdisplay:顯示實體卷的詳細資訊

pvs:顯示實體卷的簡單資訊

pvremove:删除實體卷

pvmove:将某個實體卷中的所有的PE移動到其他實體卷中;

操作一般是按照以下步驟來進行:

一、建立實體卷

<code>[root@localhost ~]</code><code># pvcreate /dev/sdb1 /dev/sdb2</code>

<code>  </code><code>Physical volume </code><code>"/dev/sdb1"</code> <code>successfully created</code>

<code>  </code><code>Physical volume </code><code>"/dev/sdb2"</code> <code>successfully created</code>

<code>[root@localhost ~]</code><code>#</code>

在建立實體卷之後可以使用pvdisplay和pvs來檢視實體卷的資訊

<code>[root@localhost ~]</code><code># pvdisplay </code>

<code>  </code><code>"/dev/sdb1"</code> <code>is a new physical volume of </code><code>"5.00 GiB"</code>

<code>  </code><code>--- NEW Physical volume ---</code>

<code>  </code><code>PV Name               </code><code>/dev/sdb1</code>

<code>  </code><code>VG Name               </code>

<code>  </code><code>PV Size               5.00 GiB</code>

<code>  </code><code>Allocatable           NO</code>

<code>  </code><code>PE Size               0   </code>

<code>  </code><code>Total PE              0</code>

<code>  </code><code>Free PE               0</code>

<code>  </code><code>Allocated PE          0</code>

<code>  </code><code>PV UUID               FcpUsa-ZhHR-Ytf6-TmD7-p6sU-eZd1-rPj5nc</code>

<code>   </code> 

<code>  </code><code>"/dev/sdb2"</code> <code>is a new physical volume of </code><code>"11.00 GiB"</code>

<code>  </code><code>PV Name               </code><code>/dev/sdb2</code>

<code>  </code><code>PV Size               11.00 GiB</code>

<code>  </code><code>PV UUID               TKz5OL-4tld-hCVg-5aAz-PUCR-ZFPm-fH5XIu</code>

<code>[root@localhost ~]</code><code># pvs</code>

<code>  </code><code>PV         VG   Fmt  Attr PSize  PFree </code>

<code>  </code><code>/dev/sdb1</code>       <code>lvm2 ---   5.00g  5.00g</code>

<code>  </code><code>/dev/sdb2</code>       <code>lvm2 ---  11.00g 11.00g</code>

二、建立卷組,建立卷組就像是将兩個磁盤的容量融合在一起。對卷組的管理操作指令如下:

vgcreate:建立卷組

-s #{kKmMgG}:指定PE的大小,如果省略該選項,預設的PE為4M;

<code>[root@localhost ~]</code><code># vgcreate test /dev/sdb1 /dev/sdb2</code>

<code>  </code><code>Volume group </code><code>"test"</code> <code>successfully created</code>

vgremove:删除卷組

vgextend:擴充卷組容量,将新的pv添加到卷組中

vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

vgreduce:縮減卷組容量,将pv從卷組中移除;在做此操作之前,應該先使用pvmove,保證被移除的pv上沒有被占用的PE;

vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

vgdisplay:顯示卷組的詳細資訊

vgs:顯示卷組的簡短資訊

在建立了卷組之後使用“vgs”指令就可以看到在剛才建立的這個test卷組中有了16G的容量:

<code>[root@localhost ~]</code><code># vgs</code>

<code>  </code><code>VG   </code><code>#PV #LV #SN Attr   VSize  VFree </code>

<code>  </code><code>test</code>   <code>2   0   0 wz--n- 15.99g 15.99g</code>

這樣就把兩個磁盤整合在了一起,接下來的步驟就是類似于在一個磁盤中進行分區

三、建立邏輯卷

對邏輯卷的進行管理操作的指令有:

lvcreate:建立邏輯卷

-L LV_SIZE(#{kK|mM|gG}):指定邏輯卷的大小,不能超過卷組的容量;

-l #%{FREE|VG|ORIGIN|PVS}:指定邏輯卷占用對應存儲單元的百分比;

-n LV_NAME:指定邏輯卷的名稱

-i #:在建立邏輯卷的時候,以條帶的方式建立,并指明這個邏輯卷上有#個條帶

-I #:在建立邏輯卷的時候,以條帶的方式建立,并指明CHUNK的大小;

lvremove:移除邏輯卷

lvdisplay:顯示邏輯卷的詳細資訊

lvs:顯示邏輯卷的簡短資訊

lvchange:修改LV的狀态

-ay:激活邏輯卷

-an:停用邏輯卷

lvextend:擴充邏輯卷的空間,

注意:一定要先擴充邏輯卷的實體邊界,再擴充邏輯卷的邏輯邊界;

使用ext系列檔案系統的時候,resize2fs指令擴充邏輯邊界;

擴大邏輯卷的實體邊界:

     lvextend -L [+]SIZE /PATH/TO/LVM

                   如果SIZE有+:表示在原有邏輯卷容量的基礎上,增加SIZE空間

                   如果SIZE無+:表示将邏輯卷的容量擴大到SIZE空間

     擴大邏輯卷的邏輯邊界:

           e2fsck /PATH/TO/LVM

           resize2fs [-f] /PATH/TO/LVM

lvreduce:縮減邏輯卷的空間

注意:先縮減邏輯卷的邏輯邊界,再縮減邏輯卷的實體邊界;

使用ext系列檔案系統的時候,resize2fs指令縮減邏輯邊界

     lvreduce -L [-]SIZE /PATH/TO/LVM

如果SIZE有-:表示在原有邏輯卷容量的基礎上,削減SIZE空間

如果SIZE無-:表示将邏輯卷的容量直接削減至SIZE空間

        umount /PATH/TO/LVM

e2fsck /PATH/TO/LVM            //強制校驗資料一緻性

resize2fs -f /PATH/TO/LVM LV_SiZE //修改邏輯卷的邏輯邊界,LV_SIZE為調整後的邏輯卷大小

lvchange -an /PATH/TO/LVM      //關閉邏輯卷

lvreduce -L [+]SIZE /PATH/TO/LVM  //修改邏輯卷的實體邊界,大小要和邏輯邊界保持一緻

lvchange -ay /PATH/TO/LVM      //重新激活邏輯卷

mount /PATH/TO/LVM /PATH/TO/LVM_MOUNT_POINT

    建立兩個邏輯卷,均為8GB,但是會執行失敗,因為在建立卷組的時候總共建立的空間為16GB,在這16GB中會占用一定的空間來儲存一些重要的資料,是以在這裡第二塊建立的8GB邏輯卷會失敗,但是隻要配置設定的空間小一點就會成功:

<code>[root@localhost ~]</code><code># lvcreate -L +8G -n lvtest1 test </code>

<code>  </code><code>Logical volume </code><code>"lvtest1"</code> <code>created.</code>

<code>[root@localhost ~]</code><code># lvcreate -L +8G -n lvtest2 test </code>

<code>  </code><code>Volume group </code><code>"test"</code> <code>has insufficient </code><code>free</code> <code>space (2046 extents): 2048 required.</code>

<code>[root@localhost ~]</code><code># lvcreate -L +7G -n lvtest2 test </code>

<code>  </code><code>Logical volume </code><code>"lvtest2"</code> <code>created.</code>

建立成功之後,使用“lvs”指令就可以看到在目前的系統中有了兩個分區:

<code>[root@localhost ~]</code><code># lvs</code>

<code>  </code><code>LV      VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert</code>

<code>  </code><code>lvtest1 </code><code>test</code> <code>-wi-a----- 8.00g                                                    </code>

<code>  </code><code>lvtest2 </code><code>test</code> <code>-wi-a----- 7.00g                                                    </code>

這兩個分區儲存在/dev/目錄中剛才建立的卷組裡

<code>[root@localhost ~]</code><code># ls /dev/test/</code>

<code>lvtest1  lvtest2</code>

    在找到這兩個分區之後就可以在每個分區中建立檔案系統,然後挂載進行使用(建立檔案系統和挂載的方法檢視原先的部落格)。這樣我們就獲得了一個為8GB,一個為7GB的分區,再來看一下原始的分區是5GB和11GB,這就是LVM邏輯卷的功能,它可以使我們在不重新分區的情況下,自由的配置設定磁盤的大小。

    在需要進行資料的備份的時候,就用到了邏輯卷的快照。快照,本身也是一種邏輯卷;目标邏輯卷的另外一個通路路徑;快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準确拷貝,對于需要備份或者複制的現有資料集臨時拷貝以及其它操作來說,快照是最合适的選擇。快照隻有在它們和原來的邏輯卷不同時才會消耗空間。在生成快照時會配置設定給它一定的空間,但隻有在原來的邏輯卷或者快照有所改變才會使用這些空間。當原來的邏輯卷中有所改變時,會将舊的資料複制到快照中。快照中隻含有原來的邏輯卷中更改的資料或者自生成快照後的快照中更改的資料也可以使用lvextend擴充快照卷。快照就是将當時的系統資訊記錄下來,就好像照相一般,若将來有任何資料改動了,則原始資料會被移動到快照區,沒有改動的區域則由快照區和檔案系統共享。由于快照區與原本的LV共用很多PE的區塊,是以快照去與被快照的LV必須要要在同一個VG上!系統恢複的時候的檔案數量不能高于快照區的實際容量。

快照邏輯卷

  lvcreate -L SNAPSHOT_SIZE -s -p r -n SNAPSHOT_NAME /PATH/TO/ORIGIN_LVM

    -L SIZE:指定快照邏輯卷的大小

    -s:建立一個快照邏輯卷

    -p r:建立處理的邏輯卷是隻讀權限

    -n SNAPSHOT_NAME:指定快照邏輯卷的名稱

本文轉自正經的青年51CTO部落格,原文連結:http://blog.51cto.com/11142243/1944190 ,如需轉載請自行聯系原作者

繼續閱讀