CentOS下LVM的使用

一、基本概念:

LVM(Logical Volume Manager):首先是基于实际的物理磁盘创建LVM分区,并创建物理卷PV。一个或多个物理卷可以用来创建卷组VG。然后基于卷组可以创建逻辑卷LV。只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。文件系统就是在逻辑卷上创建的,然后可以在操作系统中挂载和使用。

  • 物理长度PE(PhysicalExtent):物理长度是将物理卷组合为卷组后,所划分的最小存储单位,即逻辑意义上磁盘的最小存储单位。LVM默认PE大小为4MB
  • 物理卷PV(PhysicalVolume):物理卷是LVM的最底层概念,是LVM的逻辑存储块,物理卷与磁盘分区是逻辑的对应关系。
  • 卷组VG(VolumeGroup):卷组是LVM逻辑概念上的磁盘设备,通过将单个或多个物理卷组合后生成卷组。卷组的大小取决于物理卷的容量以及个数。
  • 逻辑卷LV(LogicalVolume):逻辑卷就是LVM逻辑意义上的分区,可以指定从卷组中提取多少容量来创建逻辑卷,最后对逻辑卷格式化并挂载使用。

二、演示环境:

新增一块20G的硬盘,分区/dev/sdb1,大小10G,分区ID为8e。


常用fdisk交互式指令说明


指令


说明


d


删除分区


l


显示分区类型


m


显示帮助菜单


n


新建分区


p


显示分区表信息


q


不保存退出


t


修改分区ID,可以通过l查看ID


w


保存并退出

使分区生效:

# partx -a /dev/sdb

# cat /proc/partitions

# fdisk -l /dev/sdb

三、PVVGLV中涉及到的常用命令:


名称


物理卷PV


卷组VG


逻辑卷LV


创建


pvcreate


vgcreate


lvcreate


显示


pvs  | pvscan | pvdisplay


vgs  | vgscan | vgdisplay


lvs  | lvscan | lvdisplay


扩容


vgextend


lvextend  | lvresize


缩减


vgreduce


lvreduce  | lvresize


删除


pvremove


vgremove


lvremove

四、创建LV

1、 将物理磁盘初始化为物理卷PV:# pvcreate /dev/sdb1

2、 创建卷组VG,将PV加入到VG中:# vgcreate vgtest1 /dev/sdb1

3、 基于VG创建逻辑卷LV:# lvcreate [选项] 卷组名

选项:

-l:指定使用多少个VG中的LE创建LV[%{VG|PVS|FREE}]

-L:指定LV大小

-n:指定LV名称

-p:指定权限,r为只读,rw为读写

# lvcreate -n lvtest1 -L 5G vgtest1  或者  # lvcreate -n lvtest1 -l 50%FREE vgtest1

//上述两种方法都是创建大小为5G,名为lvtest1的逻辑卷

4、 为逻辑卷创建文件系统:

# mke2fs -t ext4 /dev/vgtest1/lvtest1  或者  # mke2fs -t ext4 /dev/mapper/vgtest1-lvtest1

5、 创建挂载点,挂载LV:

# mkdir -pv /mnt/lvtest1

# mount /dev/vgtest1/lvtest1 /mnt/lvtest1

6、 创建测试数据:

# cd /mnt/lvtest1

# cp /etc/fstab .

# cp /etc/rc.sysinit .

# dd if=/dev/zero of=test bs=1M count=2048    //创建一个大小为2G的测试数据test

# cat fstab        //能正常显示文件内容

# cat rc.sysinit     //能正常显示文件内容

7、 实现开机自动挂载:

# vim /etc/fstab  -->  /dev/vgtest1/lvtest1  /mnt/lvtest1  ext4defaults  0  0

# mount-a

# mount  -->  /dev/mapper/vgtest1-lvtest1 on /mnt/lvtest1type ext4 (rw)

# cat /etc/mtab  -->  /dev/mapper/vgtest1-lvtest1 /mnt/lvtest1 ext4rw 0 0

备注:文件/etc/fstab和/etc/mtab的区别

  • /etc/fstab:存放的是系统中的文件系统信息,是系统准备装载的。
  • /etc/mtab:存放的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等。

五、扩容VG

1、 将之前/dev/sdb中再分出一个分区/dev/sdb2,大小为5G,分区ID为8e:# fdisk /dev/sdb

2、 将物理磁盘初始化为物理卷PV:# pvcreate /dev/sdb2

3、 将PV添加到指定VG中:# vgextend vgtest1 /dev/sdb2

vgtest1的大小增加了5G。

六、扩容LV(可在线扩容,无需卸载LV,不影响数据访问)

1、 确保VG中有足够的可用空间供LV扩容,将lvtest1扩容5G。

2、 扩容物理边界,格式:# lvextend [选项] /dev/卷组名/逻辑卷名

