设为首页 收藏本站
查看: 436|回复: 0

[经验分享] linux之LVM详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-30 13:54:22 | 显示全部楼层 |阅读模式
LVM组成;
LVM:logic volume manager .LVM即逻辑卷管理,现在使用版本为第二版,即version2
逻辑卷:pv,physical volume,即计算机上的磁盘设备,例如我的计算机上的/dev/sda3,/dev/sda5.
卷组:vg,volume group。一般由多个pv组成。
逻辑卷:lv,logical volume是在vg上是划分好可以直接使用分区
pe:physical extend,是在pv加入vg后vg把所有pv划分成的很多的小块,是LVM最小的分区单位,我的计算机上pe大小为4M,这个大小可以在创建vg时根据需要制定。

LVM原理
vg可以由多个pv在组成,如果随着时间的推移vg不够用了,就可增加一些pv到vg里面。如果vg太大,感觉用不完浪费掉了,就可以减少一些pv,并保证里面数据不会受到影响。
Vg和lv:vg可以近似看成计算机上的一个完整的硬盘,把vg划分成多个lv的过程类似于把计算机的一个硬盘划分成多个分区的过程,同样lv也像硬盘分区那样格式化后才能使用。
如果非要拿硬盘和LVM作比较的话,拿我的计算机来说,vg相当于硬盘/dev/sda,lv相当于/dev/sda1,/dev/sda2,/dev/sda3等,lv一般也要格式化后才能使用。
Lv:如果lv里的数据增多,lv的空间不够用了,vg就可以增加一些空间给lv,如果空间太多就给lv缩减空间。前面提到的pe,就是lv的基本组成单元,假如一个pe大小为4M,如果要创建一个4G的lv,vg就会分1000个pe给lv。如果后来lv的空间最多使用量不足2G,为了节省磁盘,vg就从lv取下500个pe,这样就可以节省2G空间了,并且不会损坏原有数据。

优点:调整分区十分快捷方便,随意增减分区大小而对数据几乎不产生影响.
缺点:如果碰上百年不遇的霉运,数据损坏,想要找回数据却极为困难.

dm:device mapper将底层块设备组织成一个逻辑设备模块
像扩展分区,不能直接格式化使用,必须化分成lv才能格式化使用pe默认4M,一个lv是一个文件系统
Lv设备路径:
Lv设备路径有两种表达方式
/dev/mapper/VG_NAME-LV__NAME和     /dev/VG_ANME/LV_NAME
以我的电脑举例就分别是:/dev/mapper/testvg-testlv和/dev/testvg/testlv
testvg是我的电脑的一个vg名字,testlv是testvg上的一个lv,也是一个独立文件系统。
命令详解:
pv:physical volume逻辑卷
查看pv有哪些可用命令:先敲出字母pv,再连敲两下TAB
pvs:查看pv简要信息
pvscan:scan all disks forphysical volumes浏览pv简要信息和使用情况
pvdisplay:查看所有pv的详细信息。后可加设备名查看某个pv的详细信息
pvdisplay  /dev/sda3
pvcreate:创建新的pv。可一次创建一个或多个
pvcreate  /dev/sda{5,6,7}-----注意,创建pv前事先用fdisk用t命令把分区格式调为8e
pvmove把pv上的pe数据移动到其他pv上去
           pvmove /dev/sda5,如果有数据就自动找pv移动了,如果数据很多会移动很长时间
pvremove:删除物理卷
           pvremove /dev/sda3
pvck :check physical volume metadata
           pvck /dev/sda5


vg:volume group卷组   vg按TAB查看所有vg相关命令
vgs和vgscan:查看vg简要信息
vgdisplay:查看vg详所有细信息,后跟设备可查看某个vg信息
vgcreate:创建vg,-s指定PE大小
[iyunv@yph6 ~]# vgcreate testvg -s 16M/dev/sda{5,6,8}
vgextend:扩展vg,给vg增加pv。  vgextend myvg /dev/sda5
vgreduce:缩减vg,从vg去掉某个pv。
例:myvg /dev/sda5
vgreduce --removemissing  VG_NAME 移除未识别的pv
-a 移除vg内所有pv
vgremove:删除vg

lv:logical volume 逻辑卷
lv敲TAB查看所有相关命令
lvs和lvscan:查看所有lv的简要信息
lvdisplay:查看所有或某个lv的详细信息
         lvdisplay/dev/myvg/mylv
         lvdisplay/dev/mapper/myvg-mylv     
lvcreate:创建lv
         -L指明空间大小
         -n指定lv的名字
         -l:指定pe数量

