Linux下的设备管理

一.如何建立可变容量分区lvm

1、建立lvm所需要的概念

命令 功能
pv 物理卷,被lv命令处理过的物理分区
vg 物理卷组,被捆绑到一起的多个物理卷
pe 图里扩展,lvm设备的最小存储单元,lvm的大小是pe的整数倍,pe越小越精细,但读取速度越慢
lvm 逻辑卷,直接使用的设备,可以增大、缩小,并保持原有数据不变

2、lvm的建立

命令 功能
watch -n1 ‘df -H /weixindata;echo =====;pvs;echo =====;vgs;echo =====;lvs’ 监控建立和更改过程
fdisk /dev/vdb 建立分区,建立时标签设定为8e(按t设定)
pvcreate /dev/vdb1 用/dev/vdb1建立一个pv
vgcreate vg1 /dev/vdb1 建立一个vg,名为vg1,与/dev/vdb1这个pv相关联
lvcreate -L 30M -n lv0 /dev/vg1 建立一个lv,名为lv0,指定大小为30M,该lv与/dev/vg1/lv0这个vg相关联
mkfs.xfs /dev/vg1/lv0 格式化,给lvm加上文件系统
mount /dev/vg1/lv0 /weixindata 挂载lvm至目录
df -H /weixindata 查看目录挂载情况

Linux下的设备管理

3、lvm的拉伸与缩减

lvm以xfs格式化时只能拉伸不能缩减,以ext4格式化时可以拉伸也可以缩减

(1)当vg中剩余的容量充足时(xfs文件系统)

命令 功能
lvextend -L 100M vg1 拉伸设备至100M,拉伸时使用的是vg1中的剩余容量
xfs_grow /dev/vg1/lv0 拉伸该设备的文件系统,因为设备拉伸后,新的设备容量未被格式化过,没有文件系统,拉伸文件系统让拉伸后的新设备的所有容量都有文件系统

(2)当vg中剩余的容量不足时(xfs文件系统)

命令 功能
fdisk /dev/vdb 再次建立一个新的分区,并修改标签为8e
partprobe 重新读取磁盘分区表
pvcreate /dev/vdb2 用/dev/vdb2建立一个pv
vgextend vg1 /dev/vdb2 用/dev/vdb2这个pv拉伸vg1,使vg1容量变大
lvextend -L 1500M /dev/vg1/lv0 拉伸后的vg容量足够大,可直接拉伸lvm
xfs_grow /dev/vg1/lv0 拉伸lvm设备的容量后,拉伸lvm的文件系统,使所有容量都有文件系统

(3)将lvm格式化为ext文件系统

命令 功能
umount /weixindata 卸载lvm
mkfs.ext4 /dev/vg1/lv0 以ext4文件系统格式化lvm
mount /dev/vg1/lv0 /weixindata 挂载lvm,此时lvm的文件系统是ext文件系统

(4)ext文件系统下的lvm设备的拉伸

命令 功能
lvextend -L 2G /dev/vg1/lv0 拉伸设备至2G
resize2fs /dev/vg1/lv0 设定lvm的文件系统大小,不指定时默认拉伸至与设备容量一样大的大小

(5)ext文件系统下的lvm设备的缩减

命令 功能
umount /weixindata 卸载lvm
e2fsck -f /dev/vg1/lv0 扫描该设备,查看当前使用容量的大小,便于决定缩减大小
resize2fs /dev/vg1/lv0 500M 设定lvm文件系统大小为500M
lvreduce -L 500M /dev/vg1/lv0 缩减lvm设备的容量大小,与文件系统大小统一
mount /dev/vg1/lv0 /weixindata 重新挂载lvm,查看是否更改成功

Linux下的设备管理

4、vg的缩减

(1)移除空闲的vg设备

命令 功能
vgreduce vg1 /dev/vdb2 移除vg1中空闲的/dev/vdb2设备

(2)移除含有数据的vg设备

命令 功能
pvmove /dev/vdb1 /dev/vdb2 将/dev/vdb1中使用的内存转移到/dev/vdb2中
vgreduce vg1 /dev/vdb1 将/dev/vdb1中使用的内存移除,则/dev/vdb1空闲,可直接移除
pvremove /dev/vdb1 删除多余的pv设备

Linux下的设备管理

5、lvm的快照

(1)lvm快照的建立

命令 功能
lvcreate -L 25M -n lv0-snap1 -s /dev/vg1/lv0 建立/dev/vg1/lv0的快照,快照名为lv0-snap1,设定大小为25M,实际建立大小为28M,因为pe为4M,25M不是4M的倍数
mount /dev/vg1/lv0-snap1 /weixindata 挂载快照

(2)lvm快照损坏如何重置

命令 功能
rm -rf /weixindata/* 删除挂载的目录下的文件,使lvm快照损坏
umount /weixindata 卸载lvm快照
lvremove /dev/vg1/lv0-snap1 删除损坏快照
lvcreate -L 25M -n lv0-snap1 -s /dev/vg1/lv0 重新建立可用快照
mount /dev/vg1/lv0-snap1 /weixindata 挂载可用新快照

(3)如何验证lvm快照的最大容量

命令 功能
dd if=/dev/zero of=/weixindata/file bs=1M count=20 添加20M的文件
lvdisplay 查看lvm快照是否完好(此时应完好)
df 查看lvm快照是否挂载(此时应挂载)
dd if=/dev/zero of=/weixindata/file bs=1M count=50 添加50M的文件
lvdisplay 查看快照是否完好(此时崩溃)

Linux下的设备管理

6、如何整个删除lvm设备

删除时需从lv的快照开始删除,然后删除lv,再删除vg,再删除pv

(1)正确删除步骤

命令 功能
df 查看当前是否有lvm的快照或lv挂载,若有则卸载
lvremove /dev/vg1/lv0-snap1 删除快照(若有,无则不用)
lvremove /dev/vg1/lv0 删除lv
vgremove vg1 删除名为vg1的vg
pvremove /dev/vdb2 删除名为/dev/vdb2的pv,若有多个则都删除

(2)若直接删除/dev/vdb1设备(不正确删除步骤)

命令 功能
fdisk /dev/vdb 直接在磁盘分区表中删除/dev/vdb1后,lvm会出现报错
vgreduce --removemissing vg1 删除名为vg1的vg中出现问题的设备,将解决报错

Linux下的设备管理