选项:

-l:指定使用多少个VG中的LE[%{VG|LV|PVS|FREE|ORIGIN}]

-L:指定LV大小

# lvextend -L 10G /dev/vgtest1/lvtest1  或者

# lvextend -L +5G /dev/vgtest1/lvtest1  或者

# lvextend -l +50%FREE /dev/vgtest1/lvtest1

//上述三种方法都是将lvtest1扩容5G,大小为10G

3、 扩容文件系统:# resize2fs /dev/vgtest1/lvtest1

4、 之前/mnt/lvtest1目录中的数据仍然能正常访问。

vgtest1的可用大小减少了5G,lvtest1的大小增加了5G。

七、缩减LV(必须离线操作)

1、 确保缩减后LV的大小要比存储在LV中数据的总和要大,将lvtest1缩减至8G。

2、 卸载逻辑卷lvtest1:# umount /mnt/lvtest1

3、 强制检测文件系统:# e2fsck -f /dev/vgtest1/lvtest1

4、 缩减文件系统:# resize2fs /dev/vgtest1/lvtest1 8G

5、 缩减物理边界:# lvreduce -L 8G /dev/vgtest1/lvtest1

6、 挂载逻辑卷lvtest1使用:# mount /dev/vgtest1/lvtest1 /mnt/lvtest1

7、 之前/mnt/lvtest1目录中的数据仍然能正常访问。

PV中的/dev/sdb1的可用大小增加了2G,vgtest1的可用大小增加了2G,lvtest1的大小减少了2G。

八、缩减VG

1、 新增一块大小为20G的磁盘,分区/dev/sdc1,大小10G,分区ID为8e,并初始化为PV,加入vgtest1中:

# fdisk /dev/sdc

# pvcreate /dev/sdc1

# vgextend vgtest1 /dev/sdc1

2、 将/dev/sdb1上的所有PV移动至/dev/sdc1中,然后删除/dev/sdb1,从而达到缩减VG的目的:

# pvmove /dev/sdb1 /dev/sdc1

3、 从卷组vgtest1中删除/dev/sdb1:# vgreduce vgtest1 /dev/sdb1

/dev/sdb1中的PV已经全部移动至/dev/sdc1中,vgtest1的大小也减少了10G。/dev/sdb1可以删除也可以加入别的VG中。

4、 之前/mnt/lvtest1目录中的数据仍然能正常访问。

九、删除LV

1、 将上述的/dev/sdb1加入到新卷组vgtest2中,并创建lvtest2:

# vgcreate vgtest2 /dev/sdb1

# lvcreate -n lvtest2 -l 100%FREE vgtest2

# mke2fs -t ext4 /dev/vgtest2/lvtest2

# mkdir -pv /mnt/lvtest2

# mount /dev/vgtest2/lvtest2 /mnt/lvtest2

2、 卸载lvtest2:# umount /mnt/lvtest2

3、 删除lvtest2:# lvremove /dev/vgtest2/lvtest2

lvtest2已被删除,vgtest2可用大小为10G。

十、删除VG

1、 删除vgtest2:# vgremove vgtest2

vgtest2已经删除。

十一、删除PV

1、 删除/dev/sdb1:# pvremove /dev/sdb1

2、 使用fdisk命令将无用的分区删除,或者将其分区ID从8e修改为83。

PV中的/dev/sdb1已经删除。

十二、创建快照卷:

1、 为lvtest1创建大小为5G的快照卷lvtest1-snap:

# lvcreate -s -L 5G -n lvtest1-snap -p r /dev/vgtest1/lvtest1      //-s:创建快照卷,-p r:表示属性为只读

2、 创建快照卷挂载点,挂载快照卷:

# mkdir -pv /mnt/snap

# mount /dev/vgtest1/lvtest1-snap /mnt/snap

备注:快照卷是逻辑卷的一种,通常为只读。快照卷与原卷在同一个卷组中,因此创建快照卷之前要确保原卷所在的卷组中有足够空间可用。快照卷无须与原卷一样大,其大小取决于快照卷的存活时长内原卷的数据变化量。

3、 查看lvtest1和lvtest1-snap中的内容:

可以看到内容保持一致。创建快照以后,快照之后所修改的数据,通过快照卷是访问不到的,因为它保存的是过去某一时刻的状态,可以备份或复制该时刻的数据。

十三、删除快照卷:

1、 卸载快照卷:# umount /mnt/snap

2、 删除快照卷:# lvremove /dev/vgtest1/lvtest1-snap

十四、其他常用操作:

1、 重命名lvtest1为marion:# lvrename vgtest1 lvtest1 marion

2、 重命名vgtest1为keyso:# vgrename vgtest1 keyso

3、 合并卷组:创建一个大小为10G的新卷组vgtest,将vgtest合并到keyso中:

