linux高级存储管理
此实验需要一个全新虚拟机,添加一块全新硬盘,添加设备的时候保证虚拟机是关闭状态
LVM逻辑卷
-
新建一个/weixindata目录存放用户的数据
fdisk -l
fdisk /dev/sdb ##建立分区
n
+100M
udevadm settle ##同步分区表到系统
mkfs.xfs /dev/sdb1##格式化硬盘
mount /dev/sdb1 /weixindata ##挂载数据
##当我们的用户数据被填满时,怎么处理问题?当部署设备的时候,我们需要一个可以拉伸的存储设备,在设备不变的情况下将他拉伸,这就是lvm 逻辑卷,适用软件方式管理我们存储 -
pv ##物理卷 #被处理过的物理分区,相当于安装lvm软件,相当于对我们存储物理分区进行单元格式化 pe ##物理扩展 #设定存储最小单元 vg ##物理卷组 #捆绑pv到一个组中 lv ##逻辑卷 #分配最终的使用设备,可以无限增大 开启两个sheer,其中一个做监控,一个做实验 pvs;echo ====;vgs;echo ====;lvs;eho ====;df -h /weixindata ##查看系统中物理卷 物理卷组 逻辑卷 目录上挂载设备大小 第一步 划分物理分区(做出两个) n last +500M p t ##修改分区类型 1 ##修改第一个 l ##列出所有可用分区类型 8e ##改为lvm,8e是分区类型代码 wq ##保存并退出 第二步 建立物理卷 pvcreat /dev/sdb1 pvcreat /dev/sdb2 第三步 建立物理卷组 vgcreate westos_vg /dev/sdb1 ##建立 vgdisplay westos_vg ##查看大小默认4M man vgcreate ##搜索s找寻 vgremove westos_vg ##删除物理卷组 vgcreate -s 2M westos_vg /dev/sdb1 ##新建物理卷组 并且有确定大小 第四步 建立逻辑卷 lvcreate -L 200M -n westos_lv0 westos_vg mkfs.xfs /dev/westos_vg/westos_lv0 ##格式化 mount /dev/westos_vg/westos_lv0 /weixindata ##挂载 ##LV统计的是10*n ,而filesystem是2*n ,2*n更加准确,10*n更加方便
-
拉伸和缩减(从始至终这个设备没有停止)
设备可以进行拉伸和缩减,我们需要考虑使用什么样的设备,xfs文件系统只支持拉升不支持缩减,est文件系统支持拉升和缩减blkid ##查看是什么文件系统 xfs拉伸 lvextend -L 400M /dev/westos_vg/westos_lv0 ##拉伸LV xfs_growfs /dev/westos_vg/westos_lv0 ##格式化文件系统,并且拉大文件 ##当我们尝试拉大lv至更大超过vg大小的时候,我们应该先将vg拉大,再拉大lv vgextend westos_vg /dev/sdb2 ##因为2还没有用,可以将2也放入此VG中,以此拉大VG,此时便可以拉大LV lvextend -L 600M /dev/westos_vg/westos_lv0 xfs_growfs /dev/westos_vg/westos_lv0 umount /weixindata ext4拉伸缩减 mkfs.ext4 /dev/westos_vg/westos_lv0 ##可以使用此命令将xfs文件转换为est,但是如果使用了此方法需要将其格式化,所以正确方法应该是一开始就应该设置为ext4,再部署的最前面 blkid mount /dev/westos_vg/westos_lv0 /weixindata ##挂载 lvextend -L 800M /dev/westos_vg/westos_lv0 ##设备拉大 resize2fs /dev/westos_vg/westos_lv0 ##文件系统拉大 缩减必须卸载。缩减之前可以挂载也可以不挂载。 umount /dev/westos_vg/westos_lv0 e2fsck -f /dev/westos_vg/westos_lv0 ##进行扫描。缩减可能进行了损坏,所以我们要进行扫描,让系统知道你有多大的数据,对数据保护 ##先缩减文件系统,再缩减设备 resize2fs /dev/westos_vg/westos_lv0 200M ##文件系统缩减后就可以进行挂载检查一下,再进行设备缩减 mount /dev/westos_vg/westos_lv0 /weixindata ##挂载 lvreduce -L 200M /dev/westos_vg/westos_lv0 ##设备缩减 去掉存有数据的设备 pvmove /dev/sdb1 /dev/sdb2 ##sdb2设备被闲置了,只有1用了200M,如果想去掉1这个设备,可以把1的数据拿到2,对数据保护,再进行移除 vgreduce westos_vg /dev/vdb1 ##移除vg,这时候就不属于任何一个vg pvremove /dev/vdb1 ##删掉1 ##vg确定硬盘有空闲的时候才可以缩减
##当我们的用户数据被填满时,怎么处理问题?
lvm的快照
mount /dev/westos_vg/westos_lv0 /weixindata ##挂载
cd /weixindata/
ls
touch westosfile
echo hello westos > westosfile ##编写一个文件
umount /weixindata ##卸载
cat /weixindata/westosfile ##查看文件发现不存在
如果想用这个文件可以进行快照,大小一般情况都是比原始内容小或者相等,要比更改内容大
lvcreate -L 30M -n westos_lv0_backup -s /dev/westos_vg/westos_lv0
##快照。这个不用格式化,直接挂载
mount /dev/westos_vg/westos_lv0_backup /weixindata
cat /weixindata/westosfile ##此时可以看见文件
如果我们rm删掉这个文件,此时就看不见了,如何还原?
umount /weixindata ##卸载
lvremove /dev/westos_vg/westos_lv0_backup ##将这个快照移除
lvcreate -L 30M -n westos_lv0_backup -s /dev/westos_vg/westos_lv0
##重新拍照一个
mount /dev/westos_vg/westos_lv0_backup /weixindata
##挂载
查看,发现文件已经恢复
实验结束,设备删除
umount /weixindata ##卸载
lvremove /dev/westos_vg/westos_lv0_backup ##删掉快照
删掉原始设备
lvremove /dev/westos_vg/westos_lv0
vgremove /dev/westos_vg
pvremove /dev/sdb2
上一个实验完成之后,使用lsblk可以查看硬件下面的东西是否被清空
dd if=/dev/zero of=/dev/sdb bs=1M count=1 ##之前做实验的设备里面的前面1M全部清空,将其分区破坏掉,恢复到最原始的样子。使fdisk -l ,不能显示分区标识
##在挂载的文件中写入内容,当卸载掉之后这个文件就会看不到
##做一个快照,卸载之后也能查看文件
vdo 虚拟数据优化器(数据压缩功能)(优化重复数据)
虽然可以对数据进行存储,但是不会区分是否重复。压缩必须需要手动。
dnf install vdo -y
vdo create --name=westos_vdo1 --device=/dev/sdb ##建立
vdo stop --name=westos_vdo1
vdo remove --name=westos_vdo1 ##删除
(确保设备没有被使用过,确保系统有大于250M内存)
vdo status --name=westos_vdo1 | less 分页浏览
Deduplication vdo ##检测并删除重复数据的功能是开启的
Compression vdo ##数据压缩功能开启
mkfs.xfs /dev/mapper/westos_vdo1 ##上面没有数据,直接格式化
mkfs.xfs /dev/mapper/westos_vdo1 -f ##上面有数据,强制格式化文件系统
mount /dev/mapper/westos_vdo1 /weixindata ##挂载
df ##查看挂载,大小2.2G,一部分是软件的
测试vdo性能
vdostats --human-readable ##监控
复制比较大的文件,第一次就会占容量,第二次重复放入的时候,就会自动检测,不会占内存大小。
du -sh /usr/lib64/firefox/
cp -r /usr/lib64/firefox/ /weixindata
cp -r /usr/lib64/firefox/ /weixindata/westos
设备开机的时候自动挂载
systemctl status vdo 这个服务必须开启
vim /etc/fstab
/dev/mapper/westos_vdo1 /weixindata xfs defaults,x-systemd.requires=vdo.service 0 0
##westos_vod1这是一个开启服务才会启动的设备。
(上述如果书写错误会导致系统启动出错)
vdo设备删除
umount /dev/mapper/westos_vdo1 ##卸载掉这个设备
vim /etc/fstab ##删除掉
vdo stop --name=westos_vdo1
vdo remove --name=westos_vdo1 ##删除这个设备