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物理卷:

  1. [root@serve1 ~]# lsblk
  2. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  3. sda : 20G disk
  4. ├─sda1 : 1G part /boot
  5. └─sda2 : 19G part
  6. ├─cl-root : 17G lvm /
  7. └─cl-swap : 2G lvm [SWAP]
  8. sdb : 20G disk
  9. sdc : 20G disk
  10. sr0 : .7G rom

创建PV

  1. [root@serve1 ~]# pvcreate /dev/sd[b-c]
  2. Physical volume "/dev/sdb" successfully created.
  3. Physical volume "/dev/sdc" successfully created.

查看PV的状态

  1. [root@serve1 ~]# pvs
  2. PV VG Fmt Attr PSize PFree
  3. /dev/sda2 cl lvm2 a-- <.00g
  4. /dev/sdb lvm2 --- .00g .00g
  5. /dev/sdc lvm2 --- .00g .00g

查看PV的详细信息

  1. [root@serve1 ~]# pvdisplay
  2. --- Physical volume ---
  3. PV Name /dev/sda2
  4. VG Name cl
  5. PV Size <19.00 GiB / not usable 3.00 MiB
  6. Allocatable yes (but full)
  7. PE Size 4.00 MiB
  8. Total PE
  9. Free PE
  10. Allocated PE
  11. PV UUID fnufKb-qQ1k-jEH3-tS3R-7dvF-Ldrd-6PMuoG
  12.  
  13. "/dev/sdb" is a new physical volume of "20.00 GiB"
  14. --- NEW Physical volume ---
  15. PV Name /dev/sdb
  16. VG Name
  17. PV Size 20.00 GiB
  18. Allocatable NO
  19. PE Size
  20. Total PE
  21. Free PE
  22. Allocated PE
  23. PV UUID koMQS3-Omw9-bg8r-Lluq-vM7C-nm0B-KqKIaH
  24.  
  25. "/dev/sdc" is a new physical volume of "20.00 GiB"
  26. --- NEW Physical volume ---
  27. PV Name /dev/sdc
  28. VG Name
  29. PV Size 20.00 GiB
  30. Allocatable NO
  31. PE Size
  32. Total PE
  33. Free PE
  34. Allocated PE
  35. PV UUID mzTDJw-Ak2N-CzDD-eEcO-bczl-wA0r-44LHqd

创建VG卷组:

  1. [root@serve1 ~]# vgcreate vg1 /dev/sd[b-c]
  2. Volume group "vg1" successfully created
  3.  
  4. [root@serve1 ~]# vgs
  5. VG #PV #LV #SN Attr VSize VFree
  6. cl wz--n- <.00g
  7. vg1 wz--n- .99g .99g
  8. [root@serve1 ~]# vgdisplay
  9. --- Volume group ---
  10. VG Name vg1
  11. System ID
  12. Format lvm2
  13. Metadata Areas
  14. Metadata Sequence No
  15. VG Access read/write
  16. VG Status resizable
  17. MAX LV
  18. Cur LV
  19. Open LV
  20. Max PV
  21. Cur PV
  22. Act PV
  23. VG Size 39.99 GiB
  24. PE Size 4.00 MiB
  25. Total PE
  26. Alloc PE / Size /
  27. Free PE / Size / 39.99 GiB
  28. VG UUID xfNGUD-pYdS-eUI9-5Y0u-Ulqx-rwWW-EI5gso
  29.  
  30. --- Volume group ---
  31. VG Name cl
  32. System ID
  33. Format lvm2
  34. Metadata Areas
  35. Metadata Sequence No
  36. VG Access read/write
  37. VG Status resizable
  38. MAX LV
  39. Cur LV
  40. Open LV
  41. Max PV
  42. Cur PV
  43. Act PV
  44. VG Size <19.00 GiB
  45. PE Size 4.00 MiB
  46. Total PE
  47. Alloc PE / Size / <19.00 GiB
  48. Free PE / Size /
  49. VG UUID cxM7kS-b357-Y4MX-439j-EkVT-3X4l-5tTZp1

说明:vg1指的是卷组名称,/dev/[b-c]是卷组中的设备

