LVM學習及使用

LVM 是一種可用在Linux內核的邏輯分卷管理器;可用於管理磁盤驅動器或其他類似的大容量存儲設備。

LVM基本組成

LVM利用Linux內核的device-mapper來實現存儲系統的虛擬化(系統分區獨立於底層硬件)。 通過LVM,你可以實現存儲空間的抽象化並在上面建立虛擬分區(virtual partitions),可以更簡便地擴大和縮小分區,可以增刪分區時無需擔心某個硬盤上沒有足夠的連續空間。LVM是用來方便管理的,不會提供額外的安全保證。

LVM的基本組成塊(building blocks)如下:

  • 物理卷Physical volume (PV):可以在上面建立卷組的媒介,可以是硬盤分區,也可以是硬盤本身或者回環文件(loopback file)。物理捲包括一個特殊的header,其餘部分被切割爲一塊塊物理區域(physical extents)。 

  • 卷組Volume group (VG):將一組物理卷收集爲一個管理單元。

  • 邏輯卷Logical volume (LV):虛擬分區,由物理區域(physical extents)組成。

  • 物理區域Physical extent (PE):硬盤可供指派給邏輯卷的最小單位(通常爲4MB)。


示例:

兩塊物理硬盤
               
 硬盤1 (/dev/sda):
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
   |分區1 50GB (物理卷)           |分區2 80GB (物理卷)            |
   |/dev/sda1                    |/dev/sda2                     |
   |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ __|
                                 
 硬盤2 (/dev/sdb):
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
   |分區1 120GB (物理卷)                         |
   |/dev/sdb1                                   |
   | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
LVM方式

 卷組VG1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __
   |邏輯卷1 15GB                  |邏輯卷2 35GB                        |邏輯卷3 200GB                         |
   |/dev/MyStorage/rootvol        |/dev/MyStorage/homevol             |/dev/MyStorage/mediavol              |
   |_ _ _ _ _ _ _ _ _ _ _ _ _ _ __|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|

優點

比起正常的硬盤分區管理,LVM更富於彈性:

  • 使用卷組(VG),使衆多硬盤空間看起來像一個大硬盤。

  • 使用邏輯卷(LV),可以創建跨越衆多硬盤空間的分區。

  • 可以創建小的邏輯卷(LV),在空間不足時再動態調整它的大小。

  • 在調整邏輯卷(LV)大小時可以不用考慮邏輯卷在硬盤上的位置,不用擔心沒有可用的連續空間。It does not depend on the position of the LV within VG, there is no need to ensure surrounding available space.

  • 可以在線(online)對邏輯卷(LV)和卷組(VG)進行創建、刪除、調整大小等操作。LVM上的文件系統也需要重新調整大小,某些文件系統也支持這樣的在線操作。

  • 無需重新啓動服務,就可以將服務中用到的邏輯卷(LV)在線(online)/動態(live)遷移至別的硬盤上。

  • 允許創建快照,可以保存文件系統的備份,同時使服務的下線時間(downtime)降低到最小。

這些優點使得LVM對服務器的管理非常有用,對於桌面系統管理的幫助則沒有那麼顯著,你需要根據實際情況進行取捨。

缺點

  • 在系統設置時需要更復雜的額外步驟,且文件一旦被誤刪除想要恢復會比普通磁盤分區恢復更加困難。


創建LVM步驟:


一、將擴展的硬盤分區

新加一塊SCSI硬盤,需要將其分成三個區:
代碼:

#fdisk  /dev/sdb
進入fdisk模式:
  Command (m for help):p //查看新硬盤的分區
  Command (m for help):n //創建新分區


   可以用m命令來看fdisk命令的內部命令;n命令創建一個新分區;d命令刪除一個存在的分區;p命令顯示分區列表;t命令修改分區的類型ID號;l命令顯示分區ID號的列表;a命令指定啓動分區;w命令是將對分區表的修改存盤讓它發生作用。

Command action
e extended //輸入e爲創建擴展分區
p primary partition (1-4) //輸入p爲創建主分區,這裏我們選擇p


