首页 > 代码库 > 磁盘管理之基于软RAID的LVM
磁盘管理之基于软RAID的LVM
LVM即为逻辑卷管理是一种管理磁盘的工具使用此技术可以动态的扩展和缩小文件系统空间而不损坏其中数据同时它还具备快照功能实现文件的备份本文将介绍lvm创建逻辑卷,缩减逻辑卷以及利用快照功能实现频繁读写的文件系统的备份。
下图为其逻辑结构:
PV:物理卷
PE:物理区域
VG:卷组
LV:逻辑卷
逻辑卷的创建可以是分区或是RAID 下面将以软RAID5方式详细介绍逻辑卷的创建过程
创建软raid5
首先创建分区 我们使用分区工具fdisk 设备为/dev/sdb 创建3个主分区分别为 /dev/sdb1
/dev/sdb2 /dev/sdb3 大小分别为 5G 5G 5G
此处我们以命令行方式创建分区当然你也可以使用交互模式
echo -e "n \n p \n 1 \n \n +5G \n t \n fd \n w " |fdisk /dev/sdb echo -e "n \n p \n 2 \n \n +5G \n t \n 2 \n fd \n w " |fdisk /dev/sdb echo -e "n \n p \n 3 \n \n +5G \n t \n 3 \n fd \n w " |fdisk /dev/sdb
注意要指定分区类型为raid否则raid无法被迁移
执行上述命令后用fdisk -l /dev/sdb查看分区如下图:
使内核识别新建分区执行如下命令 partx -a /dev/sdb kpartx -af /dev/sdb
有时需要反复执行几次内核才会识别 cat /proc/partitions
内核已经识别了我们新创建的分区
创建Raid5 mdadm -C /dev/md0 -n 3 -l 5 -a yes /dev/sdb{1,2,3}
执行上述命令后结果如下图:
查看内核是否识别 cat /proc/mdstat
内核已经识别
以raid为基础创建分区以供lvm使用分区大小分别为 2G 3G 4G 方法与上述创建分区类似 只不过设备变为/dev/md0 设备类型为8e echo -e "n \n p \n 1 \n \n +2G \n t \n 8e \n w " |fdisk /dev/md0 echo -e "n \n p \n 2 \n \n +3G \n t \n 2 \n 8e \n w " |fdisk /dev/md0 echo -e "n \n p \n 3 \n \n +4G \n t \n 3 \n 8e \n w " |fdisk /dev/md0
执行后结果为:
准备工作结束
创建pv我们首先使用第1和2分区 第3分区用来演示向卷组添加物理设备 pvcreate /dev/md0p1 pvcreate /dev/md0p2
执行结果如下图:
查看 创建结果 pvs
Pv创建成功接着创建VG
vgcreate -s 4M testvg /dev/md0p1 /dev/md0p2
执行结果如下图:
查看 创建结果 vgs
Vg创建成功下面创建lv
lvcreate -L 2G -n testlv testvg
执行结果如下图:
查看创建结果
至此lv创建成功格式化后挂载就可以正常使用了 mke2fs -t ext4 /dev/testvg/testlv
将其挂载至 /mnt 下
mount -t ext4 /dev/testvg/testlv /mnt cp /etc/fstab /mnt
结果如下:
lv的动态扩展
我们已经成功的创建了一个逻辑分区下面介绍如何扩展逻辑分区
假设我们想把当前的2G分区扩展至3G
So easy只需要执行如下命令 lvextend -L 3G /dev/testvg/testlv
结果如下图:
使文件系统生效 resize2fs /dev/testvg/testlv
那么如何缩减逻辑分区大小 特别注意:缩减分区前一定要注意缩减后的大小要能容纳当前分区的数据大小 否则数据将损坏
将分区缩小至100M
第一步:卸载分区 注意在线缩减只支持ext3 我们是ext4的所以要卸载否则会损坏数据 切记!!
e2fsck -f /dev/testvg/testlv
显示文件系统正常
首先要缩减文件系统边界 resize2fs /dev/testvg/testlv 100M
文件系统缩减成功
然后缩减物理边界 lvreduce -L 100M /dev/testvg/testlv
检查文件系统 e2fsck -f /dev/testvg/testlv 最后挂载文件系统 mount /dev/testvg/testlv /mnt ls /mnt
查看数据 Cat /mnt/fstab
数据健在 至此缩减成功!!
向卷组添加新的分区
我们将开始创建的/dev/md0p3添加到卷组 以扩充卷组容量供lv使用
开始前我们先看下当前剧组的大小以作对比
pvcreate /dev/md0p3 vgextend testvg /dev/md0p3
查看添加结果 vgs
扩展卷组成功
缩减卷组用:缩减前首先要确保所移走的分区不含数据 pvmove /dev/md0p3
然后在从卷组中移除 vgreduce testvg /dev/md0p3
这里就不做演示了.
LVM的快照功能
什么是快照?
所谓快照就是文件系统中某一时刻时文件的状态 ,它也是一个逻辑卷有自己的挂载目录只不过此逻辑卷比较特殊当它所“拍摄”的分区文件不发生改变时他其中的文件内容就是和所“拍摄”分区的映射.
但是当源文件发生改变时,他就会复制一份没改变的文件到自己分区中,这样它其中的内容就是过去某一时刻文件系统的内容未曾改变.当你备份快照分区的内容时就是文件系统某时刻的内容,这样就防止一种情况就是当文件一旦发生改变就会复制一份到自己的分区中。
快照的创建
先查看一下当前逻辑卷的大小再决定创建快照的大小 lvs
lvcreate -s -L 20M -n testsnap /dev/testvg/testlv
现在我没将被“拍摄”的数据做下修改 echo “hello kitty” >>/mnt/fstab 两者数据比较如下图
是的快照中的数据不曾改变!!
实际中的应用
以此为例:
mount -o remount,ro /mnt &&lvcreate -s -L 20M -n testsnap /dev/testvg/testlv && mount -o remount,rw /dev/testvg/testlv
要快速完成因此三条命令要一气呵成....
本文出自 “梦想一克拉” 博客,请务必保留此出处http://centod.blog.51cto.com/9108378/1439653