创建LV逻辑卷(这里我创建了2个LV逻辑卷):

  1. [root@serve1 ~]# lvcreate -L 25G -n lv1 vg1 #创建LV逻辑卷
  2. Logical volume "lv1" created.
  3.  
  4. [root@serve1 ~]# lvs
  5. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  6. root cl -wi-ao---- <.00g
  7. swap cl -wi-ao---- .00g
  8. lv1 vg1 -wi-a----- .00g
  9.  
  10. [root@serve1 ~]# lvdisplay
  11. --- Logical volume ---
  12. LV Path /dev/vg1/lv1
  13. LV Name lv1
  14. VG Name vg1
  15. LV UUID PDVaXp-eih9-ogif-PvBu-Mve2-nCUf-086A8o
  16. LV Write Access read/write
  17. LV Creation host, time serve1, -- :: +
  18. LV Status available
  19. # open
  20. LV Size 25.00 GiB
  21. Current LE
  22. Segments
  23. Allocation inherit
  24. Read ahead sectors auto
  25. - currently set to
  26. Block device :
  27.  
  28. --- Logical volume ---
  29. LV Path /dev/cl/swap
  30. LV Name swap
  31. VG Name cl
  32. LV UUID fjdF4f-JxFB-gtEh-7k4C-74BC-odR2-wIL6Sy
  33. LV Write Access read/write
  34. LV Creation host, time serve1, -- :: +
  35. LV Status available
  36. # open
  37. LV Size 2.00 GiB
  38. Current LE
  39. Segments
  40. Allocation inherit
  41. Read ahead sectors auto
  42. - currently set to
  43. Block device :
  44.  
  45. --- Logical volume ---
  46. LV Path /dev/cl/root
  47. LV Name root
  48. VG Name cl
  49. LV UUID OddHW1-lehU-NcYT-uO19-nD7y-kdSx-PO3ZW0
  50. LV Write Access read/write
  51. LV Creation host, time serve1, -- :: +
  52. LV Status available
  53. # open
  54. LV Size <17.00 GiB
  55. Current LE
  56. Segments
  57. Allocation inherit
  58. Read ahead sectors auto
  59. - currently set to
  60. Block device :

明:-L:指定逻辑卷的大小,单位为"kKmMgGtT"字节; -n:指定逻辑卷的名称; vg1是卷组的名称,卷组的名称要和上面创建的卷组名称一致。

  1. [root@serve1 ~]# lvcreate -l +%FREE -n lv2 vg1
  2. Logical volume "lv2" created.
  3.  
  4. [root@serve1 ~]# lvs
  5. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  6. root cl -wi-ao---- <.00g
  7. swap cl -wi-ao---- .00g
  8. lv1 vg1 -wi-a----- .00g
  9. lv2 vg1 -wi-a----- .99g
  10.  
  11. [root@serve1 ~]# lvdisplay
  12. --- Logical volume ---
  13. LV Path /dev/vg1/lv1
  14. LV Name lv1
  15. VG Name vg1
  16. LV UUID PDVaXp-eih9-ogif-PvBu-Mve2-nCUf-086A8o
  17. LV Write Access read/write
  18. LV Creation host, time serve1, -- :: +
  19. LV Status available
  20. # open
  21. LV Size 25.00 GiB
  22. Current LE
  23. Segments
  24. Allocation inherit
  25. Read ahead sectors auto
  26. - currently set to
  27. Block device :
  28.  
  29. --- Logical volume ---
  30. LV Path /dev/vg1/lv2
  31. LV Name lv2
  32. VG Name vg1
  33. LV UUID DSymjV-ExDB-wTSR-6lns-Swjz-ZzP5-Ywf0xA
  34. LV Write Access read/write
  35. LV Creation host, time serve1, -- :: +
  36. LV Status available
  37. # open
  38. LV Size 14.99 GiB
  39. Current LE
  40. Segments
  41. Allocation inherit
  42. Read ahead sectors auto
  43. - currently set to
  44. Block device :
  45.  
  46. --- Logical volume ---
  47. LV Path /dev/cl/swap
  48. LV Name swap
  49. VG Name cl
  50. LV UUID fjdF4f-JxFB-gtEh-7k4C-74BC-odR2-wIL6Sy
  51. LV Write Access read/write
  52. LV Creation host, time serve1, -- :: +
  53. LV Status available
  54. # open
  55. LV Size 2.00 GiB
  56. Current LE
  57. Segments
  58. Allocation inherit
  59. Read ahead sectors auto
  60. - currently set to
  61. Block device :
  62.  
  63. --- Logical volume ---
  64. LV Path /dev/cl/root
  65. LV Name root
  66. VG Name cl
  67. LV UUID OddHW1-lehU-NcYT-uO19-nD7y-kdSx-PO3ZW0
  68. LV Write Access read/write
  69. LV Creation host, time serve1, -- :: +
  70. LV Status available
  71. # open
  72. LV Size <17.00 GiB
  73. Current LE
  74. Segments
  75. Allocation inherit
  76. Read ahead sectors auto
  77. - currently set to
  78. Block device :

说明:-l:指定逻辑卷的大小(LE数)

