邏輯卷LVM的實現

LVM(Logical Volume Manager,邏輯卷管理)可以實現把多個實體硬盤分區整合在一起,當作一個硬盤來重新操作處理。最重要的是LVM不像傳統分區一旦確定分區大小就不能再調整,它允許我們彈性的調整分區及文件系統容量!

邏輯卷LVM的實現

通過幾道練習題來說明LVM的實現

1、創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄
2、新建用戶 archlinux,要求其家目錄為/users/archlinux,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄
3、擴展testlv至7G,要求archlinux用戶的文件不能丟失
4、收縮testlv至3G,要求archlinux用戶的文件不能丟失
5、對testlv創建快照,并嘗試基于快照備份數據,驗正快照的功能

題1: PV、VG、LV的創建

[root@centos6 ~]fdisk /dev/sda                           <--調整分區sda1 id為8e
[root@centos6 ~]fdisk /dev/sdc                           <--調整分區sdc1 id為8e
[root@centos6 ~]#pvcreate /dev/sd{a6,c1}                 <--指定分區為PV
  Physical volume "/dev/sda6" successfully created
  Physical volume "/dev/sdc1" successfully created
[root@centos6 ~]#vgcreate -s 16M vg0 /dev/sd{a6,c1}      <--創建vg;-s 指定PE大小
  Volume group "vg0" successfully created
[root@centos6 ~]#lvcreate -n testlv -L 5G vg0            <--創建lv; -n 指定lv名字;-L 按照容量指定lv大小[MGT]參考1)
Wiping software RAID md superblock on /dev/vg0/testlv.
  Logical volume "testlv" created.
[root@centos6 ~]#mkfs.ext4 /dev/vg0/testlv               <--為lv指定文件系統
[root@centos6 ~]#mount /dev/vg0/testlv /app/lvm          <--掛載lv; 在/etc/fstab添加可實現開機自動掛載  

1)lv創建的時候也可以按照PE數量指定
  為testlv分配3000 個PE:lvcreate -n testlv -l 3000 vg0    
  把卷組所有PE分配給testlv:lvcreate -n testlv -l 100%vg vg0  
2)PV、VG、LV信息查詢

[root@centos6 ~]#pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda6
  VG Name               vg0
  PV Size               10.00 GiB / not usable 4.58 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              640                                     <--按照指定PE Size,該PV劃分的PE數量
  Free PE               320                                     <--剩余沒有分配給LV的PE數量
  Allocated PE          320                                     <--已經分配給LV的PE數量
  PV UUID               rbsdXo-s39N-vGar-Oxuc-5E6Z-sIuD-rZP5el
   
  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               vg0
  PV Size               10.00 GiB / not usable 4.54 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              640
  Free PE               640
  Allocated PE          0
  PV UUID               T9ehfV-wSc8-ez1y-ZlNF-T9P2-PU87-2rFe7Q
[root@centos6 ~]#vgdisplay 
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  14
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               20.00 GiB
  PE Size               16.00 MiB
  Total PE              1280
  Alloc PE / Size       320 / 5.00 GiB
  Free  PE / Size       960 / 15.00 GiB
  VG UUID               YlqvPD-Vhsk-2vxR-G5SY-X1HM-3GUk-BNoUzq
[root@centos6 ~]#lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg0/testlv
  LV Name                testlv
  VG Name                vg0
  LV UUID                nx4ENL-mE35-xlIf-DWQl-6f6j-m2t1-uznnNd
  LV Write Access        read/write
  LV Creation host, time centos6.ffu.com, 2017-06-22 15:29:38 +0800
  LV Status              available
  # open                 0
  LV Size                5.00 GiB
  Current LE             320                                           <--等同于PE數量
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

題2:

[root@centos6 app]#useradd -m -k /etc/skel -d /app/lvm/archlinux archlinux
[root@centos6 app]#su archlinux [archlinux@centos6 app]$cp -r /etc/pam.d/ lvm/archlinux/

題3:lv的擴展
邏輯卷的擴展是在線擴展,不用卸載lv,不影響用戶使用

[root@centos6 app]#lvextend -L +2G /dev/vg0/testlv                  <---L 按照容量指定擴展大小(Num增加到;+Num額外增加);參考1)
[root@centos6 archlinux]#df -hTP
Filesystem             Type     Size  Used Avail Use% Mounted on
/dev/sda2              ext4      96G  9.6G   82G  11% /
tmpfs                  tmpfs    491M   76K  491M   1% /dev/shm
/dev/sda3              ext4      48G  125M   46G   1% /app
/dev/sda1              ext4     969M   35M  885M   4% /boot
/dev/sdb7              ext4     2.0G  923M 1016M  48% /testdir
/dev/sr0               iso9660  3.7G  3.7G     0 100% /media/CentOS_6.9_Final
/dev/mapper/vg0-testlv ext4     4.8G   11M  4.6G   1% /app/lvm       <--沒有擴展文件系統,沒有識別增加的2G 
[root@centos6 archlinux]#resize2fs /dev/vg0/testlv                   <--同步文件系統;參考2) [root@centos6 archlinux]#df -hTP
Filesystem             Type     Size  Used Avail Use% Mounted on
/dev/sda2              ext4      96G  9.6G   82G  11% /
tmpfs                  tmpfs    491M   76K  491M   1% /dev/shm
/dev/sda3              ext4      48G  125M   46G   1% /app
/dev/sda1              ext4     969M   35M  885M   4% /boot
/dev/sdb7              ext4     2.0G  923M 1016M  48% /testdir
/dev/sr0               iso9660  3.7G  3.7G     0 100% /media/CentOS_6.9_Final
/dev/mapper/vg0-testlv ext4     6.8G   12M  6.5G   1% /app/lvm