Partion number(1-4):1 //第一個擴展分區,按你需求可以最多分4個主分區
  First Cylinder(1-1014,default 1): 1 //第一個主分區起始的磁盤塊數
  Last cylindet or +siza or +sizeM or +sizeK: +1024MB //可以是以MB爲單位的數字或者以
磁盤塊數,這裏我們輸入+1024MB表示分區大小爲1G。



這樣我們就創建完一個分區,如果要創建更多分區可以照上面的步驟繼續創建。


創建完後用w保存分區。
代碼:


Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

#partprobe   //不用重啓可使以上操作生效。

這樣就分區完,我們還要進行格式化

代碼:


#mkfs.ext3  /dev/sdb1 //如果有多個分區


二、創建邏輯卷的步驟:


  1)通過pvcreate命令將linux分區處理成物理卷(PV);
  2)通過vgcreate命令將創建好的物理卷處理成卷組(Vg);
  3)通過lvcreate命令將卷組分成若干個邏輯卷(Lv);


之後我們可以對邏輯捲進行格式化,掛載,刪除等操作,我們可以動態的調整邏輯卷的大小,並且該操作不會影響我們在邏輯卷(Lv)上的數據。

注:後面會對各個命令進行詳解,以便大家閱讀


三、物理卷創建管理操作:

  1)pvcreate創建物理卷:( 把普通Linux分區變成物理卷)

   格式:pvcreate /dev/sdb{1,2,3...}

例如:

   # pvcreate /dev/sdb{1,2,3,5,6,7}
  Physical volume "/dev/sdb3" successfully created
  Physical volume "/dev/sdb5" successfully created
  Physical volume "/dev/sdb6" successfully created
  Physical volume "/dev/sdb7" successfully created

  2)pvscan查看物理卷信息:會顯示所有物理卷的情況。

   格式:pvscan

例如:

   # pvscan

  PV /dev/sdb1                      lvm2 [964.81 MB]
  PV /dev/sdb2                      lvm2 [964.84 MB]
  PV /dev/sdb3                      lvm2 [964.84 MB]
  PV /dev/sdb5                      lvm2 [964.81 MB]
  PV /dev/sdb6                      lvm2 [964.81 MB]
  PV /dev/sdb7                      lvm2 [964.81 MB]
  Total: 6 [5.65 GB] / in use: 0 [0   ] / in no VG: 6 [5.65 GB]

  3)pvdisplay查看各個物理卷的詳細參數:

  格式:pvdisplay [/dev/sdb{1,2,3...}]  不跟參數則顯示所有的物理卷信息

例如:

 # pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "964.81 MB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name
  PV Size               964.81 MB
  Allocatable                  NO
  PE Size (KByte)                0
  Total PE                     0
  Free PE                      0
  Allocated PE                  0 
  PV UUID               

  4)pvremove刪除物理卷:當物理卷裏的擴展快沒有被使用時可以刪除。

   格式:pvremove /dev/sdb5

四.卷組的創建管理:


1)vgcreate創建卷組:
  格式:vgcreate [-s  <8M|16M|...>] vg0 /dev/sdb{1,2,3...}
    -s:指定擴展塊(PE)的大小,默認爲4MB;(相當與磁盤上的簇,擴展邏輯卷的基本單位。後面的值可以是8M 16M 32M 64M .....最多65532個擴展塊。
    vg0:新創建的卷組的名字。
    /dev/sdb{1,2,3...}:需要的物理卷可以寫多個;

例如:

   # vgcreate vg0 /dev/sdb{1,2,3}
   Volume group "vg0" successfully created
2)vgdisplay查看各個卷組的詳細參數:
   格式:vgdisplay  /dev/vg0

例如

  # vgdisplay /dev/vg0
  --- Volume group ---
  VG Name               vg0
  System ID
  Format                    lvm2
  Metadata Areas               3
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  Cur PV                3
  Act PV                3
  VG Size               2.82 GB
  PE Size               4.00 MB   //擴展快大小 默認4MB
  Total PE              723
  Alloc PE / Size              0 / 0
  Free  PE / Size             723 / 2.82 GB

3)vgscan查看卷組的信息:
    格式:vgsacn
例如 