例:lvcreate -L 2G -nmylv myvg   ------在myvg上创建名为mylv的lv
ls /dev/mapper    ------------查看lv是否创建成功
mke2fs -t ext4 -b 1024 -L mylv/dev/myvg/mylv -----格式化lv
lvremove:删除lv

扩展逻辑卷:注意,要先扩展物理边界再扩展逻辑边界
lvextend -L 5G /dev/myvg/mylv  
扩展lv物理边界为5G(给lv增加pe数量),+3G表示在原来基础上增加3G
df –lh     ------------查看所有磁盘设备大小,可查看lv是否变大
resize2fs /dev/myvg/mylv 扩展逻辑边界到物理边界,不需要卸载
df -lh

缩减逻辑卷lvreduce 注意,要先缩减逻辑边界再缩减物理边界
umount /dev/vg-name/lv-name  ------先卸载lv
e2fsck -f /dev/vgname/lvname    -------强制检测lv
resize2fs /dev/vg/lv -3G     ---------------把lv的逻辑边界在原来的基础上减少3G
lvreduce -L -3G /dev/vg/lv   -------------把lv的物理边界减少3G,即减去一些pe块
mount   --------重新挂载
df –lh    -----------查看lv大小是否变化

snapshot:快照卷
原理:
正常备份数据的时候数据不能发生变化,否则备份出来的数据的是不完整的。但对于1T的数据做备份需要半个小时以上,这期间数据很难保持不变,为了解决这个问题,快照卷应运而生。
快照是在一瞬间记录下要备份的内容的元数据,然后监控这些元数据,如果元数据即将发生变化,就把将要变化的内容备份到快照里面,这样,快照里就存储着变化前的数据的备份。
创建快照后最好立刻把快照里的数据复制到备份盘里(可能备份文件时对很多文件说快照只是个硬链接而已,对于发生变化的文件,在变化前被复制到快照里),快照就被立即删掉,快照不会存在太久。快照只是为了解决直接备份数据会发生变化的难题。
快照和原文件应该属于同一个卷组vg,通过快照访问未变化的数据时,就像通过一个硬链接直接进入原文件访问。所以创建快照卷时不用格式化。
lvcreate -s -L 512M -n mysnap -pr  /dev/myvg/mylv  ----------创建快照卷
-s指明创建的是快照卷,-L指明快照卷大小,-n指明快照卷的名字,-p权限  最后面指定是谁的快照
mount /dev/myvg/mylv-snap /mnt ------挂载快照卷
cp –a /mnt/*  ~/  -------------然后把快照卷里的东西备份出来,就可卸磨杀猪了
umount /mnt
lvremove /dev/myvg/mylv-snap删除
练习:
1、创建一个至少有两个pv组成的大小为20G的名为testvg,要求PE大小为16M
然后在卷组中创建大小为5G的逻辑卷testlv挂在至/users下
1
2
3
4
5
6
7
8
9
[iyunv@yph6 ~]# pvcreate  /dev/sda{5,6,8}
[iyunv@yph6 ~]# vgcreate testvg -s 16M /dev/sda{5,6,8}
[iyunv@yph6 ~]# lvcreate -L 2G -ntestlv testvg  --------创建名为testlv的lv
[iyunv@yph6 ~]# mke2fs -t ext4 -b 2048-L testlv /dev/testvg/testlv ---卷标为testlv
[iyunv@yph6 ~]# mount/dev/testvg/testlv /users
[iyunv@yph6 ~]# cd /users
[iyunv@yph6 users]# ll
total 16
drwx------ 2 root root 16384 Dec 1823:22 lost+found  ------出现lost+found说明挂载成功





2、新建用户archlinux,要求家目录为/users/archlinux,然后用archlinux用户,复制/etc/pam.d至自己家目录
1
2
3
4
5
6
7
8
[iyunv@yph6 users]# useradd -d/users/archlinux archlinux   -d制定家目录
[iyunv@yph6 users]# su - archlinux
[archlinux@yph6 ~]$ cp -R /etc/pam.d~/
[archlinux@yph6 ~]$ ll
total 2
drwxr-xr-x 2 archlinux archlinux 2048Dec 18 23:28 pam.d
[archlinux@yph6 ~]$ pwd
/users/archlinux




3、扩展testlv至7G,要求archlinux用户文件不能丢失
1
2
3
4
5
6
7
8
[iyunv@yph6 ~]# pvcreate /dev/sda9
Physical volume "/dev/sda9" successfully created
[iyunv@yph6 ~]# vgextend testvg/dev/sda9
Volume group "testvg" successfully extended
lvextend -L 7G /dev/testvg/testlv
Size of logical volume testvg/testlv changed from 2.00 GiB (128 extents)to 7.00 GiB (448 extents).
Logical volume testlv successfully resized
[iyunv@yph6 ~]# resize2fs/dev/testvg/testlv  --------lv的逻辑边界与物理边界一样大




4、收缩至3G,文件不能丢失
1
2
3
4
5
6
7
[iyunv@yph6 ~]# umount /dev/testvg/testlv
umount: /users: device is busy.
       (In some cases useful info about processes that use
         the device is found by lsof(8) orfuser(1))
[iyunv@yph6 ~]# fuser -km/dev/testvg/testlv    ------把占用的程序杀死
/dev/testvg/testlv:   4081c 5441c  5442c
[iyunv@yph6 ~]# umount/dev/testvg/testlv



1
2
3
4
[iyunv@yph6 ~]# e2fsck -f/dev/testvg/testlv  ----强制检测
[iyunv@yph6 ~]# resize2fs/dev/testvg/testlv 3G   ----------收缩逻辑边界至3G
[iyunv@yph6 ~]# lvreduce -L 3G/dev/testvg/testlv  -----------收缩物理边界至3G
[iyunv@yph6 ~]# mount/dev/testvg/testlv /users



1
2
3
4
[iyunv@yph6 ~]# su - archlinux
[archlinux@yph6 ~]$ ll
total 2
drwxr-xr-x 2 archlinux archlinux 2048Dec 18 23:28 pam.d  ------原来数据还在




5、对testlv创建快照,基于快照备份数据,验证快照功能
1
2
3
4
[iyunv@yph6 mnt]# umount /mnt
umount: /mnt: device is busy.
[iyunv@yph6 mnt]# fuser -km /mnt  --------杀死占用的进程
[iyunv@yph6 ~]# umount /mnt



1
2
3
4
5
[iyunv@yph6 ~]# lvcreate -s -L 100M -n snaplv-p r /dev/testvg/testlv ----对testlv做个快照卷
Rounding up size to full physical extent 112.00 MiB
Logical volume "snaplv" created.
~]# mount /dev/testvg/snaplv /mnt -------快照卷不用格式化,直接挂载
mount: block device/dev/mapper/testvg-snaplv is write-protected, mounting read-only



1
2
3
4
[iyunv@yph6 ~]# ll /mnt
total 13
drwx------ 5 archlinux archlinux  1024 Dec 19 11:30 archlinux  -快照不负众望,备份了数据
drwx------ 2 root      root     12288 Dec 19 11:10 lost+found




1
2
3
4
5
6
7
8
9
[archlinux@yph6 ~]$ touch text   ------archlinux在家目录新建个文件
[archlinux@yph6 ~]$ ll
total 2
drwxr-xr-x 2 archlinux archlinux 2048Dec 19 11:28 pam.d
-rw-rw-r-- 1 archlinux archlinux    0 Dec 19 11:46 text
[archlinux@yph6 ~]$ cd /mnt/archlinux  -----进入快照卷
[archlinux@yph6 archlinux]$ ll ----快照里面没有快照创建后新增文件
total 2
drwxr-xr-x 2 archlinux archlinux 2048Dec 19 11:28 pam.d




1
2
3
4
5
[archlinux@yph6 archlinux]$ cp -aR/mnt/archlinux  /tmp ----把快照里的数据备份出来
[archlinux@yph6 archlinux]$ cd/tmp/archlinux
[archlinux@yph6 archlinux]$ ll
total 4
drwxr-xr-x 2 archlinux archlinux 4096Dec 19 11:28 pam.d ----看来已经备份成功




1
2
3
4
5
[iyunv@yph6 ~]# umount /mnt
[iyunv@yph6 ~]# lvremove/dev/testvg/snaplv -----快照卷已经发挥了自己的人生价值,
按社会惯例我们该卸磨杀猪了。
Do you really want to remove activelogical volume snaplv? [y/n]: y
Logical volume "snaplv" successfully removed







附加一个小命令  
dd命令:
if,inputfile ;of,outputfile
dd if=/etc/fstab of=/tmp/fstab.2 bs=1 count=100
bs,block size  单位是字节;  count,指复制次数
dd命令比较底层,比cp效率更高

用于磁盘拷贝:
dd if=/dev/sda of=/dev/sdb

备份MBR:
dd if=/dev/sda of=/tmp/mbr.bar bs=512 count=1

破坏MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=256 count=1

闲着无聊的话可以测计算机的性能,让它不停的复制,看能坚持多久,跑坏了别找我
dd if=/dev/zero of=/dev/null
/dev/zero:无限吐零的设备
/dev/null:吞任何数据不吐骨头的主


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-158433-1-1.html 上篇帖子: Linux 服务器最快传输 下篇帖子: CentOS升级python2.7 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表