本文整理的比较粗糙,强烈推荐参考:https://www.cnblogs.com/diantong/p/10554831.html
目录
一 基本概念:
LVM 逻辑卷管理器: logical Volume Manager Version:2
dm: device mapper 将一个或多个较为底层的块设备组织成一个逻辑设备的块模块。
一个硬盘设备或者一个分区分区,叫做pv 物理卷;
pv可以划分为一个个独立的存储单元,并且存储单位可以合并成 VG 卷组,卷组可以包含多个物理卷。
VG 卷组可以划分为LV ,lv可以格式化使用。
PE :phsical Extent物理盘区,比block大的多
PE大小是由PV加入到VG决定的。VG就是将PV分割成多个PE来存储资源的。我们可以在VG的基础上创建LV,创建LV的过程就是将VG的多个PE组将成一个LV来存储数据。
一旦一个PE分配给LV使用后,他就叫LE 逻辑判区
对于VG来说,组织完以后设备文件,真实存在的位置为/dev/dm#
会在
/dev/mapper/VG_Name-LV_Name
/dev/mapper/vol0-root
/dev/VG_Name/LV_Name
/dev/vol0/root
逻辑卷可以动态扩展和缩减,而不影响磁盘。
一旦数据发生损坏,数据恢复比较困难。
二 逻辑卷的创建与管理
2.1 创建物理卷
pv物理卷可以创建在分区、磁盘上,raid上。在这里我们先创建一个磁盘/dev/sdb在此进行演示。
首先/dev/sdb上创建分区
一个主分区/dev/sdb3 10G;
一个扩展分区/dev/sdb4 剩余空间G
一个逻辑分区分区/dev/sdb5 5G
一个逻辑分区分区/dev/sdb6 8G
[root@node001 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xb3642d7a 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):3
起始 扇区 (2048-52428799,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-52428799,默认为 52428799):+10G
分区 3 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
分区号 (1,2,4,默认 1):4
起始 扇区 (20973568-52428799,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-52428799,默认为 52428799):
将使用默认值 52428799
分区 4 已设置为 Extended 类型,大小设为 15 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (20975616-52428799,默认为 20975616):+5G
值超出范围。
起始 扇区 (20975616-52428799,默认为 20975616):
将使用默认值 20975616
Last 扇区, +扇区 or +size{K,M,G} (20975616-52428799,默认为 52428799):
将使用默认值 52428799
分区 5 已设置为 Linux 类型,大小设为 15 GiB
命令(输入 m 获取帮助):d
分区号 (3-5,默认 5):
分区 5 已删除
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (20975616-52428799,默认为 20975616):
将使用默认值 20975616
Last 扇区, +扇区 or +size{K,M,G} (20975616-52428799,默认为 52428799):+5G
分区 5 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (31463424-52428799,默认为 31463424):
将使用默认值 31463424
Last 扇区, +扇区 or +size{K,M,G} (31463424-52428799,默认为 52428799):+8G
分区 6 已设置为 Linux 类型,大小设为 8 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:26.8 GB, 26843545600 字节,52428800 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb3642d7a
设备 Boot Start End Blocks Id System
/dev/sdb3 2048 20973567 10485760 83 Linux
/dev/sdb4 20973568 52428799 15727616 5 Extended
/dev/sdb5 20975616 31461375 5242880 83 Linux
/dev/sdb6 31463424 48240639 8388608 83 Linux
命令(输入 m 获取帮助):t
分区号 (3-6,默认 6):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:26.8 GB, 26843545600 字节,52428800 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb3642d7a
设备 Boot Start End Blocks Id System
/dev/sdb3 2048 20973567 10485760 8e Linux LVM
/dev/sdb4 20973568 52428799 15727616 5 Extended
/dev/sdb5 20975616 31461375 5242880 83 Linux
/dev/sdb6 31463424 48240639 8388608 83 Linux
命令(输入 m 获取帮助):t
分区号 (3-6,默认 6):5
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (3-6,默认 6):
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@node001 ~]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c6d6d
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
磁盘 /dev/sdb:26.8 GB, 26843545600 字节,52428800 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb3642d7a
设备 Boot Start End Blocks Id System
/dev/sdb3 2048 20973567 10485760 8e Linux LVM
/dev/sdb4 20973568 52428799 15727616 5 Extended
/dev/sdb5 20975616 31461375 5242880 8e Linux LVM
/dev/sdb6 31463424 48240639 8388608 8e Linux LVM
磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
三 PV管理工具
物理卷PV(physical volume):物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质比较却包含与LVM相关的管理参数,创建物理卷可以用硬盘分区,也可以用硬盘本身。
3 .1 创建 PV
[root@node001 ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
3.2 显示 PV
[root@node001 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb3 lvm2 --- 10.00g 10.00g
[root@node001 ~]# pvdisplay /dev/sdb3
"/dev/sdb3" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb3
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID oxXU2m-nbTr-UEhX-Fubg-EUdC-HYZP-FrgC5U
[root@node001 ~]#
四 VG管理工具
4.1 创建VG
[root@node001 ~]# vgcreate myvg /dev/sdb3
Volume group "myvg" successfully created
4.2 查看VG
[root@node001 ~]# vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <10.00 GiB
PE Size 4.00 MiB
Total PE 2559
Alloc PE / Size 0 / 0
Free PE / Size 2559 / <10.00 GiB
VG UUID XKCZWn-79dk-Sgrh-cOcS-uMb3-oFMP-ZA7mdA
4.3 此时查看pv
[root@node001 ~]# pvdisplay /dev/sdb3
--- Physical volume ---
PV Name /dev/sdb3
VG Name myvg
PV Size 10.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2559
Free PE 2559
Allocated PE 0
PV UUID oxXU2m-nbTr-UEhX-Fubg-EUdC-HYZP-FrgC5U
4.4 扩展VG
扩展VG需要有可有的PV ,我们sdb5 还没有用,可以基于sdb5来扩展VG
4.4.1 创建PV
sdb5
[root@node001 ~]# pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created.
4.4.2 扩展VG
[root@node001 ~]# vgextend myvg /dev/sdb5
Volume group "myvg" successfully extended
4.4.3 查看扩展的VG
4.5 缩减VG
缩减VG之前xu'yao
4.5 移除PV
[root@node001 ~]# pvmove /dev/sdb5
No data to move for myvg.
4.6 缩减VG
[root@node001 ~]# vgreduce myvg /dev/sdb5
Removed "/dev/sdb5" from volume group "myvg"
[root@node001 ~]# vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <10.00 GiB
PE Size 4.00 MiB
Total PE 2559
Alloc PE / Size 0 / 0
Free PE / Size 2559 / <10.00 GiB
VG UUID XKCZWn-79dk-Sgrh-cOcS-uMb3-oFMP-ZA7mdA
五 LV的管理、创建逻辑卷
[root@node001 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
[root@node001 ~]# lvdispaly
bash: lvdispaly: 未找到命令...
相似命令是: 'lvdisplay'
[root@node001 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID pE38Q2-oteh-iMd0-Szmy-JTse-GspE-Pg4Ejc
LV Write Access read/write
LV Creation host, time node001.bowen.com, 2021-05-20 17:16:08 +0800
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID I9KDJD-ftU8-z2Bp-6Zh0-XVwD-mvb7-w6lRk4
LV Write Access read/write
LV Creation host, time node001.bowen.com, 2021-05-20 17:16:08 +0800
LV Status available
# open 1
LV Size <17.00 GiB
Current LE 4351
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
5.1 创建逻辑卷
lvcreate
-L 大小
-n 名字
VG 卷组
[root@node001 ~]# lvcreate -L 2G -n mylv myvg
Logical volume "mylv" created.
[root@node001 ~]# ls /dev/mapper/
centos-root centos-swap control myvg-mylv
可以看到myvg-mylv这个逻辑卷就出现了,我们可以把它当成一个设备使用。
5.2 格式化
[root@node001 ~]# mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/mylv
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=MYLV
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 2097152 blocks
104857 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=35651584
256 block groups
8192 blocks per group, 8192 fragments per group
512 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
1024001, 1990657
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@node001 ~]#
5.3 挂载使用
[root@node001 ~]# mkdir /backup
[root@node001 ~]# mount /dev/myvg/mylv /backup/
[root@node001 ~]# ls -l /backup/
总用量 12
drwx------. 2 root root 12288 7月 13 17:09 lost+found
[root@node001 ~]# mount
sysfs on /sys type sysfs
5.3.1 copy文件
[root@node001 ~]# cd /backup/
[root@node001 backup]# cp /etc/issue /backup/
[root@node001 backup]# cp /etc/grub.conf /backup/
cp: 无法获取"/etc/grub.conf" 的文件状态(stat): 没有那个文件或目录
[root@node001 backup]# cp /etc/grub.d/ /backup/
cp: 略过目录"/etc/grub.d/"
[root@node001 backup]# cd /backup/
[root@node001 backup]# ll
总用量 13
-rw-r--r--. 1 root root 23 7月 13 17:13 issue
drwx------. 2 root root 12288 7月 13 17:09 lost+found
5.4 扩展逻辑卷、扩展逻辑编辑
5.4.1 扩展逻辑卷
lvextend -L 扩展到多少
[root@node001 backup]# lvextend -L 5G /dev/myvg/mylv
Size of logical volume myvg/mylv changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents).
Logical volume myvg/mylv successfully resized.
5.4.2 查看 扩展后的逻辑卷
可以看到扩展后 /dev/mapper/myvg-mylv 还是 2.0G,这是因为逻辑卷扩展后,但是文件系统并没有扩展,这里显示的是文件系统所管理的大小
[root@node001 backup]# df -lh
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 8.6G 8.5G 51% /
devtmpfs 975M 0 975M 0% /dev
tmpfs 992M 0 992M 0% /dev/shm
tmpfs 992M 11M 982M 2% /run
tmpfs 992M 0 992M 0% /sys/fs/cgroup
/dev/sda1 1014M 157M 858M 16% /boot
tmpfs 199M 12K 199M 1% /run/user/42
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/myvg-mylv 2.0G 3.1M 1.9G 1% /backup
[root@node001 backup]#
重新挂载:
现实还是2G,主要原因是LV扩大了,由于我们在逻辑卷上装了文件系统,但是文件系统所能管理的还是2G 所以我们需要将文件系统管理到整个磁盘。
5.4.3 修改逻辑边界
[root@node001 backup]# resize2fs /dev/myvg/mylv
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/myvg/mylv is mounted on /backup; on-line resizing required
old_desc_blocks = 16, new_desc_blocks = 40
The filesystem on /dev/myvg/mylv is now 5242880 blocks long.
[root@node001 backup]#
5.4.5 查看修改逻辑编辑的逻辑卷大小
[root@node001 backup]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 8.5G 8.5G 51% /
devtmpfs 975M 0 975M 0% /dev
tmpfs 992M 0 992M 0% /dev/shm
tmpfs 992M 11M 982M 2% /run
tmpfs 992M 0 992M 0% /sys/fs/cgroup
/dev/sda1 1014M 157M 858M 16% /boot
tmpfs 199M 12K 199M 1% /run/user/42
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/myvg-mylv 4.9G 3.2M 4.7G 1% /backup
[root@node001 backup]#
5.5 缩减逻辑卷
缩减逻辑卷需要先缩减文件系统大小,我们称之为逻辑文件大小,然后再去缩减物理大小
先卸载文件系统:
5.5.1.卸载
umount /dev/VG_NAME/LV_NAME
5.5.2. 强制监测
e2fsck -f /dev/VG_NAME/LV_NAME
5.5.3 缩减文件系统逻辑边界
指定缩减到多大 resize2fs /dev/VG_NAME/LV_NAME # 大小
5.5.4 缩减逻辑卷
lvreduce -L [-] # 大小 /dev/VG_NAME/LV_NAME
5.5.5 挂载并使用
mount /dev/VG_NAME/LV_NAME /backup
[root@node001 ~]# umount /dev/myvg/mylv
[root@node001 ~]# e2fsck -f /dev/myvg/mylv
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
MYLV: 12/327680 files (0.0% non-contiguous), 119806/5242880 blocks
[root@node001 ~]# resize2fs /dev/myvg/mylv 3G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv to 3145728 (1k) blocks.
The filesystem on /dev/myvg/mylv is now 3145728 blocks long.
[root@node001 ~]# lvreduce -L 3G /dev/myvg/mylv
WARNING: Reducing active logical volume to 3.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 5.00 GiB (1280 extents) to 3.00 GiB (768 extents).
Logical volume myvg/mylv successfully resized.
[root@node001 ~]# mount /dev/myvg/mylv /backup/
[root@node001 backup]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 8.5G 8.5G 51% /
devtmpfs 975M 0 975M 0% /dev
tmpfs 992M 0 992M 0% /dev/shm
tmpfs 992M 11M 982M 2% /run
tmpfs 992M 0 992M 0% /sys/fs/cgroup
/dev/sda1 1014M 157M 858M 16% /boot
tmpfs 199M 12K 199M 1% /run/user/42
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/myvg-mylv 3.0G 3.2M 2.8G 1% /backup
六 快照:snapshot
lvcreate
-L :指定大小
-p :指定权限 -r 读写
-s :表示是一个快照
-n:指明快照卷名字 原卷名字
创建快照:
[root@node001 backup]# lvcreate -s -L 512M -n mylv-snap -p r /dev/myvg/mylv
Logical volume "mylv-snap" created.
挂载:
[root@node001 backup]# mount /dev/myvg/mylv-snap /mnt
卸载于删除逻辑卷
[root@node001 /]# umount /mnt/
[root@node001 /]# lvremove /dev/myvg/mylv-snap
卸载挂载
[root@node001 /]# umount /backup/
删除lv
[root@node001 /]# lvremove /dev/myvg/mylv
删除VG
[root@node001 ~]# vgremove myvg
Volume group "myvg" successfully removed
[root@node001 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
删除pv
[root@node001 ~]# pvremove /dev/sdb3
Labels on physical volume "/dev/sdb3" successfully wiped.
[root@node001 ~]# pvremove /dev/sdb5
Labels on physical volume "/dev/sdb5" successfully wiped.
[root@node001 ~]#
七:虚拟机挂载U盘
2. 挂载U盘镜像
插入U盘--会提示识别到虚拟机还是识别到主机--点击识别到虚拟机--->通过fdisk -l 根据空间大小区分u盘