创建挂载目录、格式化挂载并写入文件测试:

  1. #格式化LV逻辑卷
  2. [root@serve1 ~]# mkfs.xfs /dev/vg1/lv1
  3. meta-data=/dev/vg1/lv1 isize= agcount=, agsize= blks
  4. = sectsz= attr=, projid32bit=
  5. = crc= finobt=, sparse=
  6. data = bsize= blocks=, imaxpct=
  7. = sunit= swidth= blks
  8. naming =version bsize= ascii-ci= ftype=
  9. log =internal log bsize= blocks=, version=
  10. = sectsz= sunit= blks, lazy-count=
  11. realtime =none extsz= blocks=, rtextents=
  12.  
  13. [root@serve1 ~]# mkfs.xfs /dev/vg1/lv2
  14. meta-data=/dev/vg1/lv2 isize= agcount=, agsize= blks
  15. = sectsz= attr=, projid32bit=
  16. = crc= finobt=, sparse=
  17. data = bsize= blocks=, imaxpct=
  18. = sunit= swidth= blks
  19. naming =version bsize= ascii-ci= ftype=
  20. log =internal log bsize= blocks=, version=
  21. = sectsz= sunit= blks, lazy-count=
  22. realtime =none extsz= blocks=, rtextents=
  23.  
  24. #挂载逻辑卷
  25. [root@serve1 ~]# mount /dev/vg1/lv1 /web
  26. [root@serve1 ~]# mount /dev/vg1/lv2 /data
  27.  
  28. [root@serve1 ~]# df -hT
  29. 文件系统 类型 容量 已用 可用 已用% 挂载点
  30. /dev/mapper/cl-root xfs 17G .3G 13G % /
  31. devtmpfs devtmpfs .9G .9G % /dev
  32. tmpfs tmpfs .9G .9G % /dev/shm
  33. tmpfs tmpfs .9G 9.1M .9G % /run
  34. tmpfs tmpfs .9G .9G % /sys/fs/cgroup
  35. /dev/sda1 xfs 1014M 238M 777M % /boot
  36. tmpfs tmpfs 378M 12K 378M % /run/user/
  37. tmpfs tmpfs 378M 378M % /run/user/
  38. /dev/mapper/vg1-lv1 xfs 25G 33M 25G % /web
  39. /dev/mapper/vg1-lv2 xfs 15G 33M 15G % /data
  40.  
  41. [root@serve1 ~]# echo /dev/mapper/vg1-lv1 /web xfs defaults >>/etc/fstab
  42. [root@serve1 ~]# echo /dev/mapper/vg1-lv2 /date xfs defaults >>/etc/fstab
  43.  
  44. [root@serve1 ~]# cat /etc/fstab
  45.  
  46. #
  47. # /etc/fstab
  48. # Created by anaconda on Wed Sep ::
  49. #
  50. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  51. # See man pages fstab(), findfs(), mount() and/or blkid() for more info
  52. #
  53. /dev/mapper/cl-root / xfs defaults
  54. UUID=4318c13a-c39b-484d-aaa0-ce6331eddc30 /boot xfs defaults
  55. /dev/mapper/cl-swap swap swap defaults
  56. /dev/mapper/vg1-lv1 /web xfs defaults
  57. /dev/mapper/vg1-lv2 /date xfs defaults

说明:centos7支持xfs和etx4类型的文件系统,centos6不支持xfs类型的文件系统。

卸载删除LVM

思路:删除LVM的步骤和创建LVM的步骤是相反的。先删除LV逻辑卷,再删除VG卷组,最后删除PV物理卷

  1. [root@serve1 ~]# lvremove /dev/vg1/lv1
  2. Do you really want to remove active logical volume vg1/lv1? [y/n]: y
  3. Logical volume "lv1" successfully removed
  4. [root@serve1 ~]# lvs
  5. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  6. root cl -wi-ao---- <.00g
  7. swap cl -wi-ao---- .00g
  8.  
  9. #删除VG1卷组
  10. [root@serve1 ~]# vgremove vg1
  11. Volume group "vg1" successfully removed
  12.  
  13. #查看VG卷组状态
  14. [root@serve1 ~]# vgs
  15. VG #PV #LV #SN Attr VSize VFree
  16. cl wz--n- <.00g
  17.  
  18. #删除sd[b-c]物理卷
  19. [root@serve1 ~]# pvremove /dev/sd[b-c]
  20. Labels on physical volume "/dev/sdb" successfully wiped.
  21. Labels on physical volume "/dev/sdc" successfully wiped.
  22.  
  23. #查看PV物理卷状态
  24. [root@serve1 ~]# pvs
  25. PV VG Fmt Attr PSize PFree
  26. /dev/sda2 cl lvm2 a-- <.00g
  27.  
  28. #最后注释或删掉/etc/fstab里面逻辑卷的挂载信息。

