本章blog主要講解了[Lvm] Linux(centos)lvm磁盤建立,LVM分區,擴容、快照管理及LVM配置命令詳解node
本章Blog相關知識點:centos
LVM基本組成:
bash
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是創建在硬盤和 分區之上的一個邏輯層,來提升磁盤分區管理的靈活性。LVM將若干個磁盤分區鏈接爲一個整塊的卷組 (volumegroup),造成一個存儲池。管理員能夠在卷組上隨意建立邏輯卷組(logical volumes),並進一步在邏輯卷組上建立文件系 統。LVM利用Linux內核的device-mapper來實現存儲系統的虛擬化(系統分區獨立於底層硬件)。 經過LVM,你能夠實現存儲空間的抽象化並在上面創建虛擬分區(virtual partitions),能夠更簡便地擴大和縮小分區,能夠增刪分區時無需擔憂某個硬盤上沒有足夠的連續空間。服務器
LVM的基本組成塊(building blocks):
app
物理卷Physical volume (PV):能夠在上面創建卷組的媒介,能夠是硬盤分區,也能夠是硬盤自己或者回環文件(loopback file)。物理捲包括一個特殊的header,其他部分被切割爲一塊塊物理區域(physical extents)。 物理卷就是指硬盤分區或從邏輯上與磁盤分區具備一樣功能的設備(如RAID),是LVM的基本存儲邏輯塊。
ide
卷組Volume group (VG):將一組物理卷收集爲一個管理單元。LVM卷組相似於非LVM系統中的物理硬盤,其由物理卷PV組成。能夠在卷組上建立一個或多個"LV分區"(邏輯卷),VG卷組由一個或多個物理卷PV組成。工具
邏輯卷Logical volume (LV):虛擬分區,由物理區域(physical extents)組成。LVM的邏輯卷相似於非LVM系統中的硬盤分區,在邏輯卷之上能夠創建文件系統(好比/home或者/usr等)。oop
物理區域Physical extent (PE):硬盤可供指派給邏輯卷的最小單位(一般爲4MB)。每個物理卷被劃分爲稱爲PE(Physical Extents)的基本單元,具備惟一編號的PE是能夠被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。佈局
LVM優勢ui
比起正常的硬盤分區管理,LVM更富於彈性:
使用卷組(VG),使衆多硬盤空間看起來像一個大硬盤。
使用邏輯卷(LV),能夠建立跨越衆多硬盤空間的分區。
能夠建立小的邏輯卷(LV),在空間不足時再動態調整它的大小。
在調整邏輯卷(LV)大小時能夠不用考慮邏輯卷在硬盤上的位置,不用擔憂沒有可用的連續空間。
能夠在線(online)對邏輯卷(LV)和卷組(VG)進行建立、刪除、調整大小等操做。
LVM上的文件系統也須要從新調整大小,某些文件系統也支持這樣的在線操做。
無需從新啓動服務,就能夠將服務中用到的邏輯卷(LV)在線(online)/動態(live)遷移至別的硬盤上。
容許建立快照,能夠保存文件系統的備份,同時使服務的下線時間(downtime)下降到最小。
這些優勢使得LVM對服務器的管理很是有用,對於桌面系統管理的幫助則沒有那麼顯著,你須要根據實際狀況進行取捨。
LVM缺點
在系統設置時須要更復雜的額外步驟。
與傳統的磁盤與分區相比,LVM爲計算機提供了更高層次的磁盤存儲。它使系統管理員能夠更方便的爲應用與用戶分配存儲空間。在LVM管理下的存儲卷能夠按須要隨時改變大小與移除(可能需對文件系統工具進行升級)。 LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上創建文件系統。
以下圖所示PV、VG、LV三者關係:
Lvm相關管理命令
設備文件名:
/dev/卷組名/邏輯卷名 或 /dev/mapper/卷組名-邏輯卷名
物理卷管理:pv
pvcreate(建立pv), pvremove(移除pv), pvmove(移除卷內數據), pvscan(顯示全部的pv卷), pvs(查看pv卷簡要信息), pvdisplay (看pv卷詳細信息)
卷組管理:vg
vgcreate(建立vg), vgremove(移除vg), vgs(查看vg卷簡要信息), vgdisplay (查看vg卷詳細信息), vgextend(擴展vg卷組), vgreduce(縮減vg卷組), vgrename (更名)
# vgcreate -s PE_size 指定PE的大小 ,默認是4M
邏輯卷管理:lv
lvcreate, lvremove, lvs, lvdisplay , lvextend(擴展lv卷組) , lvreduce(縮減lv卷組)
# lvcreate 建立lv邏輯卷
-n 指定lv名稱
-L 邏輯卷大小
-s 建立快照
-p 指定模式
# lvextend 擴展lv大小
-L [+] 5G 擴展[了]到5G
獲取以上命令幫助方法: # command -h ,例: #lvcreate -h
配置管理LVM實驗(邏輯卷管理)
系統環境:
系統:Centos 7.4 最小化安裝
LVM管理工具:lvm2-2.02.171-8.el7.x86_64
磁盤分區:掛載/dev/sdb 、/dev/sdc 、/dev/sdd、/dev/sde 、/dev/sdf、 /dev/sdg 共6塊磁盤
實驗目的:
一、經過LVM管理工具,分別建立pv、vg 和lvm。
二、模擬擴展和縮減LV,模擬擴展或縮減VG
三、建立lv快照
四、卸載LVM,刪除LVM
實驗步驟:
1、設置磁盤(虛擬機中增長6塊10G磁盤),安裝LVM 管理工具。
一、在Vmware 虛擬機中,增長6塊磁盤 。
2、查看系統版本,驗證lvm*管理工具是否安裝 並查看磁盤信息
[root@study ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@study ~]# rpm -qa |grep lvm* 確認是否安裝lvm管理工具 lvm2-libs-2.02.171-8.el7.x86_64 lvm2-2.02.171-8.el7.x86_64 [root@study ~]# fdisk -l | grep "^Disk./dev" Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectors Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/sde: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/sdf: 10.7 GB, 10737418240 bytes, 20971520 sectors Disk /dev/sdg: 10.7 GB, 10737418240 bytes, 20971520 sectors
2、對增長的磁盤進行分區並修改分區類型爲8e(Linux LVM),並驗證分區結果
[root@study ~]# echo 'n > p > 1 > > > t > 8e > w '|fdisk /dev/sdb 爲/dev/sdb磁盤建立分區1 ,分配分區大小爲磁盤總空間。並調整類型爲8e(LVM) [root@study ~]# fdisk -l | grep "LVM$" 驗證磁盤分區結果 /dev/sda3 12584960 251658239 119536640 8e Linux LVM /dev/sdb1 2048 20971519 10484736 8e Linux LVM /dev/sdc1 2048 20971519 10484736 8e Linux LVM /dev/sdd1 2048 20971519 10484736 8e Linux LVM /dev/sde1 2048 20971519 10484736 8e Linux LVM /dev/sdf1 2048 20971519 10484736 8e Linux LVM /dev/sdg1 2048 20971519 10484736 8e Linux LVM [root@study ~]# reboot 內核重讀磁盤分區 [root@study ~]# cat /proc/partitions | grep "1$" 驗證內核是否加載了磁盤分區 8 1 2097152 sda1 8 17 10484736 sdb1 8 33 10484736 sdc1 8 49 10484736 sdd1 8 65 10484736 sde1 8 81 10484736 sdf1 8 97 10484736 sdg1
3、建立PV 物理卷
[root@study ~]# pvcreate /dev/sd{b..e}1 建立pv物理卷 Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdc1" successfully created. Physical volume "/dev/sdd1" successfully created. Physical volume "/dev/sde1" successfully created. [root@study ~]# pvs 查看pv狀態信息 PV VG Fmt Attr PSize PFree /dev/sda3 VG lvm2 a-- <114.00g <69.00g /dev/sdb1 lvm2 --- <10.00g <10.00g /dev/sdc1 lvm2 --- <10.00g <10.00g /dev/sdd1 lvm2 --- <10.00g <10.00g /dev/sde1 lvm2 --- <10.00g <10.00g [root@study ~]# pvdisplay --- Physical volume --- PV Name /dev/sda3 VG Name VG PV Size <114.00 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 29183 Free PE 17663 Allocated PE 11520 PV UUID 2Ksdp4-23Ia-jnvA-BeO4-31O2-chlO-I2CQTc "/dev/sdd1" is a new physical volume of "<10.00 GiB" --- NEW Physical volume --- ...
4、建立myvg 卷組 ,指定PE大小爲16M
[root@study ~]# vgcreate /dev/myvg -s 16M /dev/sd{b..e}1 建立myvg1卷組,並指定PE大小爲16M Volume group "myvg" successfully created [root@study dev]# vgs VG #PV #LV #SN Attr VSize VFree myvg 4 0 0 wz--n- <39.94g <39.94g [root@study dev]# pvs 查看pv狀態信息 PV VG Fmt Attr PSize PFree /dev/sdb1 myvg lvm2 a-- 9.98g 9.98g /dev/sdc1 myvg lvm2 a-- 9.98g 9.98g /dev/sdd1 myvg lvm2 a-- 9.98g 9.98g /dev/sde1 myvg lvm2 a-- 9.98g 9.98g
5、建立mylv 邏輯卷並查看pv,vg及lv狀態, 格式化lv邏輯卷並實現開機掛載
[root@study dev]# lvcreate -n mylv -L 20G myvg 從myvg 卷組中分配20G並建立mylv邏輯卷;-n 指定LVM名字 ,-L 分配容量大小 [root@study dev]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-a----- 20.00g [root@study dev]# lvdisplay 查看lv狀態信息 ... --- Logical volume --- LV Path /dev/myvg/mylv LV Name mylv ... [root@study dev]# ls /dev/myvg/ mylv [root@study dev]# mke2fs -t ext4 -m 2 -L mylvdata /dev/mapper/myvg-mylv 建立文件系統 mke2fs 1.42.9 (28-Dec-2013) Filesystem label=mylvdata OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5242880 blocks 104857 blocks (2.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2153775104 160 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [root@study dev]# mount /dev/mapper/myvg-mylv /mylv/ 掛載 [root@study dev]# df -h | grep "^/dev" /dev/mapper/VG-root 15G 1.2G 13G 9% / /dev/sda1 2.0G 116M 1.7G 7% /boot /dev/mapper/VG-home 20G 45M 19G 1% /home /dev/mapper/VG-var 9.8G 200M 9.1G 3% /var /dev/mapper/myvg-mylv 20G 45M 20G 1% /mylv [root@study dev]# vi /etc/fstab ## 配置開機自動掛載 # ... /dev/myvg/mylv /mylv ext4 defaults 0 2
6、擴展或縮減mylv 邏輯卷
LVM最大的優點是能夠對磁盤進行動態管理,並且不會丟失現有的數據。
一、擴展LVM的思路:
先肯定擴展的大小,並確保所屬的卷組有足夠的剩餘空間;
卸載邏輯卷umount ;經過命令e2fsck檢查數據 ;
擴展物理邊界 ,reseize2fs 擴展邏輯邊界
[root@study ~]# cp -af /boot/ /mylv/ [root@study ~]# ls /mylv/ boot lost+found [root@study ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ... mylv myvg -wi-a----- 20.00g [root@study ~]# df -lh .. /dev/mapper/myvg-mylv 20G 154M 19G 1% /mylv ... [root@study ~]# vgs 確保剩餘空間 ,擴展的大小必須小於卷組剩餘空間大小,myvg剩餘vg大小爲19.94G VG #PV #LV #SN Attr VSize VFree myvg 4 1 0 wz--n- <39.94g <19.94g [root@study ~]# umount /mylv/ 卸載磁盤分區/mylv/ [root@study ~]# e2fsck -fy /dev/mapper/myvg-mylv 檢查並修復磁盤 e2fsck 1.42.9 (28-Dec-2013) 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 mylvdata: 338/1310720 files (0.3% non-contiguous), 154377/5242880 blocks [root@study ~]# lvextend -L +5G /dev/mapper/myvg-mylv 爲LV邏輯卷擴展增長5G空間 Size of logical volume myvg/mylv changed from 20.00 GiB (1280 extents) to 25.00 GiB (1600 extents). Logical volume myvg/mylv successfully resized. [root@study ~]# lvs lv卷增長到25G空間 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ... mylv myvg -wi-ao---- 25.00g [root@study ~]# resize2fs /dev/mapper/myvg-mylv ##爲/dev/mapper/myvg-mylv擴展邏輯邊界 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/mapper/myvg-mylv is mounted on /mylv; on-line resizing required old_desc_blocks = 3, new_desc_blocks = 4 The filesystem on /dev/mapper/myvg-mylv is now 6553600 blocks long. [root@study ~]# df -lh 查看磁盤大小 Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/myvg-mylv 25G 154M 24G 1% /mylv [root@study ~]# ls /mylv/ 磁盤數據依然存在 boot lost+found
二、縮減LVM思路:
卸載邏輯卷umount ;經過命令e2fsck檢查lv邏輯卷 ;
縮減LVM邏輯卷邏輯邊界(確保縮減後的空間大小依然能存儲原有的全部數據);
縮減物理邊界;從新掛載;
[root@study ~]# lvs 確認lv卷空間大小 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ... mylv myvg -wi-ao---- 25.00g [root@study ~]# df -lh ##查看磁盤大小 Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/myvg-mylv 25G 154M 24G 1% /mylv [root@study ~]# umount /dev/myvg/mylv [root@study ~]# e2fsck -fy /dev/mapper/myvg-mylv 強制檢查文件系統; -f 強制 e2fsck 1.42.9 (28-Dec-2013) 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 mylvdata: 338/1638400 files (0.3% non-contiguous), 174937/6553600 blocks [root@study ~]# resize2fs /dev/mapper/myvg-mylv 15G 縮減邏輯邊界空間大小爲15G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/mapper/myvg-mylv to 3932160 (4k) blocks. The filesystem on /dev/mapper/myvg-mylv is now 3932160 blocks long. [root@study ~]# lvreduce -L 15G /dev/mapper/myvg-mylv 縮減lv卷大小爲15G WARNING: Reducing active logical volume to 15.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce myvg/mylv? [y/n]: y Size of logical volume myvg/mylv changed from 25.00 GiB (1600 extents) to 15.00 GiB (960 extents). Logical volume myvg/mylv successfully resized. [root@study ~]# mount /dev/mapper/myvg-mylv /mylv/ [root@study ~]# df -lh Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/myvg-mylv 15G 150M 15G 2% /mylv [root@study ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ... mylv myvg -wi-ao---- 15.00g
7、擴展或縮減myvg 卷組
一、擴展vg卷組思路
準備要添加的物理卷;
添加物理卷至卷組中;
# vgextend vg_name /path/to/pv_devcie
[root@study ~]# pvcreate /dev/sd{f,g}1 Physical volume "/dev/sdf1" successfully created. Physical volume "/dev/sdg1" successfully created. [root@study ~]# vgs VG #PV #LV #SN Attr VSize VFree VG 1 3 0 wz--n- <114.00g <69.00g myvg 4 1 0 wz--n- <39.94g <24.94g [root@study ~]# vgextend myvg /dev/sd{g,f}1 擴展2個磁盤分區到myvg卷組 Volume group "myvg" successfully extended [root@study ~]# vgs 卷組大小增長20G空間 VG #PV #LV #SN Attr VSize VFree VG 1 3 0 wz--n- <114.00g <69.00g myvg 6 1 0 wz--n- <59.91g <44.91g
二、縮減vg卷組思路
去頂要移除的物理卷的總空間大小,要小於vg當前的空閒空間大小;
將要移除的物理捲上的數據移動至其餘PV;
# pvmove /path/to/pv_device
縮減vg;
# vgreduce vg_name /path/to/pv_device
[root@study ~]# vgs ##磁盤卷組空閒free空間爲44.91G VG #PV #LV #SN Attr VSize VFree VG 1 3 0 wz--n- <114.00g <69.00g myvg 6 1 0 wz--n- <59.91g <44.91g [root@study ~]# pvs ## 確認分區/dev/sdb1 和分區/dev/sdc1分區被使用,存有數據 PV VG Fmt Attr PSize PFree /dev/sda3 VG lvm2 a-- <114.00g <69.00g /dev/sdb1 myvg lvm2 a-- 9.98g 0 /dev/sdc1 myvg lvm2 a-- 9.98g <4.97g /dev/sdd1 myvg lvm2 a-- 9.98g 9.98g /dev/sde1 myvg lvm2 a-- 9.98g 9.98g /dev/sdf1 myvg lvm2 a-- 9.98g 9.98g /dev/sdg1 myvg lvm2 a-- 9.98g 9.98g [root@study ~]# pvmove /dev/sdf1 ##轉移數據 No data to move for myvg [root@study ~]# pvmove /dev/sdg1 No data to move for myvg [root@study ~]# vgreduce myvg /dev/sd{f,g}1 縮減vg卷組,刪除分區/dev/sdf1 和分區/dev/sdg1 Removed "/dev/sdg1" from volume group "myvg" Removed "/dev/sdf1" from volume group "myvg" [root@study ~]# pvremove /dev/sd{g,f}1 刪除pv卷 Labels on physical volume "/dev/sdg1" successfully wiped. Labels on physical volume "/dev/sdf1" successfully wiped.
8、建立LVM快照卷,完成數據備份及還原
一、實現思路
建立快照;
# lvcreate -s -L size -n Name -p r /path/to/original_lv_device
掛載;
# mount /dev/mapper/myvg_name /media 例 # mount /dev/mapper/myvg-test--snap /media/
把掛載數據備份;
# tar -zcf /root/media.tar.gz /media/*
卸載快照卷 ,移除快照卷;
# lvremove /dev/myvg/test-snap
模擬刪除lv數據,經過快照數據進行還原;
[root@study ~]# lvcreate -s -L 10G -n mylvspare -p r /dev/mapper/myvg-mylv Using default stripesize 64.00 KiB. Logical volume "mylvspare" created. [root@study ~]# mount /dev/mapper/myvg-mylvspare /media/ mount: /dev/mapper/myvg-mylvspare is write-protected, mounting read-only [root@study ~]# ls /media/ boot lost+found [root@study ~]# tar -zcf /root/spare.tar.gz /media/* tar: Removing leading `/' from member names [root@study ~]# ls -lh total 102M -rw-------. 1 root root 1.8K Jan 28 12:33 anaconda-ks.cfg drwxrwxr-x. 2 root root 36K Sep 5 21:38 Packages -rw-r--r--. 1 root root 102M Feb 4 18:11 spare.tar.gz [root@study ~]# umount /dev/mapper/myvg-mylvspare [root@study ~]# lvremove /dev/mapper/myvg-mylvspare Do you really want to remove active logical volume myvg/mylvspare? [y/n]: y Logical volume "mylvspare" successfully removed [root@study ~]# rm -rf /mylv/boot/ ##模擬刪除LV卷中數據,經過備份的快照數據進行還原 [root@study mylv]# cd /root/ [root@study ~]# ls anaconda-ks.cfg Packages spare.tar.gz [root@study ~]# tar -zxf spare.tar.gz [root@study ~]# ls anaconda-ks.cfg media Packages spare.tar.gz [root@study mylv]# cp -af /root/media/* /mylv/ [root@study mylv]# ls ## 經過快照數據進行數據還原 config-3.10.0-693.el7.x86_64 efi grub grub2 initramfs-0-rescue-aa42d80ce1774acf8f5de007d85e5ef1.img initramfs-3.10.0-693.el7.x86_64.img initramfs-3.10.0-693.el7.x86_64kdump.img initrd-plymouth.img lost+found mylv symvers-3.10.0-693.el7.x86_64.gz System.map-3.10.0-693.el7.x86_64 vmlinuz-0-rescue-aa42d80ce1774acf8f5de007d85e5ef1 vmlinuz-3.10.0-693.el7.x86_64
9、卸載刪除lVM
[root@study media]# umount /dev/mapper/myvg-mylv [root@study media]# lvremove /dev/mapper/myvg-mylv Do you really want to remove active logical volume myvg/mylv? [y/n]: y Logical volume "mylv" successfully removed [root@study media]# vgremove myvg Volume group "myvg" successfully removed [root@study media]# pvremove /dev/sd{b..e}1 Labels on physical volume "/dev/sdb1" successfully wiped. Labels on physical volume "/dev/sdc1" successfully wiped. Labels on physical volume "/dev/sdd1" successfully wiped. Labels on physical volume "/dev/sde1" successfully wiped.
至此 ,總體部署配置LVM實驗完成 。