# vgscan
  Found volume group "vg1" using metadata type lvm2
  Found volume group "vg0" using metadata type lvm2

4)vgreduce縮小卷組:把物理卷重卷組中刪除。
    格式:vgreduce vg0 /dev/sdb3
例如  

# vgreduce vg0 /dev/sdb3
   Removed "/dev/sdb3" from volume group "vg0"

4)vgextend擴展卷組:把某個物理卷添加到卷組中。
     格式:vgextend vg0 /dev/sdb2   將物理卷/dev/sdb2添加到vg0卷組       
例如  

# vgextend vg0 /dev/sdb3
  Volume group "vg0" successfully extended

5)vgremove刪除卷組:
    格式:vgremove /dev/vg1

五、邏輯卷的創建及管理:

1)lvcreate創建邏輯卷命令:
    格式1:lvcreate -L 512M -n data vg0
      -L 512M:設置邏輯卷的大小爲512M。
      -n data:設置邏輯卷的名字爲data ;表示法:/dev/卷組名/data
      vg0 :設置是有那個卷組生成的邏輯卷。

例如

# lvcreate -L 1000M -n data vg0
    Logical volume "data" created
    //創建一個容量爲1000MB的邏輯卷data

式2:lvcreate -l 32 -n data vg0
     -l 32:生成的邏輯卷使用32個擴展塊,邏輯卷大小=32*PE(默認4M)則爲128M
     -n data:邏輯卷的名字;
     vg0 :設置是有那個卷組生成的邏輯卷。
例如

# lvcreate -l 32 -n data128 vg0
    Logical volume "data128" created
    //創建一個32個擴展塊,容量爲32*4=128MB的邏輯卷data128

2)格式化邏輯卷:
mkfs.ext3 /dev/vg0/data  

3)lvsacn查看邏輯卷的信息:

例如

# lvscan
 ACTIVE            ‘/dev/vg0/data‘ [1000.00 MB] inherit

4)lvdisplay查看邏輯卷的具體參數:
例如 

# lvdisplay /dev/vg0/data
  --- Logical volume ---
  LV Name                /dev/vg0/data
  VG Name                vg0
  LV UUID                9Od1nq-cHmY-MlrL-vgXW-7Kam-pAfU-Qc8mal
  LV Write Access                read/write
  LV Status                    available
  # open                 0
  LV Size                1000.00 MB
  Current LE                   250
  Segments                     2
  Allocation                    inherit
  Read ahead sectors              auto
  - currently set to              256
  Block device                  253:0

5)增大邏輯卷大小:
  lvextend命令:增大邏輯卷大小
  格式:lvextend -L +100M /dev/vg0/data
例如 

# lvextend -L +1000M /dev/vg0/data
  Extending logical volume data to 1.95 GB
  Logical volume data successfully resized

   resize2fs /dev/vg0/data  使上面增加的立即生效。

6)減少邏輯卷大小:
  lvreduce命令:減少邏輯卷大小
  格式:Lvreduce -L -100M /dev/vg0/data
   # lvreduce -L -1000M /dev/vg0/data
  WARNING: Reducing active logical volume to 1000.00 MB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce data? [y/n]: y
  Reducing logical volume data to 1000.00 MB
  Logical volume data successfully resized

   resize2fs /dev/vg0/data  使上面增加的立即生效。

7)lvremove刪除邏輯卷:
  格式:lvremove /dev/卷組名/邏輯卷名
例如   

# lvremove /dev/vg0/data128
Do you really want to remove active logical volume "data128"? [y/n]: y
  Logical volume "data128" successfully removed
  # lvscan
  ACTIVE            ‘/dev/vg0/data‘ [1000.00 MB] inherit


六、掛載

將新分的卷掛載在需要掛載的目錄下:


格式:mount /dev/<vgname>/<lvname>  /要掛載的點


Mkdir –p  /tmp/123      //建掛載點  在/tmp/123 下掛載


# Mount  /dev/VolGroup0/data  /tmp/123


設置永久掛載:


# vi /etc/fstab


/dev/VolGroup0/data      /tmp/123     ext3       defaults  0 0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章