Linux修炼之旅第六章!
本章顺着上一次的博客接着来学习Linux的新知识,介绍了Linux存储的基高级管理。主要介绍了lvm(拉伸收缩)和vdo(数据存储优化)两个功能。
下面就开始吧
实验之前先来配置实验环境
虚拟机nodea加一块硬盘10g
mkdir /data
监视
watch -n1 "pvs;echo ===;vgs;echo ===;lvs;echo ===;df -h /data"
pv
物理卷 被处理过的物理分区
pe
物理扩展 设定存储最小单元
vg
物理卷组 捆绑pv到一个组中
lv
逻辑卷 分配最终的使用设备
一、LVM
LVM虚拟设备
可以对物理分区容量进行管理
用橙汁的例子来理解这个概念
lv必须是pe的整数倍
pv是橙子扎好的橙汁
vg是倒橙汁的大杯子
lv是用户,用户要多少就从vg取多少
pe是最小存储单元,lv必须是pe的整数倍
1 lvm设备建立与拉伸
首先建立一个lvm设备
用fdik新建分区,
然后按t,将Type设置为lvm(8e)
保存完输入udevadm settle
之后的执行程序及注释如下
pvcreate /dev/vdb1 #创建pv
vgcreate vg0 /dev/vdb1
vgs
vgdisplay
vgremove vg0
vgcreate -s 2M vg0 /dev/vdb1 #创建vg -s设定pe大小位2M
vigdisplay
vgdisplay
lvcreate -L 200M -n lv0 vg0 #创建lvm -L指定大小 -n指定名称 lv必须是pe的整数倍
mkfs.xfs /dev/vg0/lv0 #格式化
mount /dev/vg0/lv0 /data/ #挂载
lvextend -L 500M /dev/vg0/lv0 #给创建好的lv扩展容量
xfs_growfs /dev/vg0/lv0
创建pv
设置pe大小
设定lv大小为200M
给创建好的lv扩展容量,扩展到500M
2 vg不足时如何给vg扩容
umount /data
mkfs.ext4 /dev/vg0/lv0 #改格式
mount /dev/vg0/lv0 /data/ #挂载
lvextend -L 800M /dev/vg0/lv0 #逻辑卷扩展
resize2fs /dev/vg0/lv0 #重定义
给pv加完容量,才有足够空间给vg加了
fdisk /dev/vdb
udevadm settle
pvcreate /dev/vdb2
vgextend vg0 /dev/vdb2
lvextend -L 1500M /dev/vg0/lv0 设备(硬件)
resize2fs /dev/vg0/lv0 文件系统(软件)
由于之后的容量缩减实验中,当前格式不支持,所以先换成支持缩减的ext4格式
扩展为800M
但是如果想要扩展到1.5G,明显vg就没有1.5G,下面就开始给vg加容量
但是物理硬盘空间不足,所以就得先区分区,多分出来一块拿来用
这样就可以达到目的了
3 lvm缩减
umount /data #减容量必须先卸载
e2fsck -f /dev/vg0/lv0 #查看
resize2fs /dev/vg0/lv0 100M #文件系统缩减为100M
lvreduce -L 100M /dev/vg0/lv0 #设备缩减
mount /dev/vg0/lv0 /data/ #挂载
先卸载
缩减为100M
再挂载一下,可以看到缩减成功
4 lvm快照
与虚拟机快照类似,快照的操作不会影响本体,只会保留在“镜子”上。
lv也可以创建快照,母盘不动快照可以无限复制,快照的操作记录不影响母盘
touch /data/westosfile{1..10}
ls /data/
umount /data #卸载
lvcreate -L 30M -n lv0-backup -s /dev/vg0/lv0 #创建一个30M的快照
mount /dev/vg0/lv0-backup /data/ #挂载快照
rm -rf /data/westos* #删除之前创建的文件
ls /data/
umount /data #卸载快照
lvremove /dev/vg0/lv0-backup #删除快照
lvcreate -L 30M -n lv0-backup -s /dev/vg0/lv0 #再新建一个快照
mount /dev/vg0/lv0-backup /data/ #挂载
ls /data/ #可以看到之前母盘中的东西还在,没有被快照的删除操作影响
5 删除lvm
删除的思路很简单
正着建立,倒着删除
umount /data #先卸载
lvremove /dev/vg0/lv0-backup #顺着上个实验把挂载文件删除
lvremove /dev/vg0/lv0 #卸掉lv
vgremove vg0 #卸掉vg
pvremove /dev/vdb2 #卸掉pv
pvremove /dev/vdb1
可以在左边的监控中看到删除过程的顺序与建立时相反。
二、vdo
1 vdo的建立与测试
vdo的建立,检测重复,重复的文件不会再占用空间
测试前必须保证测试的硬盘是全新的没有分过区的
vdo create --name westos_vdo1 --device /dev/vdb
vdo status --name /dev/mapper/westos_vdo1
mkfs
vdo status
mkfs.xfs /dev/mapper/westos_vdo1
mount /dev/mapper/westos_vdo1 /data/
ls /data/
然后在主机中尝试传输install.img测试
scp install.img root@172.25.254.126:/data
scp install.img root@172.25.254.126:/data/test.img
在nodea另一个terminal中监测
watch -n1 vdostats --human-readable
可以看到传输两次相同的文件,内存并没有变化
2 vdo卸载
umount /dev/mapper/westos_vdo1
vim /etc/fstab #该文件输入可以永久保存更改,删除时必须在该文件中删除相应的代码行。
vdo status
vdo stop --name westos_vdo1 #暂时删除,可以用start恢复
vdo remove --name westos_vdo1 #永久删除,不可恢复
vdo status
ls
cd /data/
ls