LVM以及快照卷的使用

一、LVM工作原理 

1.使用LVM,硬盤驅動器或硬盤驅動器集合就會分配給一個或多個物理卷(physical volumes)物,理卷無法跨越一個以上驅動器。 

2.物理卷被合併成邏輯卷組(logical volume group),唯一的例外是 /boot 分區。/boot 分區不能位於邏輯卷組,因爲引導裝載程序無法讀取它。如果你想把 / 分區放在邏輯捲上,你需要創建一個分開的 /boot分區,它不屬於卷組的一部分。 

  由於物理卷無法跨越多個驅動器,如果你想讓邏輯卷組跨越多個驅動器,你就應該在每個驅動器上創建一個或多個物理卷。 

二、LVM基本概念

LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上建立文件系統。以下LVM相關術語:

(1) 物理存儲介質(The physical media

這裏指系統的存儲設備:硬盤,如:/dev/hda1、/dev/sda等等,是存儲系統最低層的存儲單元。 

(2) 物理卷(physical volume

物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。 

(3) 卷組(Volume Group

LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。 

(4)邏輯卷(logical volume

LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。 

(5) PEphysical extent

每一個物理卷被劃分爲稱爲PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。 

(6) LElogical extent

邏輯卷也被劃分爲被稱爲LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。 

wKiom1arL9jR22eYAABTyOiAHa8173.png

圖1 

從圖1可以看到,PE和LE有着一一對應的關係。一個卷組由一個或多個物理卷組成,邏輯卷建立在卷組上。首先可以看到,物理卷(PV)被由大小等同的基本單元PE組成。邏輯卷就相當於非LVM系統的磁盤分區,可以在其上創建文件系統。

和非LVM系統將包含分區信息的元數據保存在位於分區的起始位置的分區表中一樣,邏輯卷以及卷組相關的元數據也是保存在位於物理捲起始處的VGDA(卷組描述符區域)中。VGDA包括以下內容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。

系統啓動LVM時激活VG,並將VGDA加載至內存,來識別LV的實際物理存儲位置。當系統進行I/O操作時,就會根據VGDA建立的映射機制來訪問實際的物理位置。我們也可以按照圖2簡單地去理解。

wKioL1arMA6wCeHrAACJ6Gkd-9o568.png 

圖2 

三、邏輯卷的配置使用

1>.創建和使用新的LVM邏輯卷的步驟:

建立LVM類型的分區   (fdisk)

l 建立LVM物理卷     (pv)

l 建立LVM卷組      (vg)

l 建立LVM邏輯卷     (lv)

l 建立文件系統     (mkfs.ext2,3,4)

l 掛載文件系統      (mount)

使用文件系統

2>.相關命令:

  (1)物理卷相關命令:

     pvcreate :創建物理卷

   pvscan:在系統的所有磁盤中搜索已存在的物理卷;

     pvdisplay顯示指定物理卷的屬性;

     pvremove:將數據移到某pv上;

     pvmove:刪除某pv

  (2)卷組相關命令

     vgcreate:創建一個新的vg;

   vgmove:刪除卷組;

   vgscan:查看總卷組;

   vgdisplay:查看單個卷組的詳細情況;

     vgextend:把物理卷加入卷組(擴展卷組);

     vgreduce:從卷組中刪除某pv(縮減卷組)

  (3)邏輯卷相關命令:

     lvcreate:創建lv

   lvscan:查看邏輯卷;

   lvdisplay:顯示邏輯卷的詳細信息; 

     lvremove:刪除邏輯卷

     lvextend:擴展邏輯卷大小

     lvreduce:縮減邏輯卷大小

  (4)創建快照卷:snapshot

    #Lvcreate  -L  #[nMgGtT] –p r –s –n snapshot_lv_name original_lv_name

-s: 創建快照卷;

-n快照卷名字

練習:

1.使用fdisk -l 查看分區信息,可以看得到已經有/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8已經被分區好了
   [root@chang ~]# fdisk -l
      Disk /dev/sda: 128.8 GB, 128849018880 bytes
   255 heads, 63 sectors/track, 15665 cylinders
   Units = cylinders of 16065 * 512 = 8225280 bytes
   Sector size (logical/physical): 512 bytes / 512 bytes
   I/O size (minimum/optimal): 512 bytes / 512 bytes
   Disk identifier: 0x00089c7b
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         128     1024000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             128        1403    10240000   83  Linux
/dev/sda3            1403        2040     5120000   82  Linux swap / Solaris
/dev/sda4            2040       15665   109444088+   5  Extended
/dev/sda5            2040        2301     2097727   8e  Linux LVM
/dev/sda6            2302        2563     2104483+  8e  Linux LVM
/dev/sda7            2564        3217     5253223+  8e  Linux LVM
/dev/sda8            3218        3610     3156741   8e  Linux LVM
2.創建物理卷:
  [root@chang ~]# pvdisplay /dev/sda5
  Failed to find device "/dev/sda5"
  [root@chang ~]# pvcreate /dev/sda5
  Device /dev/sda5 not found (or ignored by filtering).  
發現創建失敗;原因新建分區麼有寫進內核;上一步的時候少一個執行命令。解決辦法:
  [root@chang ~]# partx -a
  call: partx -opts [device] wholedisk
  [root@chang ~]# partx -a /dev/sda
  BLKPG: Device or resource busy
  error adding partition 1
  BLKPG: Device or resource busy
  error adding partition 2
  BLKPG: Device or resource busy
  error adding partition 3
  [root@chang ~]# partx -a /dev/sda      //partx  -a  要用兩次
    此時再創建新的物理卷,會看創建成功;
  [root@chang ~]# pvdisplay /dev/sda5
   Failed to find physical volume "/dev/sda5"
  [root@chang ~]# pvcreate /dev/sda5
   Physical volume "/dev/sda5" successfully created
  [root@chang ~]# pvcreate /dev/sda6
   Physical volume "/dev/sda6" successfully created
 3.查看兩個物理卷。
  [root@chang ~]# pvscan 
   PV /dev/sda5         lvm2 [2.00 GiB]
   PV /dev/sda6         lvm2 [2.01 GiB]
   Total: 2 [4.01 GiB] / in use: 0 [0   ] / in no VG: 2 [4.01 GiB]
4.創建卷組:
  [root@chang ~]# vgcreate  changvg   /dev/sda{5,6}
  Volume group "changvg" successfully created
   5.查看卷組:
  [root@chang ~]# vgscan
    Reading all physical volumes.  This may take a while...
    Found volume group "changvg" using metadata type lvm2
  [root@chang ~]# pvscan
    PV /dev/sda5   VG changvg   lvm2 [2.00 GiB / 2.00 GiB free]
    PV /dev/sda6   VG changvg   lvm2 [2.00 GiB / 2.00 GiB free]
    Total: 2 [4.00 GiB] / in use: 2 [4.00 GiB] / in no VG: 0 [0   ]
此時發現物理卷/dev/sda5,/dev/sda6屬於卷組changvg
6.從卷組中刪除一個物理卷:
  [root@chang ~]# pvmove /dev/sda6     //刪除物理卷的時候先把之前PV的數據移走
      No data to move for changvg
  [root@chang ~]# vgreduce changvg /dev/sda6    // pvmove只是將數據移走,但是物理卷還在VG中此時只需使用刪除命令把物理卷從VG中刪除就ok啦
   Removed "/dev/sda6" from volume group "changvg"
     [root@chang ~]# pvscan
   PV /dev/sda5   VG changvg   lvm2 [2.00 GiB / 2.00 GiB free]
   PV /dev/sda6                lvm2 [2.01 GiB]
   PV /dev/sda7                lvm2 [5.01 GiB]
   Total: 3 [9.01 GiB] / in use: 1 [2.00 GiB] / in no VG: 2 [7.02 GiB]
使用pvscan可以知道/dev/sda6已經從卷組changvg中刪除
8.增加一個物理卷:
 [root@chang ~]# vgextend changvg /dev/sda7
   Volume group "changvg" successfully extended
 [root@chang ~]# pvscan
   PV /dev/sda5   VG changvg   lvm2 [2.00 GiB / 2.00 GiB free]
   PV /dev/sda7   VG changvg   lvm2 [5.01 GiB / 5.01 GiB free]
   PV /dev/sda6                lvm2 [2.01 GiB]
   Total: 3 [9.01 GiB] / in use: 2 [7.00 GiB] / in no VG: 1 [2.01 GiB] 
9.創建邏輯卷(單位:M):
  [root@chang ~]# lvcreate -L 2G -n changlv changvg
   Logical volume "changlv" created
  [root@chang ~]# lvscan
   ACTIVE            '/dev/changvg/changlv' [2.00 GiB] inherit
 以同樣的方式在guptVG1上建立guptLV2和guptLV3:
  [root@chang ~]# lvcreate -L 2G -n changlv1 changvg
  Logical volume "changlv1" created
  [root@chang ~]# lvcreate -L 2G -n changlv2 changvg     //–L 100m是邏輯卷的大小,-n後面跟的是邏輯卷的名字。
      Logical volume "changlv2" created
  [root@chang ~]# lvscan 
   ACTIVE            '/dev/changvg/changlv' [2.00 GiB] inherit
   ACTIVE            '/dev/changvg/changlv1' [2.00 GiB] inherit
   ACTIVE            '/dev/changvg/changlv2' [2.00 GiB] inherit
10.建文件系統(格式化):
 [root@chang ~]# mkfs.ext4 /dev/changvg/changlv
 [root@chang ~]# mkfs.ext4 /dev/changvg/changlv1
 [root@chang ~]# mkfs.ext4 /dev/changvg/changlv2
    11.掛載邏輯卷:
先在/tmp下創建changlv,changlv1,changlv2:
 [root@chang ~]# mkdir   /tmp/changl{v,v1,v2}
再把changlv掛載到/tmp/changlv,把changlv1和changlv2掛載到/tmp/changlv1和/tmp/changlv2上並查看掛載情況:
 [root@chang ~]# mount /dev/changvg/changlv   /tmp/changlv
 [root@chang ~]# mount /dev/changvg/changlv1   /tmp/changlv1
 [root@chang ~]# mount /dev/changvg/changlv2   /tmp/changlv2
 [root@chang ~]# mount 
 /dev/sda2 on / type ext4 (rw)
 proc on /proc type proc (rw)
 sysfs on /sys type sysfs (rw)
 devpts on /dev/pts type devpts (rw,gid=5,mode=620)
 /dev/sda1 on /boot type ext4 (rw)
 tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
 /dev/sr0 on /mnt type iso9660 (ro)
 /dev/mapper/changvg-changlv on /tmp/changlv type ext4 (rw)
 /dev/mapper/changvg-changlv1 on /tmp/changlv1 type ext4 (rw)
 /dev/mapper/changvg-changlv2 on /tmp/changlv2 type ext4 (rw)
12.自動加載文件系統
在/etc/fstab這個文件中加入以下內容:
 [root@chang ~]# cat /etc/fstab 
 
 #
 # /etc/fstab
 # Created by anaconda on Sun Sep  6 02:18:09 2015
 #
 # Accessible filesystems, by reference, are maintained under '/dev/disk'
 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
 #
 UUID=d5509200-4641-4e0c-a7ff-d424bdc56001 /                       ext4    defaults        1 1
 UUID=fb394fa9-e2a8-4ed2-8cb1-c3728d685f10 /boot                   ext4    defaults        1 2
 UUID=1a25e5fc-d479-445c-a4b4-e01208932468 swap                    swap    defaults        0 0
 tmpfs                   /dev/shm                tmpfs   defaults        0 0
 devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
 sysfs                   /sys                    sysfs   defaults        0 0
 proc                    /proc                   proc    defaults        0 0
 /dev/changvg/changlv    /tmp/changlv            ext4    defaults        0 0
 /dev/changvg/changlv1   /tmp/changlv1           ext4    defaults        0 0 
 /dev/changvg/changlv2   /tmp/changlv2           ext4    defaults        0 0
13.刪除一個邏輯卷     
注意在刪除前要先卸載這個邏輯卷。操作如下:
   
 [root@chang ~]# umount /tmp/changlv1
 [root@chang ~]# lvremove  /dev/changvg/changlv1
 Do you really want to remove active logical volume changlv1? [y/n]: y
   Logical volume "changlv1" successfully removed
 [root@chang ~]# lvscan
   ACTIVE            '/dev/changvg/changlv' [2.00 GiB] inherit
   ACTIVE            '/dev/changvg/changlv2' [2.00 GiB] inherit
14.擴展、縮減邏輯卷大小
 [root@chang ~]# lvextend -L  +1G  /dev/changvg/changlv
   Size of logical volume changvg/changlv changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents).
   Logical volume changlv successfully resized
 [root@chang ~]# lvscan 
   ACTIVE            '/dev/changvg/changlv' [3.00 GiB] inherit
   ACTIVE            '/dev/changvg/changlv2' [2.00 GiB] inherit       //以爲只是使用擴展命令就行了嗎。錯了,這只是擴展了邏輯卷,並沒有把物理卷給擴展
     [root@chang ~]# e2fsck -f /dev/changvg/changlv     //強制檢查lv
 [root@chang ~]# resize2fs /dev/changvg/changlv       //重新定義分區大小
     把changlv增少100MB:  縮減邏輯卷恰好跟擴展邏輯卷相反
 [root@chang ~]# e2fsck -f /dev/changvg/changlv      //強制檢查lv
 [root@chang ~]# resize2fs /dev/changvg/changlv 100M    //縮減邏輯卷
    
 [root@chang ~]# lvreduce -L -100M -n /dev/changvg/changlv   //縮減物理邊界
 WARNING: Reducing active logical volume to 2.90 GiB
 THIS MAY DESTROY YOUR DATA (filesystem etc.)
 Do you really want to reduce changlv? [y/n]: y      //此時會出現一個對話框(因爲縮減邏輯卷有風險)
  Size of logical volume changvg/changlv changed from 3.00 GiB (768 extents) to 2.90 GiB (743 extents).
 Logical volume changlv successfully resized
 [root@chang ~]# lvscan
  ACTIVE            '/dev/changvg/changlv' [2.90 GiB] inherit
 ACTIVE            '/dev/changvg/changlv2' [2.00 GiB] inherit
然後掛載便可使用:
  [root@chang ~]# mount 
  /dev/sda2 on / type ext4 (rw)
  proc on /proc type proc (rw)
  sysfs on /sys type sysfs (rw)
  devpts on /dev/pts type devpts (rw,gid=5,mode=620)
  /dev/sda1 on /boot type ext4 (rw)
  tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
  /dev/sr0 on /mnt type iso9660 (ro)
  /dev/mapper/changvg-changlv2 on /tmp/changlv2 type ext4 (rw)
  /dev/mapper/changvg-changlv on /tmp/changlv type ext4 (rw)
 
15.創建快照卷:
    
 [root@chang changlv]# cp  /etc/fstab  ./
 [root@chang changlv]# cp  /etc/passwd  ./ 
 [root@chang changlv]# ls
 fstab  lost+found  passwd
先在之前的邏輯卷添加點東西
創建快照卷:
  [root@chang ~]# lvcreate -L 100M -s -n snap  /dev/changvg/changlv
  Logical volume "snap" created
  [root@chang ~]# lvscan
  ACTIVE   Original '/dev/changvg/changlv' [2.90 GiB] inherit
  ACTIVE            '/dev/changvg/changlv2' [2.00 GiB] inherit
  ACTIVE   Snapshot '/dev/changvg/snap' [100.00 MiB] inherit
掛載快照卷:
   
  [root@chang ~]# mkdir  /tmp/snap
   [root@chang ~]# mount  /dev/changvg/snap   /tmp/snap
   [root@chang ~]# ls  /tmp/snap
   fstab  lost+found  passwd      //可以看得到快照卷已成功
   [root@chang changlv]# rm -rf  fstab     //  破壞原卷內容
   [root@chang changlv]# ls
   lost+found  passwd
   [root@chang tmp]# cd snap/
   [root@chang snap]# ls
   fstab  lost+found  passwd         //可以看得到雖然原卷已經被破壞了,但是快照卷裏面的東西還在此時只需要回覆快照卷就ok了。


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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