# vgmerge keyso vgtest

时间: 2024-10-05 12:18:50

CentOS下LVM的使用的相关文章

CentOS下LVM逻辑卷管理技术解释

1.LVM逻辑卷管理技术产生的背景 企业日益变化的存储需要使得传统的磁盘分区存储显得不够灵活 2.磁盘分区存储 对于这样的三个物理分区的话,迟早有一天会被数据填满,因为它是死的,无法进行缩放. 假设下面表示的是/dev/sda磁盘上的三个分区: 1).初始化/dev/sda上的这三个物理分区: 命令:# pvcreate /dev/sda1 /dev/sda2 /dev/sda3 或#pvcreate /dev/sda[1-3] 2).将这三个物理卷PV ,合并成一个卷组(VG Volume G

烂泥:centos安装LVM方式

本文首发于烂泥行天下. 最近开始打算学习有关LVM逻辑卷的知识,由于以前没有接触过,看了很多有关这方面的视频.但是一直不深入.今天就先不管了,先把centos系统安装在LVM上. 有关LVM在这做个简单的介绍,LVM是逻辑卷管理器,在LVm中有三个比较重要的概念PV.VG.LV. 其中PV表示物理卷是整个LVM的最底层 VG表示卷组,卷组是建立一个或多个PV上. LV表示逻辑卷,逻辑卷是建议在卷组上的,一个卷组上可以建立一个或多个LV. 好了,把centos安装在LVM上目前我们知道这么多就够了

Linux centos下让alias自定义永久生效(+常用的别名)

alias可以简化一些复杂的命令串,使一个单词或简化后的命令即可实现复杂(通常是带很多参数的长串)命令. 基本用法: alias 简化命令='实际的长串命令'    //实际长串命令通常为'原命令 -/选项参数' eg. alias ll='ls -a' 获取别名: alias        //即可查看当前设定的所有alias别名 取消别名: unalias 简化命令 eg. unalias ll            //取消ll的别名 永久生效: 直接使用alias命令定义的别名,重启后就

Centos下安装memcached+memcached教程

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据.简单的说就是将

CentOS下安装Filezilla软件

CentOS下安装Filezilla软件 说到Centos大家都是非常熟悉了,当然Filezilla也是日常中应用的软件,但是在linux下安装怎么操作呢.安装Filezilla有多个方式,但用户应该最喜欢用的就是下载安装包,然后执行安装.安装Filezilla前需要,下载安装包,然后需要安装编译器,以上工作准备好后,还需要解压,所以比较零碎,所以我就没选择通过安装包进行过安装,在此我通过rpm进行安装,首选是下载所需文件,然后进行yum安装.具体见习: 首选是安装Rpm,在centos下执行以

关于CentOS下 yum包下载下的rpm包放置路径

http://blog.sina.com.cn/s/blog_4e928c170100xxdj.html 在CentOS下用yum安装,回发现在/var/cache/yum/下的base.extrs和updates下的packages下都没有发现下载的RPM 原来在/etc/yum.conf下没有设置下载选项 keepcache=0为下载后清除 keepcache=1为下载后保存

CentOS 下如何修改 MySQL 的密码

做服务器运维,修改 MySQL 的密码是经常的需要,定期修改 MySQL 密码是网站安全的一个保证.这里记录一下修改 MySQL 密码的一些命令,方便以后查看. 修改root密码 CentOS 下 MySQL 管理员帐号默认是 root 用户,密码为空.如果你从没设置过 MySQL 的密码,使用 root 用户来连接 MySQL 服务器不需要输入密码. 第一次设置root密码可以使用以下命令: 1 mysqladmin -u root password NEWPASSWORD 如果你已经设置过密

CentOS下yii异常提示某个文件夹没有写的权限

CentOS下yii异常提示某个文件夹没有写的权限,明明给了最高的777权限,却一直提示没有写的权限.弄了好久,才明白是selinux作怪. 解决方法1:懒人方法,关闭selinux.比如 setenforce 0  等等... 生产环境中,基于安全性的考虑,不建议关闭selinux 解决方法2:彻底解决:chcon -R -t httpd_sys_content_t /your yii app dir.

Centos下安装Redmine

1 Redmine介绍 Redmine是基于ROR框架开发的一套跨平台项目管理系统,是项目管理系统的后起之秀,据说是源于Basecamp的ror版而来,支持多种数据库,除了和DotProject的功能大致相当外,还有不少自己的独特的功能,例如提供wiki.新闻台.时间跟踪.feed聚合.导出pdf等,还可以集成其它版本管理系统和BUG跟踪系统,例如SVN.CVS.TD等. 2 安装说明 操作系统:centos6.0 64位 所需软件:bitnami-redmine-2.5.2-0-linux-x