Linux 实现LVM逻辑卷及快照
LVM逻辑卷详解及创建
PV: 底层的一个硬盘设备,可以是一个分区,也可能是一个RAID。我们可以把这个块设备创建成一个物理卷格式,即一个PV。
VG: 将一个或多个PV提供的存储空间在一个更低的单位上划分成一个个独立的存储单元,并且把这些存储单元合成一个较为高层的组件叫做卷组vg;
其中vg可以包含多个物理卷。我们这里可以看到vg有点类似于扩展分区,这种格式的分区是没有办法创建文件系统的,必须要它划分成逻辑分区。
LV: 在vg的基础上再次创建LV的组件,LV才是真正意义上的逻辑卷。每一个LV逻辑卷都是一个独立的文件系统,可以被格式化挂载使用,LV的大小可以是vg内的任意大小空间;
lv可以支持动态扩展的,当存储空间不够时,可以再添加pe,当空间足够时,可以删除的多余的pe,并且这个过程是不损害lv当中原有的数据的,lv的大小可以动态扩展跟收缩。
PE: vg会在一个逻辑层次上将每一个pv所提供的物理空间划分成固定大小的PE.(物理盘区),然后在vg上面创建lv,所为创建lv的过程就是指定一定数量的pe来组成逻辑存储单元的过程。
pv管理工具:
pvs:简要显示pv的信息
pvdisplay:显示pv的详细信息
pvcreate /dev/DEVICE:创建PV
vg管理工具:
vgs:简要显示vg的信息
vgdisplay:显示vg的详细信息
vgcreate 卷组名 /dev/DEVICE:创建vg
vgextend VolumeGroupNam PhysicalDevicePath: 扩展vg
vgreduce VolumeGroupNam PhysicalDevicePath: 缩减vg
备注:这里我们要注意在缩减前先做pvmove进行物理层次的缩减即PV的缩减
lv管理工具:
lvs:简要显示lv的信息
lvdisplay:显示lv的详细信息,路径为/dev/卷组名称/卷组
lvcreate -L [大小MGT] -n NAME VolumeGroup(vg名称)
lvcreate -L 128M -n mylv myvg
lvremove /dev/VG_NAME/LV_NAME:删除逻辑卷
扩展逻辑卷:
lvextend -L [+]MGT /dev/VG_NAME/VL_NAME
resize2fs /dev/VG_NAME/LV_NAME 只适用于ext文件系统
缩减逻辑卷:(缩减后的空间一定要能容纳现有所有的数据)
umount /dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME [MGT] 缩减文件系统
lvreduce -L [-]MGT /dev/VG_NAME/LV_NAME 缩减逻辑卷
mount /dev/VG_NAME/LV_NAME 挂载
创建三个5G的分区,磁盘格式设置为LVM格式,并为其创建ext4文件系统 (通过 t 修改 8e)
接下来我们创建PV
pvcreate /dev/sda5 pvcreate /dev/sda6
这里我们可以使用pvdisplay查看一下
接下我们创建一个vg
vgcreate myvg /dev/sda5
如果不制定大小的话,默认创建出来的vg卷中的PE大小为4M,想要为PE指定大小可以使用-s选项
vgcreate -s 10 myvg /dev/sda5
这样创建出来的PE大小为10M
注意:如果我们想要删除次卷组可以使用命令vgremove
例如删除刚刚创建的myvg卷组
vgremove myvg
我们现在可以将第一个逻辑分区添加到刚刚创建好的myvg中
pvcreate /dev/sda6 vgextend myvg /dev/sda6
如果我们想要缩减vg卷组,首先我们要将卷组中想要移除pv中的数据移到卷组中其它的pv上面,然后在缩减
pvmove /dev/sda5 vgreduce myvg /dev/sda5
vgdisplay
现在我们来创建一个名称为mylv的逻辑卷
lvcreate -L 2M -n mylv myv
对逻辑卷进行格式化并挂载到/mnt/test目录上
mkdir /mnt/test mke2fs -t ext4 /dev/myvg/mylv mount /dev/myvg/mylv /mnt/test
这时候这个逻辑卷分区就可以正常使用了,我们复制一个文件做一下测试
cp /etc/fstab /mnt/test
扩展逻辑卷
umount /dev/myvg/mylv lvextend -L 3M /dev/myvg/mylv e2fsck -f /dev/myvg/mylv resize2fs /dev/myvg/mylv mount /dev/myvg/mylv /mnt/test
并重新出创建文件系统
resize2fs /dev/myvg/mylv
备注:resize2fs命令只适用于ext文件系统类型,如果是xfs,btrfs文件系统则需要使用别的命令
设置开机自动挂载
在/etc/fstab文件中添加
/dev/myvg/mylv /mnt/test ext4 defaults 0 0
缩减逻辑卷
先缩减文件系统到指定大小
第一步:先卸载文件系统
umount /dev/myvg/mylv
第二步:e2fsck -f /dev/myvg/mylv做文件系统的强制检测文件系统修复
e2fsck -f /dev/myvg/mylv
第三步:resize2fs /dev/myvg/mylv #[mg]
resize2fs /dev/myvg/mylv 3G lvreduce -L 2M /dev/myvg/mylv
dd 命令
dd命令:convert and copy a file
用法:
- dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
- bs=#:block size, 复制单元大小;
- count=#:复制多少个bs;
磁盘拷贝:
- dd if=/dev/sda of=/dev/sdb
备份MBR
- dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破坏MBR中的bootloader:
- dd if=/dev/zero of=/dev/sda bs=256 count=1
两个特殊设备:
- /dev/null: 数据黑洞;
- /dev/zero:吐零机;