centos下LVM配置与管理的更多相关文章

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

    1.LVM逻辑卷管理技术产生的背景 企业日益变化的存储需要使得传统的磁盘分区存储显得不够灵活 2.磁盘分区存储 对于这样的三个物理分区的话,迟早有一天会被数据填满,因为它是死的,无法进行缩放. 假设下 ...

  2. (转)CentOS下开机启动查看管理命令:chkconfig用法

    CentOS下开机启动查看管理命令:chkconfig用法   CentOS下开机启动查看管理的命令是:chkconfig   1. 开机启动列表查看: chkconfig --list     说明 ...

  3. CentOS下Apache配置多域名或者多端口映射

    CentOS下Apache默认网站根目录为/var/www/html,假如我默认存了一个CI项目在html文件夹里,同时服务器的外网IP为ExampleIp,因为使用的是MVC框架,Apache需开启 ...

  4. Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)

    Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)   关于LAMP的各种知识,还请大家自行百度谷歌,在这里就不详细的介绍了,今天主要是介绍一下在Centos下安装,搭建一 ...

  5. 阿里云服务器centos下安装配置svn服务器

      阿里云服务器centos下安装配置svn服务器 1.安装svn服务器端yum install subversion      从镜像下载安装svn服务器端中间会提示是否ok,输入y,确认安装成功提 ...

  6. linux centOS下怎么配置web服务器

    | 浏览:4503 | 更新:2011-12-07 17:45 1 2 3 分步阅读 下是我在配置web服务时作的一些记录,高手飘开或者看了指点一下,不胜感激,第一次配置,很多细节需要自己优化.适合环 ...

  7. CentOS下安装配置Cacti

    cacti简介 随着公司规模扩大,服务器也日渐增多,对服务器集群的网络流量和服务器性能实时监测显得愈发重要.开源阵营中常用有MRTG(MultiRouter Traffic Grapher)--基于S ...

  8. 在centos 下安装配置基于gitosis 的git 服务

    前言 这里我用的系统是centos 6.2, 在服务器上的准备工作(服务器IP为10.0.2.8 ): 1.安装 openssh服务器与客户端工具 $ sudo yum install openssh ...

  9. 在CentOS下安装配置MySQL(转)

    今天刚把项目做完,需要马上部署到新到的测试服务器上,于是乎,要在服务器上安装环境,由于好久在linux上部署了,手有些生,比较费劲装完,现在把重要步骤贴出,供自己以后参照.1.首先要看看有没有已经安装 ...

随机推荐

  1. PHP中的header()函数

    PHP header 函数的用法及其注意事项 void header ( string $string [, bool $replace = true [, int $http_response_co ...

  2. 利用自定义特性实现List的多属性排序

    知道linq有order by的功能,但是还是动手研究了一下,算是多实践实践反射.这篇算是笔记,直接上代码: using System; using System.Collections.Concur ...

  3. url长度

    今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的.URL中列出了所有参与该操作的Ticket Id.于是,我想起GET请求是有 ...

  4. python随笔--根据号码查询归属地

    给定一组(串)数据,根据输入得号码,查询归属地 def num_info(num): info0 = """5583|1860100|010|北京市|北京联通GSM卡 5 ...

  5. JQ的事件绑定

    一.事件的绑定:可以添加多个同类事件 $("").click(function(){ }) $("").on(事件名,函数) $("").o ...

  6. CSS3伪类使用方法实例

    有时候在网页设计中会涉及到很多看上去很繁琐的设计图,这时候都会很让人头疼,那么这时候伪类就可以来帮助你解决问题了. 下面有一段实例大家可以参考一下: <!DOCTYPE html> < ...

  7. Android 仿微信朋友圈拍小视频上传到服务器

    这个接上一个写的实现拍小视频和传到服务器的  界面是这个样子滴. 我也知不知道怎么给图片搞小一点o(╯□╰)o 布局文件是这样的[认真脸] <?xml version="1.0&quo ...

  8. ios两个app之间跳转,传值的实现

    两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...

  9. 【微软大法好】VS Tools for AI全攻略(4)——选择适合自己的虚拟机

    当我们选择好了自己的虚拟机后,也许效果不尽如人意.就比如我,发现代码在训练一段时间之后,CPU的使用率会下降. 这个时候我们就要开始考虑,是不是我们选择的虚拟机不是适合自己的型号. Azure的虚拟机 ...

  10. 51Nod 1600 Simple KMP SAM+LCT/树链剖分

    1600 Simple KMP 对于一个字符串|S|,我们定义fail[i],表示最大的x使得S[1..x]=S[i-x+1..i],满足(x<i)显然对于一个字符串,如果我们将每个0<= ...