邏輯卷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 18:50
下一篇 2017-06-25 21:17

相關推薦

  • 初識mysql:基本原理和使用

    一、 數據庫的出現      1. 數據庫是什么: 數據庫簡單來說,就是存儲數據的地方(廢話),對于用戶認證這個過程來說,當用戶登錄服務器時, 系統需要把用戶的輸入的用戶認證信息和存儲的用戶認證信息進行比對,這一過程就需要事先把所有用戶的信息存儲在一個數據庫中,然后逐條進行比對。早起最傳統的數據庫當然就是文本…

    Linux干貨 2015-06-04
  • 深入解析:分布式系統的事務處理經典問題及模型(轉載分享)

    摘要:分布式系統需要在數據完整、一致性和性能間做平衡。本文系統介紹了處理分布式數據一致性的技術模型,如:Master-Slave,Master-Master,2PC/3PC,經典的將軍問題,Paxos,以及Dynamo的NRW和VectorClock的模型。 編者按:數據服務的高可用是所有企業都想擁有的,但是要想讓數據有高可用性,就需要冗余數據寫多份。寫多份…

    Linux干貨 2015-04-04
  • Linux文件管理命令與bash的工作特性

    Shell程序在接受到用戶執行命令的請求時,在分析完成之后,最左側的字符串會被當作命令;
    命令查找機制:查找內部命令時,根據PATH環境變量中設定的目錄,從左至右逐個搜索目錄下的文件名;

    2018-03-11
  • 馬哥教育網絡班21期+第5周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行(以/boot/grub2/grub.cfg代替); [root@localhost ~]# grep '^[[:space:]]\+' /boot/grub2/grub.cfg    load_e…

    Linux干貨 2016-08-08
  • linux常見命令示例

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 ############################################################################# cp -ar /etc/skel/ /home/tuser1 [ro…

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