原创

LVM 详细介绍

一.LVM简介

LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。

二.安装lvm相关命令

# yum install lvm2  -y

三.常用命令

PV:Physical(物理卷)     pvcreate、pvs 、pvdisplay 、pvremove、pvmove、pvscan

VG:Volume Group(卷组)     vgcreate、vgs、vgdisplay、vgremove、vgrename、vgreduce、vgextent 

LV:logical Volume(逻辑卷)      lvs、lvdisplay、lvremove、lvextend、lvresize、lvscan、lvrename

四.创建逻辑卷

1.创建几个分区

[root@node1 ~]# fdisk  /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p          

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458   
    Device Boot      Start         End      Blocks   Id  System

Command (m for help): n       Command action   
    e   extended   
    p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +3G 

Command (m for help): n
Command action 
  e   extended 
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (394-1305, default 394): 
Using default value 394Last cylinder, +cylinders or +size{K,M,G} (394-1305, default 1305): +5G
Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         393     3156741   83  Linux
/dev/sdb2             394        1047     5253255   83  Linux

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

2.修改分区格式为Linux LVM(8e)

[root@node1 ~]# fdisk  /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').Command (m for help): p   
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         393     3156741   83  Linux
/dev/sdb2             394        1047     5253255   83  Linux
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): tPartition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x39094458
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         393     3156741   8e  Linux LVM
/dev/sdb2             394        1047     5253255   8e  Linux LVM
Command (m for help): wThe partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

3.使用partprobe命令重新加载分区表

partprobe /dev/sda注意:若此命令未安装,可以使用以下命令安装以下;# yum install parted

4.查看分区信息

# cat /proc/partitions

5.创建pv

pvcreate /dev/sda{1,2}

# 查看pv列表:
pvs

# 查看某个pv信息:
pvdisplay  /dev/sdb1

#删除
pvpvremove /dev/sdb1

6.创建vg

# vgcreate VG_NAME /dev/sda{1,2}
# 查看vg列表
vgs

# 查看单个vg信息
vgdisplay VG_NAME

# 删除一个vg
vgremove VG_NAME

7.创建lv

# lvcreate -n LV_NAME  -L 
VG_NAME-L:指定lv的大小,单位[b|B|s|S|k|K|m|M|g|G|t|T|p|P|e|E]-n:指定lv的名称

# 查看lv列表
lvs

# 查看单个lv信息
lvdisplay /dev/VG_NAME/LV_NAME

# 移除lv
lvremove /dev/VG_NAME/LV_NAME

8.格式化lv分区

# mke2fs  -j /dev/VG_NAME/LV_NAME

9.挂在分区使用

# mount  /dev/VG_NAME/LV_NAME /WOEK_DIR

五.缩减VG

1.将此分区的数据移到其他分区

# pvmove /dev/sda1

2.从vg中移除pv

# vgreduce VG_NAME /dev/sda1

3.若此pv不需要使用,则移除pv即可

# pvremove  /dev/sda1

六.扩展VG

1.添加一个pv

# pvcreate /dev/sdb3

2.加入vg

# vgextend  VG_NAME /dev/sda3 添加一个pv

七.扩展逻辑卷:

注意: 1.先扩展物理边界,再扩展逻辑边界(文件系统) 2.在线快展; 实例: 1.扩展物理边界:默认lv大小为2G

# lvextent -L  5G  /dev/VG_NAME/LV_NAME
   -L 5G:指扩展到5G 
   -L +5G:指增加5G
注意:此时物理边界已经扩展,但是文件系统还没有扩展,lv大小已经扩展为5G,但是文系统的大小还是为2G;

[root@node1 ~]# lvs /dev/myvg/mylv 
LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
mylv myvg -wi-ao---- 5.00g   

[root@node1 ~]# df -Th | grep mylv
/dev/mapper/myvg-mylv        ext3   2.0G   68M  1.9G   4% /test

2.扩展逻辑卷边界:

# resize2fs  /dev/VG_NAME/LV_NAME  5G|-p    
5G:扩展到5G    
-p:使用lv全部空间#此时再看下文件系统大小,文件系统已经扩展到5G:
[root@node1 ~]# df -Th | grep mylv
/dev/mapper/myvg-mylv        ext3   5.0G   69M  4.7G   2% /test

八.缩减逻辑卷:

注意: 1.先缩减文件系统,再缩减物理边界 2.不能在线缩减,得先卸载分区(umount) 3.确保缩减后的空间大小依然能存储原有的所有数据 4.在缩减前强行检查文件,以确保文件系统处于一致性状态

实例:

1.卸载分区# umount /dev/VG_NAME/LV_NAME
2.强制进行检测# e2fsck -f /dev/VG_NAME/LV_NAME
3.缩减逻辑卷# resize2fs  /dev/VG_NAME/LV_NAME 3G  ###缩减为3G
注意:此时只是缩减了文件系统的大小,物理边界的大小没有变;