1)同樣可以按照PV數量指定
  為testlv新增600個PE:lvextend -l 600 /dev/vg0/testlv    
  把卷組剩余所有空閑PE分配給testlv:lvextend -l 100%free /dev/vg0/testlv
2)resize2fs 只用于ext系統;對于xfs系統要用xfs_growfs +掛載點(注意不是設備名)
  此例中是在掛載的狀態下進行擴展,如果事先卸載的話,就需要先進行強制磁盤檢查–> e2fsck -f /dev/vg0/testlv 
  其實在擴展lv時加上-r選項就可以一并擴展文件系統–> lvextend -r -l +100%free /dev/vg0/testlv  

題4:lv的縮減

邏輯卷的擴展會影響用戶使用,不能在線擴展

[root@centos6 archlinux]#cp /app/lvm /app/test  -r                    <--縮減會影響用戶使用,不能在線操作,縮減之前建議先備份  
[root@centos6 ~]#umount /app/lvm                                      <--必須先卸載
[root@centos6 ~]#e2fsck -f /dev/vg0/testlv                            <--強制磁盤檢查;必要步驟
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity`
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg0/testlv: 80/458752 files (0.0% non-contiguous), 64511/1835008 blocks
[root@centos6 ~]#resize2fs /dev/vg0/testlv 3G                         <--先縮減文件系統
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg0/testlv to 786432 (4k) blocks.
The filesystem on /dev/vg0/testlv is now 786432 blocks long.
[root@centos6 ~]#lvreduce -L 3G /dev/vg0/testlv                       <--再縮減邏輯卷
  WARNING: Reducing active logical volume to 3.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/testlv? [y/n]: y
  Size of logical volume vg0/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents).

  Logical volume testlv successfully resized.
[root@centos6 ~]#mount /dev/vg0/testlv /app/lvm                       <--掛載
[root@centos6 ~]#ls /app/lvm                                          <--數據并沒有丟失
archlinux  lost+found 

題5:快照的使用
快照是一種特殊的邏輯卷,它是在生成快照時對存在同一VG下的邏輯卷的準確拷貝。
快照區有兩部分組成:變更之前的數據和未變更的數據組成。當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中,而沒有被變動的數據依舊保持在原本的區塊內。

[root@centos6 ~]#df -hP                                                      <--查看要備份的lv上的數據大小
Filesystem              Size  Used Avail Use% Mounted on
/dev/sda2                96G  9.6G   82G  11% /
tmpfs                   491M   76K  491M   1% /dev/shm
/dev/sda3                48G  125M   46G   1% /app
/dev/sda1               969M   35M  885M   4% /boot
/dev/sdb7               2.0G  923M 1016M  48% /testdir
/dev/sr0                3.7G  3.7G     0 100% /media/CentOS_6.9_Final
/dev/mapper/vg0-testlv  2.9G  7.8M  2.7G   1% /app/lvm                       <--快照大小設置應不大于數據大小
[root@centos6 ~]#lvcreate -n testlv-snapshot -s -L 16M -p r /dev/vg0/testlv  <--參考1)
  Logical volume "testlv-snapshot" created.
[root@centos6 ~]#lvdisplay                                                   <--可以查看快照邏輯卷
[root@centos6 app]#mkdir snap
[root@centos6 app]#mount /dev/vg0/testlv-snapshot /app/snap                  <--掛載快照
mount: block device /dev/mapper/vg0-testlv--snapshot is write-protected, mounting read-only
[root@centos6 lvm]#rm -rf /app/lvm/archlinux/                                <--刪除邏輯卷testlv上的archlinux目錄
[root@centos6 lvm]#ls ../snap                                                <--可以看到快照中archlinux目錄還在
archlinux  lost+found
利用快照恢復testlv
[root@centos6 app]#umount /app/lvm                                           <--卸載邏輯卷
[root@centos6 app]#umount /app/snap/                                         <--卸載快照
[root@centos6 app]#lvconvert --merge /dev/vg0/testlv-snapshot                <--利用快照testlv-snapshot恢復testlv
  Merging of volume testlv-snapshot started.
  testlv: Merged: 100.0%
  Merge of snapshot into logical volume testlv has finished.
  Logical volume "testlv-snapshot" successfully removed                      <--恢復后快照自動刪除;參考2)
[root@centos6 app]#mount /dev/vg0/testlv /app/lvm
[root@centos6 app]#ls /app/lvm                                               <--archlinux目錄已經恢復
archlinux  lost+found

1)-s 指定創建的邏輯卷為快照;-n 指定快照名字;-L 指定快照大小(至少為設定的PE大小);
  -p r 設為只讀屬性,也可以掛載時候設置–>mount -o ro /dev/vg0/testlv-snapshot /app/snap
2)快照恢復也可手動把快照內數據復制到對應邏輯卷掛載目錄下;手動刪除快照命令為:#lvremove /dev/vg0/testlv-snapshot

補充:如何移除一個PV
沿用上例,移除sda6設備,首先要查看該設備上是否有分配給lv的PE(注意不是數據),如果有要轉移到對應vg下的其它pv上, 而且其PE數量要小于對應vg的剩余free PE數量

[root@centos6 ~]#pvdisplay                                                  
  --- Physical volume ---
  PV Name               /dev/sda6
  VG Name               vg0
  PV Size               10.00 GiB / not usable 4.58 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              640
  Free PE               448
  Allocated PE          192                                                   <--需要把192個PE轉移到/dev/sdc1
  PV UUID               rbsdXo-s39N-vGar-Oxuc-5E6Z-sIuD-rZP5el
   
  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               vg0
  PV Size               10.00 GiB / not usable 4.54 MiB
  Allocatable           yes 
  PE Size               16.00 MiB
  Total PE              640
  Free PE               640
  Allocated PE          0
  PV UUID               T9ehfV-wSc8-ez1y-ZlNF-T9P2-PU87-2rFe7Q
[root@centos6 ~]#pvmove /dev/sda6 /dev/sdc1
  /dev/sda6: Moved: 0.5%
  /dev/sda6: Moved: 15.6%
  /dev/sda6: Moved: 30.7%
  /dev/sda6: Moved: 56.8%
  /dev/sda6: Moved: 78.6%
  /dev/sda6: Moved: 100.0%
[root@centos6 ~]#vgreduce vg0 /dev/sda6                                    <--把pv/dev/sda6從vg0中移除
  Removed "/dev/sda6" from volume group "vg0"
[root@centos6 ~]#pvremove /dev/sda6                                        <--把設備/dev/sda6從pv中移除
  Labels on physical volume "/dev/sda6" successfully wiped

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

(0)
ffuffu
上一篇 2017-06-25
下一篇 2017-06-25

相關推薦

  • lvm簡要及基本操作

        LVM( Logical Volume Manage,邏輯 邏輯卷管理)LVM將一個或多個硬盤的分區在邏輯上集合,相當于一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對于普通的磁盤分區有很大的靈活性。  &nbs…

    Linux干貨 2016-05-23
  • 文本處理工具sed

    處理文本的工具sed Stream EDitor,  行編輯器     sed 是一種流編輯器,它一次處理一行內容。處理時,把     當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(     pa…

    Linux干貨 2016-08-10
  • 基于ansible role實現LAMP平臺批量部署

    前言 作為運維人員,當面對幾十臺或上百臺服務器需要修改某個參數或部署某個平臺,你將從何入手呢?ansible的出現很好的解決了這一困擾,ansible基于Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。本文帶來的是基于Ansible Role…

    Linux干貨 2015-06-11
  • 權限管理

    權限管理 在linux中的每一個文件或目錄都包含有訪問權限,這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄。 我們先來看看文件的屬性: 權限: r:可獲取文件數據(讀取文件) w:可修改文件的數據(寫入數據) x:可以把此文件提請內核啟動為一個進程 (執行) 文件的權限主要針對三類對象進行定義:  owner: 屬主, u  grou…

    Linux干貨 2016-08-05
  • Linux運維實戰之6:掛載/卸載磁盤分區

    上次博文我們具體討論了Linux系統中磁盤的分區及格式化( http://www.www58058.com/60811),本次博文我們具體來說說分區的掛載哈! 【問題引入】 已經格式化好的分區如何與系統現有的文件系統建立關聯(如何使用新分區)? 新的磁盤分區創建完成并格式化之后需要掛載(或裝入)到目錄樹上才能被使用。 何謂掛載/卸載? 【答】將某個…

    Linux干貨 2016-12-04
  • btrfs文件系統管理與應用

    btrfs(b-tree、butter fs、better fs),oracle公司研發的替代ext系列的cow機制的文件系統;GPL 核心特性: 多物理卷支持;btrfs可由多個底層物理卷組成;支持RAID,以聯機“添加”、“移除”、“修改”; 寫時復制更新機制(CoW):復制、更新及替換指針,而非“就地”更新; 數據及元數據校驗碼:checksum 子卷…

    Linux干貨 2017-12-18
欧美性久久久久