设备不变的情况下,容量增加?(从组里面取)
单独的物理硬盘§被处理后变成另外一种形态(pv),可以用软件管理将其放在一起,变成一个组(vg),从组里划分出来一个设备,(lv)设备被挂载到一个目录上,当设备容量不够时,从组里面取,当组里面容量用完时,再取物理设备,做成可以捆绑的形态,再放进组里——》 逻辑卷lvm
物理分区被处理后变成物理卷,物理卷捆绑到一起变成物理卷组,物理卷组划分出来可以使用的逻辑卷
LVM:(Logical Volume Manager) ,逻辑卷管理器。
逻辑卷管理器解决的主要问题如下:
解决分区空间不够用或者分区空间绰绰有余的情况。
基本磁盘分区的边界是不能随意扩展的。分区大小是在刚刚划分分区的时候就决定了。
逻辑卷的工作原理:逻辑卷(lv)是将几个磁盘分区或者块设备(pv,pv的id必须是8e的,pv可以位于不同的磁盘分区里,pv大小可以不一)组织起来形成一个大的扩展分区(vg,卷组,一个vg至少要包含一个pv。),该扩展分区不能直接用,需要将其划分成逻辑卷(lv)才能使用,lv可以格式化成不同的文件系统,挂载后直接使用。 lv的扩展和缩减是不会影响原有数据的,但逻辑卷缩减的风险大于逻辑卷扩展的风险。逻辑卷可以支持快照功能
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,与硬件相关的存储设置被其隐藏,你可以不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样可以减少操作成本.
pv | 物理卷被处理过的物理分区 |
---|---|
pe | 物理扩展 设定存储最小单元 |
vg | 物理卷组 捆绑 pv 到一个组中 |
lv | 逻辑卷分配最终的使用设备 |
监控建立过程
watch -n 1 “pvs;echo ====;vgs;echo =====;lvs;echo =====;df -h /weixindata”
lvm 设备建立
建立物理分区并设定分区 type 为 lvm
[root@localhost Desktop]# fdisk /dev/vdb ###进入/dev/vdb
command (m for help): n ###建立分区
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +1G ###1G大小
Created a new partition 1 of type 'Linux' and of size 1 GiB.
Command (m for help): t ##更改类型
Selected partition 1
Hex code (type L to list all codes): 8e #####lvm类型
Changed type of partition 'Linux' to 'Linux LVM'.
Command (m for help): p ##列出
Disk /dev/vdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x56a631b5
Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 2099199 2097152 1G 8e Linux LVM ##lvm类型的分区已被建立
Command (m for help): wq ##退出保存
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
1pvcreate /dev/vdb1
创建 pv
2vgcreate westosvg0 /dev/vdb1
**创建 vg **
3lvcreate -L 30M -n westoslv0 westosvg0
##创建 lvm -L 指定大小 -n 指定名称
5mkfs.xfs /dev/mapper/westosvg-westoslv
格式化
6mount /dev/westosvg/westoslv /weixindata/
挂载
接着1.3的挂载
1lvextend -L 100M /dev/mapper/westosvg-westoslv
拉伸设备
2xfs_growfs /weixindata/
拉伸文件系统,在 rhel7 中可以用设备或挂载点
在 rhel8 中只能用挂载点
resize2fs /dev/mapper/westosvg-westoslv
当文件系统为 ext
时使用此命令
划分分区
1mkfs.ext4/dev/westosvg/westoslv
将lvm形式的格式化为ext4类型的文件系统;或者直接在划分分区的时候选择ext4类型的分区
2挂载设备
3拉伸设备
4resize2fs /dev/mapper/westosvg-westoslv
将文件系统也拉伸
xfs 文件系统不支持缩减 ext 文件系统可以
mkfs.ext4/dev/westosvg/westoslv
见1.4.
1umount /weixindata
先卸载掉挂载设备
2e2fsck -f /dev/westosvg0/westoslv0
**扫描这个设备里面的东西,否则直接缩减会造成损坏 **
3resize2fs /dev/westosvg0/westoslv0 300M
缩减文件系统
4lvreduce -L 300M /dev/westosvg/westoslv
缩减lvm设备
5mount /dev/westosvg/westoslv /weixindata/
重新挂载
1umount /dev/mapper/westosvg-westoslv
卸载设备
2lvremove /dev/westosvg/westoslv
删除lv
3vgremove westosvg
删除vg
4pvremove /dev/vda2
删除pv
设备故障无法删除?
1fdisk /dev/vdb
删掉分区
时间同步
[root@localhost Desktop]# vgdisplay ##查看
vgreduce westosvg0 UUID=?
2vgreduce --removemissing westosvg0
pvs 查看
删掉数据后恢复
1[root@localhost weixindata]# mount /dev/westosvg0/westoslv0 /weixindata/
挂载设备
2[root@localhost weixindata]# cd /weixindata/
[root@localhost weixindata]# touch file{1.5}
在挂载的目录下建立文件
[root@localhost weixindata]# cd
3[root@localhost ~]# umount /weixindata
卸载之后再建立快照
4[root@localhost ~]# lvcreate -L 50M -n westoslv0-backup -s /dev/westosvg0/westoslv0
建立快照
Rounding up size to full physical extent 52.00 MiB
Logical volume “westoslv0-backup” created.
5[root@localhost weixindata]# mount /dev/westosvg0/westoslv0-backup /weixindata/
将快照挂载到原来的目录下
[root@localhost weixindata]# cd /weixindata/
[root@localhost weixindata]# ls
file{1.5}
6[root@localhost weixindata]# rm -fr *
删掉文件
[root@localhost weixindata]# ls
[root@localhost weixindata]# cd
7[root@localhost ~]# umount /weixindata
** 卸载设备**
8[root@localhost ~]# lvremove /dev/westosvg0/westoslv0-backup
删掉快照
Do you really want to remove active logical volume westosvg0/westoslv0-backup? [y/n]: y
Logical volume “westoslv0-backup” successfully removed
9[root@localhost ~]# lvcreate -L 50M -n westoslv0-backup -s /dev/westosvg0/westoslv0
** 重新建立快照**
Rounding up size to full physical extent 52.00 MiB
Logical volume “westoslv0-backup” created.
10[root@localhost ~]# mount /dev/westosvg0/westoslv0 /weixindata/
重新挂载原设备
11[root@localhost ~]# ls /weixindata/
文件恢复
file{1.5}
dd if=/dev/zero of=/dev/vdb bs=1M count=1 ##清掉分区表
清掉所要将其作为vdo设备的设备的分区表数据。
kvdo
压缩数据
uds
优化重复数据
VDO(Virtual Data Optimize)是RHEL8/Centos8上新推出的一个存储相关技术(最早在7.5测试版中开始测试),是Redhat收购的Permabit公司的技术。
VDO的主要作用是节省磁盘空间,比如让1T的磁盘能装下1.5T的数据,从而降低数据中心的成本。
那vdo是如何实现的呢,关键原理主要是重删和压缩,重删就是硬盘里拷贝来相同的数据,以前要占多份空间,现在只需要1份空间就可以了。类似我们在百度网盘中上传一个大型软件安装包,能实现秒传,其实是之前就有,所以无需再传一遍,也无需再占百度一份空间。另一方面是数据压缩,类似于压缩软件的算法,也可以更加节省磁盘空间。
vmvare虚拟机中的设备sdb,1实验都是在linux系统中的虚拟机中进行,vdb,注意设备
dnf install vdo -y
1vdo create --name=westos_vdo1 --device=/dev/sdb
2vdo status --name=westos_vdo1 | less
Deduplication:enabled
vdo 检测并删除重复数据的功能时开启的
Compression: enabled
vdo 数据压缩功能开启
1mkfs.xfs -K /dev/mapper/westos_vdo1
格式化vdo设备
2mkdir /westos_vdo
建立目录
3mount /dev/mapper/westos_vdo1 /westos_vdo
挂载vdo设备
1vdostats --human-readable
查看设备使用情况
2cp /westos/images/install.img /westos_vdo/
3vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/westos_vdo1 20.0G
4.4G 15.6G 22% 2%
4cp /westos/images/install.img /westos_vdo/install.img.1
复制相同的数据到挂载目录下时,使用率不变,自动保留一份数据,进行优化
5vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/westos_vdo120.0G
4.5G 15.5G 22% 50%
与我的实验有点出入
vdo remove --name=westos_vdo1
vdo设备的永久挂载,参数比较特殊,
man vdo
/fstab
查看vdo设备在/etc/fstab文件的参数如何写
vim /etc/fsatb
/dev/mapper/westos_vdo1 /westos_vdo xfs defaults,x-systemd.requires=vdo.service 0 0
####注意:在/etc/fstab的文件的编辑的时候要保证参数必须全对 ,否则系统无法重启。