您的位置:首页 > 其它

LVM和快照

2016-06-26 10:07 302 查看
Logical Volume Manager:逻辑卷管理

在Linux内核代码中,DM指的是整个Device Mapper的设计框架。MD(Mapped Device)是框架所虚拟出来的各种设备。简而言之,DM就是不同种类的MD经过特定的关系连接到块设备管理器上的大构架。

LVM2在DM架构基础上,可以用来实现数据备份



snapshot:快照,将数据保留在做快照的那一刻;
快照可以理解为原数据的链接,所以快照一般会小于源文件;
当数据被修改时,将原数据保留一份到快照的存储空间中

使用RAID之后还要做数据备份吗?
需要,RAID可以减因为硬件损坏带来的数据丢失;
数据备份则是降低因为意外和故障带来的数据丢失,如执行rm -rf /命令

为什么使用LVM做数据备份?
对于大数据,cp复制花费时间较长,并且因为数据一直在增长,所以cp复制到的内容在时间上不一致
snapshot则在瞬间可以完成,保证备份的数据在时间上是一致的

快照创建在逻辑卷层,逻辑卷的快照要和逻辑卷在同一个卷组中,因此要在卷组中预留创建快照的空间。

物理卷可以是磁盘/分区/RAID等块设备



pv相关命令

pvcreate /path/to/device
创建pv

# pvcreate /dev/sdb{1,2}

pvremove /path/to/device
删除pv

# pvremove /dev/sdb2
Labels on physical volume "/dev/sdb2" successfully wiped

pvmove pv_name
将pv上的数据转移到其他盘区
# pvmove /dev/sdb2

No data to move for myvg

pvs,pvscan, pvdisplay

vg相关命令
vgcreate [-s|--physicalextentsize] vg_name /path/to/pv
创建vg,physicalextentsize默认大小为4MB,创建后不能修改
# vgcreate -s 16M myvg /dev/sdb{1,2}

vgremove vg_name
移除vg
# vgremove myvg

vgextend vg_name /path/to/pv
扩展vg

# vgextend myvg /dev/sdb3,可以是物理卷,不一定是pv

vgreduce vg_name /path/to/pv
移除pv

# vgreduce myvg /dev/sdb2
Removed "/dev/sdb2" from volume group "myvg"

vgs, vgdisplay, vgscan,

lv相关命令
lvcreate -n lv_name -L size vg_name
创建lv

# lvcreate -L 50 -n testlv myvg
Rounding up size to full physical extent 64.00 MB
Logical volume "testlv" created

lvremove /path/to/pv
删除lv
# lvremove /dev/myvg/testlv
Do you really want to remove active logical volume testlv? [y/n]: y
Logical volume "testlv" successfully removed

lvs, lvdisplay
实验 创建7G的卷组(3G+4G)
创建pv
1 分区格式调整为:8e(Linux LVM)

2 重读分区表
# modprobe /dev/sdb{1,2}

3 创建pv
# pvcreate /dev/sdb{1,2}

4 查看当前系统的pv
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 a-- 2.80G 2.80G
/dev/sdb2 lvm2 a-- 3.73G 3.73G
# pvdisplay # 查看pv的详细信息
# pvscan # 扫描pv信息
创建vg
# vgcreate -s 16M myvg /dev/sdb{1,2}
Volume group "myvg" successfully created
# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 2 0 0 wz--n- 6.53G 6.53G

扩展pv
# vgextend myvg /dev/sdb3

移除pv

# vgreduce myvg /dev/sdb2
Removed "/dev/sdb2" from volume group "myvg"

# vgdisplay 查看详细信息
创建lv
# lvcreate -L 50 -n testlv myvg

逻辑卷创建在/dev/myvg/lvtest,实际上此处为软链接/dev/myvg/lvtest -> /dev/mapper/myvg-lvtest

删除lv
# lvremove /path/to/lv

查看lvs,lvsdisplay
# lvs
格式化
# mke2fs -j /dev/myvg/lvtest

一、在线扩展逻辑卷
1 扩展lv边界物理
lvextend -L [+]# /path/to/lv
#:扩展到多大空间
+#:增加多大空间

# lvextend -L 1G /dev/myvg/lvtest
Extending logical volume lvtest to 1.00 GB
Logical volume lvtest successfully resized

2 扩展lv逻辑边界
resize2fs [-p] /path/to/lv [#]
-p:使逻辑边界最大化,此处不使用#G
#:指定逻辑卷扩展到多大,此处不使用-p选项

# resize2fs -p /dev/myvg/lvtest

# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg-lvtest 992M 6.8M 934M 1% /mnt
二、缩减逻辑卷,
1 不能在线缩减,要先卸载,存在风险
2 确保缩减后的空间仍能容纳原有的所有数据
3 在缩减之前强行进行文件系统检查,确保文件系统处于一致性状态

1 卸载,unount

2 文件系统检查
e2fsck -f /path/to/lv

# e2fsck -f /dev/myvg/lvtest

3 缩减lv逻辑空间
resize2fs /path/to/lv #
#:缩减到多大

4 缩减lv物理边界
lvreduce -L [-]# /path/to/lv
#:缩减到多大空间
-#:缩减多大空间

5 重新挂载
三、快照卷
快照卷作为备份的路径,解决了备份时间上的一致性;但数据无法恢复到出故障时刻,只能作为基础性的备份
注意事项:
1、快照生命周期:数据的增长量不能超过快照卷的大小
2、快照卷应该是只读的
3、快照卷和原卷在同一卷组内

创建快照卷
lvcreate -s -L # -p r -n snapshot_name /path/to/lv
-s:创建快照卷

-p r|w:指定读写属性
# lvcreate -s -p r -L 50M -n lvtest_snapshot_2016-06-26 /dev/myvg/lvtest
Rounding up size to full physical extent 64.00 MB
Logical volume "lvtest_snapshot_2016-06-26" created

进入挂载快照,并进入其目录,执行备份
在/mnt目录下
# tar -cvj fstab -f /tmp/bak.tar.bz2

恢复文件
# tar -xvf /tmp/bak.tar.bz2 /mnt

删除快照卷
# lvremove /dev/myvg/lvtest_snapshot_2016-06-26

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  snapshot lvs 逻辑卷