什么是LVM?
LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。
為什么要使用LVM?
在日常工作或者學習中,隨着電腦的不斷被使用,我們的磁盤空間可能會越來越小,這時候,我們不能直接更換大硬盤,因為硬盤有價,數據無價,這時候我們就可以使用LVM,LVM將存儲虛擬化,使用邏輯卷,你不會受限於物理磁盤的大小,另外,和硬件相關的存儲設置被其隱藏,你能不用停止應用或卸載文件系統來調整卷大小或數據遷移.這樣能減少操作成本,LVM最大的特點就是可以對磁盤進行動態管理。因為邏輯卷的大小是可以動態調整的,而且不會丟失現有的數據。如果我們新增加了硬盤,其也不會改變現有上層的邏輯卷。作為一個動態磁盤管理機制,邏輯卷技術大大提高了磁盤管理的靈活性。
LVM工作機制?
LVM就是通過將底層的物理硬盤抽象的封裝起來,然后以邏輯卷的方式呈現給上層應用。在傳統的磁盤管理機制中,我們的上層應用是直接訪問文件系統,從而對底層的物理硬盤進行讀取,而在LVM中,其通過對底層的硬盤進行封裝,當我們對底層的物理硬盤進行操作時,其不再是針對於分區進行操作,而是通過一個叫做邏輯卷的東西來對其進行底層的磁盤管理操作。
邏輯卷管理概念?
物理卷(PV, Physical Volume)
物理卷就是指磁盤,磁盤分區或從邏輯上和磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有和LVM相關的管理參數。當前LVM允許你在每個物理卷上保存這個物理卷的0至2份元數據拷貝.默認為1,保存在設備的開始處.為2時,在設備結束處保存第二份備份.
卷組(VG, Volume Group)
LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。能在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。
邏輯卷(LV, Logical Volume)
LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上能建立文件系統(比如/home或/usr等)。
關系如下:
具體操作:
1:檢查系統中是否安裝了LVM管理工具 # rpm -qa|grep lvm
[root@localhost ~]# rpm -qa |grep lvm lvm2-2.02.177-4.el7.x86_64 llvm-private-5.0.0-3.el7.x86_64 lvm2-libs-2.02.177-4.el7.x86_64 [root@localhost ~]#
2:如果未安裝,則使用yum 方式安裝 # yum install lvm*
手動添加兩個硬盤:sdl 20G sdh 1G
1:先開始創建物理卷PV:
基本PV命令:
pvcreate 將物理分區新建為pv
pvs/pvscan 查看系統里有pv的磁盤
pvdisplay 顯示系統上面的pv狀態
pvremove 刪除pv
准備使用: 兩個磁盤:/dev/sdl 以及 、/dev/sdh 來完成LVM
[root@localhost ~]# pvcreate /dev/sdl /dev/sdh Physical volume "/dev/sdl" successfully created. Physical volume "/dev/sdh" successfully created. [root@localhost ~]#
使用pvs查看新建的PV
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdh lvm2 --- 1.00g 1.00g /dev/sdl lvm2 --- 20.00g 20.00g [root@localhost ~]#
2:創建卷組vg
有關vg的命令:
vgcreate [-s xM] vgName /dev/sd …… 新建vg,-s后面接pe的大小(可選),單位是M,G,可以放多塊pv
vgextend 擴展vg,就是增加pv
vgs/vgscan 查看系統里有vg的磁盤
vgdisplay 顯示系統上面的vg狀態
vgremove 刪除vg
vgreduce 在vg里刪除pv
創建vgqjc 並查看:
[root@localhost ~]# vgcreate -s 16M vgqjc /dev/sdl Volume group "vgqjc" successfully created [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vgqjc 1 0 0 wz--n- 19.98g 19.98g [root@localhost ~]#
創建邏輯卷lv
有關lv的命令:
lvcreate -l pe num /-L size -n lvname vgName 新建lv,-l指定pe的個數,-L指定容量,M,G
lvextend 增加容量
lvs/lvscan 查看系統里有lv的磁盤
lvdisplay 顯示系統上面的lv狀態
lvremove 刪除lv
lvreduce 在lv里減少容量
創建lvqjc,並查看:
[root@localhost ~]# lvcreate -l 512 -n lvqjc vgqjc WARNING: ext4 signature detected on /dev/vgqjc/lvqjc at offset 1080. Wipe it? [y/n]: y Wiping ext4 signature on /dev/vgqjc/lvqjc. Logical volume "lvqjc" created. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lvqjc vgqjc -wi-a----- 8.00g [root@localhost ~]#
格式化新建的LV 有兩種格式化方式:ext4文件系統:mkfs.ext4 xfs⽂文件系統:mkfs.xfs
[root@localhost ~]# mkfs.ext4 /dev/vgqjc/lvqjc mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 524288 inodes, 2097152 blocks 104857 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2147483648 64 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 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [root@localhost ~]#
掛載使用:
[root@localhost ~]# mount /dev/vgqjc/lvqjc /mnt [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda5 20754432 4050424 16704008 20% / devtmpfs 483088 0 483088 0% /dev tmpfs 498976 0 498976 0% /dev/shm tmpfs 498976 8836 490140 2% /run tmpfs 498976 0 498976 0% /sys/fs/cgroup /dev/sda2 10475520 116032 10359488 2% /app /dev/sda1 201380 135436 65944 68% /boot tmpfs 99796 4 99792 1% /run/user/42 tmpfs 99796 32 99764 1% /run/user/1000 /dev/sr0 9176232 9176232 0 100% /run/media/qijunchao/CentOS 7 x86_64 /dev/mapper/vgqjc-lvqjc 8125880 36852 7653216 1% /mnt [root@localhost ~]#
下面我們將對LVM進行擴容和縮減操作,所以向/mnt中寫入測試數據以驗證LVM 的磁盤動態管理。# touch /mnt/qjc
二、LVM的在線擴展
分為兩種情況:
第一種情況,需要擴展的pe數量,vg可以提供
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lvqjc vgqjc -wi-ao---- 8.00g lvtest vgtest -wi-ao---- 160.00m [root@localhost ~]# lvextend -L +100M /dev/vgtest/lvtest Size of logical volume vgtest/lvtest changed from 160.00 MiB (40 extents) to 260.00 MiB (65 extents). Logical volume vgtest/lvtest successfully resized. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lvqjc vgqjc -wi-ao---- 8.00g lvtest vgtest -wi-ao---- 260.00m [root@localhost ~]#
查看實際的磁盤容量,發現並沒改變,需要對文件系統進行擴容 resize2fs /dev/vgtest/lv/test
[root@localhost ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 xfs 20G 3.9G 16G 20% / devtmpfs devtmpfs 472M 0 472M 0% /dev tmpfs tmpfs 488M 0 488M 0% /dev/shm tmpfs tmpfs 488M 8.7M 479M 2% /run tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup /dev/sda2 xfs 10G 114M 9.9G 2% /app /dev/sda1 xfs 197M 133M 65M 68% /boot tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42 tmpfs tmpfs 98M 32K 98M 1% /run/user/1000 /dev/sr0 iso9660 8.8G 8.8G 0 100% /run/media/qijunchao/CentOS 7 x86_64 /dev/mapper/vgtest-lvtest ext4 151M 1.6M 139M 2% /mnt [root@localhost ~]# resize2fs /dev/vgtest/lvtest resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/vgtest/lvtest is mounted on /mnt; on-line resizing required old_desc_blocks = 2, new_desc_blocks = 3 The filesystem on /dev/vgtest/lvtest is now 266240 blocks long. [root@localhost ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 xfs 20G 3.9G 16G 20% / devtmpfs devtmpfs 472M 0 472M 0% /dev tmpfs tmpfs 488M 0 488M 0% /dev/shm tmpfs tmpfs 488M 8.7M 479M 2% /run tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup /dev/sda2 xfs 10G 114M 9.9G 2% /app /dev/sda1 xfs 197M 133M 65M 68% /boot tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42 tmpfs tmpfs 98M 32K 98M 1% /run/user/1000 /dev/sr0 iso9660 8.8G 8.8G 0 100% /run/media/qijunchao/CentOS 7 x86_64 /dev/mapper/vgtest-lvtest ext4 248M 2.1M 231M 1% /mnt [root@localhost ~]#
resize2fs /dev/vgtest/lvtest #更新文件系統的大小,即激活
resize2fs -f /dev/vgtest/lvtest 500M #強制設置大小
dump2fs /dev/vgtest/lvtest #查看ext系列文件系統
第二種情況,vg空間不夠,需先擴展vg,擴展vg就是往vg中加pv
新建pv, 進行擴容,再查看
[root@localhost ~]# pvcreate /dev/sdg Physical volume "/dev/sdg" successfully created. [root@localhost ~]# vgextend vgtest /dev/sdg Volume group "vgtest" successfully extended [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vgqjc 1 1 0 wz--n- 19.98g 11.98g vgtest 2 1 0 wz--n- 1.99g <1.74g [root@localhost ~]# [root@localhost ~]# lvextend -L 1G /dev/vgtest/lvtest Size of logical volume vgtest/lvtest changed from 260.00 MiB (65 extents) to 1.00 GiB (256 extents). Logical volume vgtest/lvtest successfully resized. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lvqjc vgqjc -wi-ao---- 8.00g lvtest vgtest -wi-ao---- 1.00g
查看測試數據:
[root@localhost ~]# ll /mnt total 16 drwx------. 2 root root 16384 Aug 11 22:25 lost+found -rw-r--r--. 1 root root 0 Aug 11 23:33 qjc [root@localhost ~]#
3:LVM的縮減操作:
1:umount 文件系統
2:縮減文件系統
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lvqjc vgqjc -wi-a----- 8.00g lvtest vgtest -wi-a----- 1.00g [root@localhost ~]# resize2fs /dev/vgqjc/lvqjc 5G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vgqjc/lvqjc to 1310720 (4k) blocks. The filesystem on /dev/vgqjc/lvqjc is now 1310720 blocks long. [root@localhost ~]# lvreduce -L 5G /dev/vgqjc/lvqjc WARNING: Reducing active logical volume to 5.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vgqjc/lvqjc? [y/n]: y Size of logical volume vgqjc/lvqjc changed from 8.00 GiB (512 extents) to 5.00 GiB (320 extents). Logical volume vgqjc/lvqjc successfully resized. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lvqjc vgqjc -wi-a----- 5.00g lvtest vgtest -wi-a----- 1.00g [root@localhost ~]# ls #檢查文件是否丟失
掛載查看
[root@localhost ~]# mount /dev/vgqjc/lvqjc /mnt [root@localhost ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 xfs 20G 3.9G 16G 20% / devtmpfs devtmpfs 472M 0 472M 0% /dev tmpfs tmpfs 488M 0 488M 0% /dev/shm tmpfs tmpfs 488M 8.7M 479M 2% /run tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup /dev/sda2 xfs 10G 114M 9.9G 2% /app /dev/sda1 xfs 197M 133M 65M 68% /boot tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42 tmpfs tmpfs 98M 32K 98M 1% /run/user/1000 /dev/sr0 iso9660 8.8G 8.8G 0 100% /run/media/qijunchao/CentOS 7 x86_64 /dev/mapper/vgqjc-lvqjc ext4 4.8G 32M 4.5G 1% /mnt [root@localhost ~]#
查看測試文件:
[root@localhost ~]# ll /mnt total 16 drwx------. 2 root root 16384 Aug 11 22:25 lost+found -rw-r--r--. 1 root root 0 Aug 11 23:33 qjc [root@localhost ~]#
測試成功。
刪除LVM
如果要徹底的來移除LVM的話,需要把創建的步驟反過來操作。
1:卸載 文件系統
2:刪除lv
3:刪除vg
4:刪除pv
[root@localhost ~]# lvremove /dev/mapper/vgqjc-lvqjc Do you really want to remove active logical volume vgqjc/lvqjc? [y/n]: y Logical volume "lvqjc" successfully removed [root@localhost ~]# vgremove /dev/mapper/vgqjc Volume group "vgqjc" successfully removed [root@localhost ~]# pvremove /dev/sdl Labels on physical volume "/dev/sdl" successfully wiped. [root@localhost ~]#
LVM刪除成功
————————————————
原文鏈接:https://blog.csdn.net/qq_27281257/article/details/81603410