[root@node1 ~]# lvs /dev/myvg/mylv 
LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 5.00g    

4.缩减物理# lvreduce -L -3 /dev/VG_NAME/LV_NAME
-L -3:缩减3G
-L 3:缩减到3G
#此时在看下lv大小,已经缩减到指定大小[root@node1 ~]# lvs /dev/myvg/mylv
 LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
 mylv myvg -wi-a----- 3.00g 

5.重新挂载使用
[root@node1 ~]# df -Th | grep mylv
/dev/mapper/myvg-mylv        ext3   3.0G   68M  2.8G   3% /test

*已经缩减成功!
1.卸载分区
# umount /dev/VG_NAME/LV_NAME

2.强制进行检测
# e2fsck -f /dev/VG_NAME/LV_NAME

3.缩减逻辑卷
# resize2fs  /dev/VG_NAME/LV_NAME 3G  ###缩减为3G注意:此时只是缩减了文件系统的大小,物理边界的大小没有变;
[root@node1 ~]# lvs /dev/myvg/mylv 
LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 5.00g    

4.缩减物理# lvreduce -L -3 /dev/VG_NAME/LV_NAME
-L -3:缩减3G
-L 3:缩减到3G

#此时在看下lv大小,已经缩减到指定大小
[root@node1 ~]# lvs /dev/myvg/mylv
 LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
 mylv myvg -wi-a----- 3.00g 

5.重新挂载使用
 [root@node1 ~]# df -Th | grep mylv/dev/mapper/myvg-mylv        ext3   3.0G   68M  2.8G   3% /test
 
 *已经缩减成功!

九.快照卷:

注意: 1.生命周期为整个数据使用时长,在这段时间内,数据的增长量不能超过快照卷大小; 2.快照卷大小最好与原逻辑卷的大小相同; 3.快照卷为只读; 4.快照卷跟原卷在一个卷组内; 5.在线创建,只能所完整备份

创建:# lvcreate   -L #  -n S_LV_NAME -s  -p r   /dev/VG_NAME/LV_NAME   
-L:指定快照卷大小   
-n:指定快照卷名称   
-s:创建快照卷   
-p r|w :指定快照卷权限
移除:# lvremove /dev/VG_NAME/S_LV_NAME
实例:
1.先创建快照卷[root@node1 ~]# lvcreate  -L 3G -n mylv_bak -s -p r /dev/myvg/mylv Logical volume "mylv_bak" created.

2.查看pv列表
[root@node1 ~]# lvs
LV       VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
mylv     myvg     owi-aos---  3.00g                                                    
mylv_bak myvg     sri-a-s---  3.00g      mylv   0.00

3.挂载查看数据
[root@node1 ~]# mount /dev/myvg/mylv_bak  /mnt/
mount: block device /dev/mapper/myvg-mylv_bak is write-protected, mounting read-only

4.最后可以使用tar将快照卷数据归档备份;

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Tomcat开启SSL 8443端口的方法

    TOMCAT_HOME:/usr/local/tomcat7,安装方法参考:windows和linux 下将tomcat注册为服务

    云知识Online
  • 获取CDN或Nginx的用户真实ip地址

    目前问题:腾讯云CDN作为前端,Apache作为后端的情况下,Apache只能获取到腾讯云CDN前端的ip地址,而无法获取到用户的真实ip地址,在这种情况下,后...

    云知识Online
  • Windows Server 2008 R2修改远程桌面连接数

    计算机---属性---远程设置---勾选"允许运行任意版本远程桌面的计算机连接(较不安全)"……

    云知识Online
  • Java每日一练(2017/6/1)

    Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 课前导读 ●回复"每日一练"获取以前的题目! ●答案公布时间:为每期发布题目的第二...

    Java学习
  • Java每日一练(2017/6/14)

    Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 最新通知 ●回复"每日一练"获取以前的题目! ●答案公布时间:为每期发布题目的第二...

    Java学习
  • 谷歌旗下DeepMind成立健康部(视频)

    大数据文摘
  • 关于SparkStreaming中的checkpoint

    我是攻城师
  • Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(十三)集成 UEditor 百度富文本编辑器

    Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(十三)集成 UEditor 百度富文本编辑器 前情回顾 通过前面系统的学...

    FungLeo
  • RecyclerView 居然还能实现吸底效果

    这些天遇到一个列表数据吸底需求,如果不满一屏就全部展示,如果超过一屏就让底部悬浮在屏幕底部。

    程序亦非猿
  • MFC 调用静态链接 MFC 的规则 DLL

    最近学习了生成静态链接的dll及其调用,写一下笔录和大家分享,有错误的地方欢迎大家指出来

    包子388321

扫码关注云+社区

领取腾讯云代金券