centos下LVM配置与管理
centos下LVM配置与管理
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
LVM的主要功能:容量组合,动态调整容量大小。
LVM是将多块硬盘从逻辑上组合成一个大容量的存储空间(即VG),最终要划分成小的LV逻辑卷来使用这些空间。
LVM的管理流程:先给硬盘分区(也可以不分区),再创建PV,再创建VG,再创建LV,再格式化LV,再手动或自动挂载LV,再写入数据。
基本的逻辑卷管理概念:
PV(Physical Volume)- 物理卷
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
VG(Volumne Group)- 卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
关系图如下:
PE(Physical Extent)- 物理块
LVM 默认使用4MB的PE区块,而LVM的LV最多仅能含有65534个PE (lvm1 的格式),因此默认的LVM的LV最大容量为4M*65534/(1024M/G)=256G。PE是整个LVM 最小的储存区块,也就是说,其实我们的资料都是由写入PE 来处理的。简单的说,这个PE 就有点像文件系统里面的block 大小。所以调整PE 会影响到LVM 的最大容量!不过,在 CentOS 6.x 以后,由于直接使用 lvm2 的各项格式功能,因此这个限制已经不存在了。
功能/命令 |
物理卷管理(PV) |
卷组管理(VG) |
逻辑卷管理(LV) |
扫描查询系统中的LVM设备 |
pvscan |
vgscan |
lvscan |
建立 |
pvcreate |
vgcreate |
lvcreate |
显示 |
pvdisplay |
vgdisplay |
lvdisplay |
状态 |
pvs |
vgs |
lvs |
删除 |
pvremove |
vgremove |
lvremove |
扩展(增加容量) |
vgextend |
lvextend/lvresize |
|
缩容(缩小容量) |
vgreduce |
lvreduce/lvresize |
|
调整系统中看到的容量 |
resize2fs/xfs_growfs |
LVM逻辑卷管理的思路:先给硬盘分区(也可以不分区),再创建pv,再创建vg,再创建lv,再格式化,再手动或自动挂载,再测试数据的写入。
创建PV物理卷:
- [root@serve1 ~]# lsblk
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
- sda : 20G disk
- ├─sda1 : 1G part /boot
- └─sda2 : 19G part
- ├─cl-root : 17G lvm /
- └─cl-swap : 2G lvm [SWAP]
- sdb : 20G disk
- sdc : 20G disk
- sr0 : .7G rom
创建PV
- [root@serve1 ~]# pvcreate /dev/sd[b-c]
- Physical volume "/dev/sdb" successfully created.
- Physical volume "/dev/sdc" successfully created.
查看PV的状态
- [root@serve1 ~]# pvs
- PV VG Fmt Attr PSize PFree
- /dev/sda2 cl lvm2 a-- <.00g
- /dev/sdb lvm2 --- .00g .00g
- /dev/sdc lvm2 --- .00g .00g
查看PV的详细信息
- [root@serve1 ~]# pvdisplay
- --- Physical volume ---
- PV Name /dev/sda2
- VG Name cl
- PV Size <19.00 GiB / not usable 3.00 MiB
- Allocatable yes (but full)
- PE Size 4.00 MiB
- Total PE
- Free PE
- Allocated PE
- PV UUID fnufKb-qQ1k-jEH3-tS3R-7dvF-Ldrd-6PMuoG
- "/dev/sdb" is a new physical volume of "20.00 GiB"
- --- NEW Physical volume ---
- PV Name /dev/sdb
- VG Name
- PV Size 20.00 GiB
- Allocatable NO
- PE Size
- Total PE
- Free PE
- Allocated PE
- PV UUID koMQS3-Omw9-bg8r-Lluq-vM7C-nm0B-KqKIaH
- "/dev/sdc" is a new physical volume of "20.00 GiB"
- --- NEW Physical volume ---
- PV Name /dev/sdc
- VG Name
- PV Size 20.00 GiB
- Allocatable NO
- PE Size
- Total PE
- Free PE
- Allocated PE
- PV UUID mzTDJw-Ak2N-CzDD-eEcO-bczl-wA0r-44LHqd
创建VG卷组:
- [root@serve1 ~]# vgcreate vg1 /dev/sd[b-c]
- Volume group "vg1" successfully created
- [root@serve1 ~]# vgs
- VG #PV #LV #SN Attr VSize VFree
- cl wz--n- <.00g
- vg1 wz--n- .99g .99g
- [root@serve1 ~]# vgdisplay
- --- Volume group ---
- VG Name vg1
- System ID
- Format lvm2
- Metadata Areas
- Metadata Sequence No
- VG Access read/write
- VG Status resizable
- MAX LV
- Cur LV
- Open LV
- Max PV
- Cur PV
- Act PV
- VG Size 39.99 GiB
- PE Size 4.00 MiB
- Total PE
- Alloc PE / Size /
- Free PE / Size / 39.99 GiB
- VG UUID xfNGUD-pYdS-eUI9-5Y0u-Ulqx-rwWW-EI5gso
- --- Volume group ---
- VG Name cl
- System ID
- Format lvm2
- Metadata Areas
- Metadata Sequence No
- VG Access read/write
- VG Status resizable
- MAX LV
- Cur LV
- Open LV
- Max PV
- Cur PV
- Act PV
- VG Size <19.00 GiB
- PE Size 4.00 MiB
- Total PE
- Alloc PE / Size / <19.00 GiB
- Free PE / Size /
- VG UUID cxM7kS-b357-Y4MX-439j-EkVT-3X4l-5tTZp1
说明:vg1指的是卷组名称,/dev/[b-c]是卷组中的设备
创建LV逻辑卷(这里我创建了2个LV逻辑卷):
- [root@serve1 ~]# lvcreate -L 25G -n lv1 vg1 #创建LV逻辑卷
- Logical volume "lv1" created.
- [root@serve1 ~]# lvs
- LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
- root cl -wi-ao---- <.00g
- swap cl -wi-ao---- .00g
- lv1 vg1 -wi-a----- .00g
- [root@serve1 ~]# lvdisplay
- --- Logical volume ---
- LV Path /dev/vg1/lv1
- LV Name lv1
- VG Name vg1
- LV UUID PDVaXp-eih9-ogif-PvBu-Mve2-nCUf-086A8o
- LV Write Access read/write
- LV Creation host, time serve1, -- :: +
- LV Status available
- # open
- LV Size 25.00 GiB
- Current LE
- Segments
- Allocation inherit
- Read ahead sectors auto
- - currently set to
- Block device :
- --- Logical volume ---
- LV Path /dev/cl/swap
- LV Name swap
- VG Name cl
- LV UUID fjdF4f-JxFB-gtEh-7k4C-74BC-odR2-wIL6Sy
- LV Write Access read/write
- LV Creation host, time serve1, -- :: +
- LV Status available
- # open
- LV Size 2.00 GiB
- Current LE
- Segments
- Allocation inherit
- Read ahead sectors auto
- - currently set to
- Block device :
- --- Logical volume ---
- LV Path /dev/cl/root
- LV Name root
- VG Name cl
- LV UUID OddHW1-lehU-NcYT-uO19-nD7y-kdSx-PO3ZW0
- LV Write Access read/write
- LV Creation host, time serve1, -- :: +
- LV Status available
- # open
- LV Size <17.00 GiB
- Current LE
- Segments
- Allocation inherit
- Read ahead sectors auto
- - currently set to
- Block device :
明:-L:指定逻辑卷的大小,单位为"kKmMgGtT"字节; -n:指定逻辑卷的名称; vg1是卷组的名称,卷组的名称要和上面创建的卷组名称一致。
- [root@serve1 ~]# lvcreate -l +%FREE -n lv2 vg1
- Logical volume "lv2" created.
- [root@serve1 ~]# lvs
- LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
- root cl -wi-ao---- <.00g
- swap cl -wi-ao---- .00g
- lv1 vg1 -wi-a----- .00g
- lv2 vg1 -wi-a----- .99g
- [root@serve1 ~]# lvdisplay
- --- Logical volume ---
- LV Path /dev/vg1/lv1
- LV Name lv1
- VG Name vg1
- LV UUID PDVaXp-eih9-ogif-PvBu-Mve2-nCUf-086A8o
- LV Write Access read/write
- LV Creation host, time serve1, -- :: +
- LV Status available
- # open
- LV Size 25.00 GiB
- Current LE
- Segments
- Allocation inherit
- Read ahead sectors auto
- - currently set to
- Block device :
- --- Logical volume ---
- LV Path /dev/vg1/lv2
- LV Name lv2
- VG Name vg1
- LV UUID DSymjV-ExDB-wTSR-6lns-Swjz-ZzP5-Ywf0xA
- LV Write Access read/write
- LV Creation host, time serve1, -- :: +
- LV Status available
- # open
- LV Size 14.99 GiB
- Current LE
- Segments
- Allocation inherit
- Read ahead sectors auto
- - currently set to
- Block device :
- --- Logical volume ---
- LV Path /dev/cl/swap
- LV Name swap
- VG Name cl
- LV UUID fjdF4f-JxFB-gtEh-7k4C-74BC-odR2-wIL6Sy
- LV Write Access read/write
- LV Creation host, time serve1, -- :: +
- LV Status available
- # open
- LV Size 2.00 GiB
- Current LE
- Segments
- Allocation inherit
- Read ahead sectors auto
- - currently set to
- Block device :
- --- Logical volume ---
- LV Path /dev/cl/root
- LV Name root
- VG Name cl
- LV UUID OddHW1-lehU-NcYT-uO19-nD7y-kdSx-PO3ZW0
- LV Write Access read/write
- LV Creation host, time serve1, -- :: +
- LV Status available
- # open
- LV Size <17.00 GiB
- Current LE
- Segments
- Allocation inherit
- Read ahead sectors auto
- - currently set to
- Block device :
说明:-l:指定逻辑卷的大小(LE数)
创建挂载目录、格式化挂载并写入文件测试:
- #格式化LV逻辑卷
- [root@serve1 ~]# mkfs.xfs /dev/vg1/lv1
- meta-data=/dev/vg1/lv1 isize= agcount=, agsize= blks
- = sectsz= attr=, projid32bit=
- = crc= finobt=, sparse=
- data = bsize= blocks=, imaxpct=
- = sunit= swidth= blks
- naming =version bsize= ascii-ci= ftype=
- log =internal log bsize= blocks=, version=
- = sectsz= sunit= blks, lazy-count=
- realtime =none extsz= blocks=, rtextents=
- [root@serve1 ~]# mkfs.xfs /dev/vg1/lv2
- meta-data=/dev/vg1/lv2 isize= agcount=, agsize= blks
- = sectsz= attr=, projid32bit=
- = crc= finobt=, sparse=
- data = bsize= blocks=, imaxpct=
- = sunit= swidth= blks
- naming =version bsize= ascii-ci= ftype=
- log =internal log bsize= blocks=, version=
- = sectsz= sunit= blks, lazy-count=
- realtime =none extsz= blocks=, rtextents=
- #挂载逻辑卷
- [root@serve1 ~]# mount /dev/vg1/lv1 /web
- [root@serve1 ~]# mount /dev/vg1/lv2 /data
- [root@serve1 ~]# df -hT
- 文件系统 类型 容量 已用 可用 已用% 挂载点
- /dev/mapper/cl-root xfs 17G .3G 13G % /
- devtmpfs devtmpfs .9G .9G % /dev
- tmpfs tmpfs .9G .9G % /dev/shm
- tmpfs tmpfs .9G 9.1M .9G % /run
- tmpfs tmpfs .9G .9G % /sys/fs/cgroup
- /dev/sda1 xfs 1014M 238M 777M % /boot
- tmpfs tmpfs 378M 12K 378M % /run/user/
- tmpfs tmpfs 378M 378M % /run/user/
- /dev/mapper/vg1-lv1 xfs 25G 33M 25G % /web
- /dev/mapper/vg1-lv2 xfs 15G 33M 15G % /data
- [root@serve1 ~]# echo /dev/mapper/vg1-lv1 /web xfs defaults >>/etc/fstab
- [root@serve1 ~]# echo /dev/mapper/vg1-lv2 /date xfs defaults >>/etc/fstab
- [root@serve1 ~]# cat /etc/fstab
- #
- # /etc/fstab
- # Created by anaconda on Wed Sep ::
- #
- # Accessible filesystems, by reference, are maintained under '/dev/disk'
- # See man pages fstab(), findfs(), mount() and/or blkid() for more info
- #
- /dev/mapper/cl-root / xfs defaults
- UUID=4318c13a-c39b-484d-aaa0-ce6331eddc30 /boot xfs defaults
- /dev/mapper/cl-swap swap swap defaults
- /dev/mapper/vg1-lv1 /web xfs defaults
- /dev/mapper/vg1-lv2 /date xfs defaults
说明:centos7支持xfs和etx4类型的文件系统,centos6不支持xfs类型的文件系统。
卸载删除LVM
思路:删除LVM的步骤和创建LVM的步骤是相反的。先删除LV逻辑卷,再删除VG卷组,最后删除PV物理卷
- [root@serve1 ~]# lvremove /dev/vg1/lv1
- Do you really want to remove active logical volume vg1/lv1? [y/n]: y
- Logical volume "lv1" successfully removed
- [root@serve1 ~]# lvs
- LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
- root cl -wi-ao---- <.00g
- swap cl -wi-ao---- .00g
- #删除VG1卷组
- [root@serve1 ~]# vgremove vg1
- Volume group "vg1" successfully removed
- #查看VG卷组状态
- [root@serve1 ~]# vgs
- VG #PV #LV #SN Attr VSize VFree
- cl wz--n- <.00g
- #删除sd[b-c]物理卷
- [root@serve1 ~]# pvremove /dev/sd[b-c]
- Labels on physical volume "/dev/sdb" successfully wiped.
- Labels on physical volume "/dev/sdc" successfully wiped.
- #查看PV物理卷状态
- [root@serve1 ~]# pvs
- PV VG Fmt Attr PSize PFree
- /dev/sda2 cl lvm2 a-- <.00g
- #最后注释或删掉/etc/fstab里面逻辑卷的挂载信息。
centos下LVM配置与管理的更多相关文章
- CentOS下LVM逻辑卷管理技术解释
1.LVM逻辑卷管理技术产生的背景 企业日益变化的存储需要使得传统的磁盘分区存储显得不够灵活 2.磁盘分区存储 对于这样的三个物理分区的话,迟早有一天会被数据填满,因为它是死的,无法进行缩放. 假设下 ...
- (转)CentOS下开机启动查看管理命令:chkconfig用法
CentOS下开机启动查看管理命令:chkconfig用法 CentOS下开机启动查看管理的命令是:chkconfig 1. 开机启动列表查看: chkconfig --list 说明 ...
- CentOS下Apache配置多域名或者多端口映射
CentOS下Apache默认网站根目录为/var/www/html,假如我默认存了一个CI项目在html文件夹里,同时服务器的外网IP为ExampleIp,因为使用的是MVC框架,Apache需开启 ...
- Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)
Centos下安装配置LAMP(Linux+Apache+MySQL+PHP) 关于LAMP的各种知识,还请大家自行百度谷歌,在这里就不详细的介绍了,今天主要是介绍一下在Centos下安装,搭建一 ...
- 阿里云服务器centos下安装配置svn服务器
阿里云服务器centos下安装配置svn服务器 1.安装svn服务器端yum install subversion 从镜像下载安装svn服务器端中间会提示是否ok,输入y,确认安装成功提 ...
- linux centOS下怎么配置web服务器
| 浏览:4503 | 更新:2011-12-07 17:45 1 2 3 分步阅读 下是我在配置web服务时作的一些记录,高手飘开或者看了指点一下,不胜感激,第一次配置,很多细节需要自己优化.适合环 ...
- CentOS下安装配置Cacti
cacti简介 随着公司规模扩大,服务器也日渐增多,对服务器集群的网络流量和服务器性能实时监测显得愈发重要.开源阵营中常用有MRTG(MultiRouter Traffic Grapher)--基于S ...
- 在centos 下安装配置基于gitosis 的git 服务
前言 这里我用的系统是centos 6.2, 在服务器上的准备工作(服务器IP为10.0.2.8 ): 1.安装 openssh服务器与客户端工具 $ sudo yum install openssh ...
- 在CentOS下安装配置MySQL(转)
今天刚把项目做完,需要马上部署到新到的测试服务器上,于是乎,要在服务器上安装环境,由于好久在linux上部署了,手有些生,比较费劲装完,现在把重要步骤贴出,供自己以后参照.1.首先要看看有没有已经安装 ...
随机推荐
- PHP中的header()函数
PHP header 函数的用法及其注意事项 void header ( string $string [, bool $replace = true [, int $http_response_co ...
- 利用自定义特性实现List的多属性排序
知道linq有order by的功能,但是还是动手研究了一下,算是多实践实践反射.这篇算是笔记,直接上代码: using System; using System.Collections.Concur ...
- url长度
今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的.URL中列出了所有参与该操作的Ticket Id.于是,我想起GET请求是有 ...
- python随笔--根据号码查询归属地
给定一组(串)数据,根据输入得号码,查询归属地 def num_info(num): info0 = """5583|1860100|010|北京市|北京联通GSM卡 5 ...
- JQ的事件绑定
一.事件的绑定:可以添加多个同类事件 $("").click(function(){ }) $("").on(事件名,函数) $("").o ...
- CSS3伪类使用方法实例
有时候在网页设计中会涉及到很多看上去很繁琐的设计图,这时候都会很让人头疼,那么这时候伪类就可以来帮助你解决问题了. 下面有一段实例大家可以参考一下: <!DOCTYPE html> < ...
- Android 仿微信朋友圈拍小视频上传到服务器
这个接上一个写的实现拍小视频和传到服务器的 界面是这个样子滴. 我也知不知道怎么给图片搞小一点o(╯□╰)o 布局文件是这样的[认真脸] <?xml version="1.0&quo ...
- ios两个app之间跳转,传值的实现
两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...
- 【微软大法好】VS Tools for AI全攻略(4)——选择适合自己的虚拟机
当我们选择好了自己的虚拟机后,也许效果不尽如人意.就比如我,发现代码在训练一段时间之后,CPU的使用率会下降. 这个时候我们就要开始考虑,是不是我们选择的虚拟机不是适合自己的型号. Azure的虚拟机 ...
- 51Nod 1600 Simple KMP SAM+LCT/树链剖分
1600 Simple KMP 对于一个字符串|S|,我们定义fail[i],表示最大的x使得S[1..x]=S[i-x+1..i],满足(x<i)显然对于一个字符串,如果我们将每个0<= ...