立即注册 找回密码

QQ登录

只需一步,快速开始

第一站长论坛

搜索
60金币/天 购买
30金币/天 购买
30金币/天 购买
30金币/天 购买
30金币/天 购买

小喇叭+ 发布

02-23 17:43
02-16 11:07
02-16 11:05
02-16 11:03
查看: 81|回复: 0

Linux磁盘管理之LVM的使用

[复制链接]
发表于 2020-1-29 10:54 | 显示全部楼层 |阅读模式
一、LVM介绍
在我们管理Linux磁盘的时候,通常会遇到这么一种情况。在最初规划Linux的磁盘的时候,我们给某个分区划分了一定量的磁盘空间,使用一段时间后,发现我们规划的磁盘空间不敷了,这个时候怎么办?我们肯定要想办法给扩容呀,找一块磁盘分区,格式化,然后挂载,然后把数据拷贝到新加的磁盘上,然后把原有的磁盘卸载掉,通常我们是这样做的。这样一来虽然达到了扩容的目的,但是费时费力;如果第二次扩容,空间还是不够,我们又要重复上面的步调;如果分配的磁盘空间过大,使用了很久才发现它根本用不到那么多空间,这个时候是不是又要调整呀,听着就感觉很繁琐。这时候你肯定要想有没有那种可挂载上一块盘,我们利用某种管理本领,可以在线的调整磁盘的空间,这样有节约了时间,也可实现弹性管理磁盘。对,lvm就有这样的功能。
LVM(logical volume manager)逻辑卷管理,它可以弹性的管理文件系统的容量,LVM的工作原理是将一个或多个底层块设备组织成一个逻辑设备,这个逻辑设备可以在未来新增或移除其他的分区到这个逻辑设备中,从而实现了弹性管理磁盘。


PV:物理卷(physical volume);物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如raid),是LVM的基本储存逻辑块,但和基本的物理存储介质(如分区,磁盘等)比较,却包含有与LVM相关的管理参数
VG:卷组(volume group)LVM卷组类似于非LVM系统中的物理硬盘,尤其物理卷组成,可以在卷组上创建一个或多个LVM分区(逻辑卷),LVM卷组由一个或多个物理卷组成
LV:逻辑卷(logical volume)LVM的逻辑卷类似非LVM系统中的硬盘分区,在逻辑卷之上可以创建文件系统。
LVM就是将一些零碎的磁盘分区(PV)归并成一个较大的磁盘(VG),然后在根据需要对这个较大的磁盘(VG)进行划分成不同的大小分区(LV),这些小的分区(LV)是可以动态的扩展和缩小的,这就是LVM的逻辑卷管理过程。所谓LVM的大磁盘就是将许多PV整合成的VG,那么这个大磁盘最大可达到多少容量呢?我们知道在文件系统内里数据存储的最小单位是块(block),不过在LVM当中数据储存的最小单位是PE,PE的的作用同block的作用一样,需要注意到是LVM默认使用的PE大小是4M,而LVM的VG最多能包含65534个PE,也就是说默认LVM的VG会有4×65534M/1024M=256G,所以PE的大小决定了VG的最大容量,当然我们在创建VG的时候可指定PE大小,从而来决定VG的大小。
二、LVM实现
1)前期准备几块硬盘或者分区来模拟PV
  1. [root@test-centos7-node1 ~]# lsblkNAME  MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda   8:0  0  50G 0 disk ├─sda1  8:1  0  2G 0 part /boot├─sda2  8:2  0  2G 0 part [SWAP]└─sda3  8:3  0  46G 0 part /sdb   8:16  0  50G 0 disk sr0   11:0  1 792M 0 rom [root@test-centos7-node1 ~]# fdisk /dev/sdbWelcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.Device does not contain a recognized partition tableBuilding a new DOS disklabel with disk identifier 0x6180123f.Command (m for help): pDisk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x6180123f  Device Boot   Start     End   Blocks  Id SystemCommand (m for help): nPartition type:  p  primary (0 primary, 0 extended, 4 free)  e  extendedSelect (default p): pPartition number (1-4, default 1): First sector (2048-104857599, default 2048): Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): +10GPartition 1 of type Linux and of size 10 GiB is setCommand (m for help): pDisk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x6180123f  Device Boot   Start     End   Blocks  Id System/dev/sdb1      2048  20973567  10485760  83 LinuxCommand (m for help): tSelected partition 1Hex code (type L to list all codes): 8eChanged type of partition 'Linux' to 'Linux LVM'Command (m for help): nPartition type:  p  primary (1 primary, 0 extended, 3 free)  e  extendedSelect (default p): pPartition number (2-4, default 2): First sector (20973568-104857599, default 20973568): Using default value 20973568Last sector, +sectors or +size{K,M,G} (20973568-104857599, default 104857599): +10GPartition 2 of type Linux and of size 10 GiB is setCommand (m for help): tPartition number (1,2, default 2): Hex code (type L to list all codes): 8eChanged type of partition 'Linux' to 'Linux LVM'Command (m for help): nPartition type:  p  primary (2 primary, 0 extended, 2 free)  e  extendedSelect (default p): pPartition number (3,4, default 3): First sector (41945088-104857599, default 41945088): Using default value 41945088Last sector, +sectors or +size{K,M,G} (41945088-104857599, default 104857599): +10GPartition 3 of type Linux and of size 10 GiB is setCommand (m for help): tPartition number (1-3, default 3): Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM'Command (m for help): pDisk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x6180123f  Device Boot   Start     End   Blocks  Id System/dev/sdb1      2048  20973567  10485760  8e Linux LVM/dev/sdb2    20973568  41945087  10485760  8e Linux LVM/dev/sdb3    41945088  62916607  10485760  8e Linux LVMCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@test-centos7-node1 ~]# lsblkNAME  MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda   8:0  0  50G 0 disk ├─sda1  8:1  0  2G 0 part /boot├─sda2  8:2  0  2G 0 part [SWAP]└─sda3  8:3  0  46G 0 part /sdb   8:16  0  50G 0 disk ├─sdb1  8:17  0  10G 0 part ├─sdb2  8:18  0  10G 0 part └─sdb3  8:19  0  10G 0 part sr0   11:0  1 792M 0 rom [root@test-centos7-node1 ~]#
复制代码
说明:这里是用的分区来模拟硬盘当作PV,这里需要注意一点,就是我们分区完保存后,可能存在不同不到问题,就是我们分区完用lsblk看不到分区,可用 partprobe来同步分区信息。centos6 使用partx  -a /dev/sdb来增加分区同步到内存,如果是删除某个分区,就需要执行partx -d -nr # /dev/sdb  此命令表示从/dev/sdb的分区信息中删除sdb#分区信息,并同步到内存中。这里还需要注意一点的是我们分区的类型要选8e 表示Linux LVM
2)装lvm2这个包
  1. [root@test-centos7-node1 ~]# lvs-bash: lvs: command not found[root@test-centos7-node1 ~]# yum info lvm2 Loaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.comAvailable PackagesName    : lvm2Arch    : x86_64Epoch    : 7Version   : 2.02.185Release   : 2.el7_7.2Size    : 1.3 MRepo    : updates/7/x86_64Summary   : Userland logical volume management toolsURL     : http://sources.redhat.com/lvm2License   : GPLv2Description : LVM2 includes all of the support for handling read/write operations on      : physical volumes (hard disks, RAID-Systems, magneto optical, etc.,      : multiple devices (MD), see mdadm(8) or even loop devices, see      : losetup(8)), creating volume groups (kind of virtual disks) from one      : or more physical volumes and creating one or more logical volumes      : (kind of logical partitions) in volume groups.[root@test-centos7-node1 ~]# yum install lvm2 -yLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.comResolving Dependencies--> Running transaction check---> Package lvm2.x86_64 7:2.02.185-2.el7_7.2 will be installed--> Processing Dependency: lvm2-libs = 7:2.02.185-2.el7_7.2 for package: 7:lvm2-2.02.185-2.el7_7.2.x86_64--> Processing Dependency: device-mapper-persistent-data >= 0.7.0-0.1.rc6 for package: 7:lvm2-2.02.185-2.el7_7.2.x86_64--> Processing Dependency: liblvm2app.so.2.2(Base)(64bit) for package: 7:lvm2-2.02.185-2.el7_7.2.x86_64--> Processing Dependency: libdevmapper.so.1.02(DM_1_02_141)(64bit) for package: 7:lvm2-2.02.185-2.el7_7.2.x86_64--> Processing Dependency: libdevmapper-event.so.1.02(Base)(64bit) for package: 7:lvm2-2.02.185-2.el7_7.2.x86_64--> Processing Dependency: liblvm2app.so.2.2()(64bit) for package: 7:lvm2-2.02.185-2.el7_7.2.x86_64--> Processing Dependency: libdevmapper-event.so.1.02()(64bit) for package: 7:lvm2-2.02.185-2.el7_7.2.x86_64--> Running transaction check---> Package device-mapper-event-libs.x86_64 7:1.02.158-2.el7_7.2 will be installed---> Package device-mapper-libs.x86_64 7:1.02.140-8.el7 will be updated--> Processing Dependency: device-mapper-libs = 7:1.02.140-8.el7 for package: 7:device-mapper-1.02.140-8.el7.x86_64---> Package device-mapper-libs.x86_64 7:1.02.158-2.el7_7.2 will be an update---> Package device-mapper-persistent-data.x86_64 0:0.8.5-1.el7 will be installed---> Package lvm2-libs.x86_64 7:2.02.185-2.el7_7.2 will be installed--> Processing Dependency: device-mapper-event = 7:1.02.158-2.el7_7.2 for package: 7:lvm2-libs-2.02.185-2.el7_7.2.x86_64--> Running transaction check---> Package device-mapper.x86_64 7:1.02.140-8.el7 will be updated---> Package device-mapper.x86_64 7:1.02.158-2.el7_7.2 will be an update---> Package device-mapper-event.x86_64 7:1.02.158-2.el7_7.2 will be installed--> Finished Dependency ResolutionDependencies Resolved============================================================================================================================ Package                  Arch        Version               Repository      Size============================================================================================================================Installing: lvm2                   x86_64       7:2.02.185-2.el7_7.2        updates       1.3 MInstalling for dependencies: device-mapper-event            x86_64       7:1.02.158-2.el7_7.2        updates       190 k device-mapper-event-libs         x86_64       7:1.02.158-2.el7_7.2        updates       189 k device-mapper-persistent-data       x86_64       0.8.5-1.el7             base        423 k lvm2-libs                 x86_64       7:2.02.185-2.el7_7.2        updates       1.1 MUpdating for dependencies: device-mapper               x86_64       7:1.02.158-2.el7_7.2        updates       294 k device-mapper-libs            x86_64       7:1.02.158-2.el7_7.2        updates       322 kTransaction Summary============================================================================================================================Install 1 Package (+4 Dependent packages)Upgrade       ( 2 Dependent packages)Total download size: 3.8 MDownloading packages:Delta RPMs disabled because /usr/bin/applydeltarpm not installed.(1/7): device-mapper-event-1.02.158-2.el7_7.2.x86_64.rpm                       | 190 kB 00:00:00   (2/7): device-mapper-event-libs-1.02.158-2.el7_7.2.x86_64.rpm                    | 189 kB 00:00:00   (3/7): device-mapper-libs-1.02.158-2.el7_7.2.x86_64.rpm                       | 322 kB 00:00:00   (4/7): lvm2-2.02.185-2.el7_7.2.x86_64.rpm                              | 1.3 MB 00:00:00   (5/7): device-mapper-1.02.158-2.el7_7.2.x86_64.rpm                          | 294 kB 00:00:00   (6/7): lvm2-libs-2.02.185-2.el7_7.2.x86_64.rpm                            | 1.1 MB 00:00:00   (7/7): device-mapper-persistent-data-0.8.5-1.el7.x86_64.rpm                     | 423 kB 00:00:00   ----------------------------------------------------------------------------------------------------------------------------Total                                            4.3 MB/s | 3.8 MB 00:00:00   Running transaction checkRunning transaction testTransaction test succeededRunning transaction Updating  : 7:device-mapper-1.02.158-2.el7_7.2.x86_64                                1/9  Updating  : 7:device-mapper-libs-1.02.158-2.el7_7.2.x86_64                              2/9  Installing : 7:device-mapper-event-libs-1.02.158-2.el7_7.2.x86_64                           3/9  Installing : 7:device-mapper-event-1.02.158-2.el7_7.2.x86_64                             4/9  Installing : 7:lvm2-libs-2.02.185-2.el7_7.2.x86_64                                  5/9  Installing : device-mapper-persistent-data-0.8.5-1.el7.x86_64                             6/9  Installing : 7:lvm2-2.02.185-2.el7_7.2.x86_64                                     7/9 Created symlink from /etc/systemd/system/sysinit.target.wants/lvm2-lvmpolld.socket to /usr/lib/systemd/system/lvm2-lvmpolld.socket. Cleanup  : 7:device-mapper-1.02.140-8.el7.x86_64                                  8/9  Cleanup  : 7:device-mapper-libs-1.02.140-8.el7.x86_64                                9/9  Verifying : 7:device-mapper-libs-1.02.158-2.el7_7.2.x86_64                              1/9  Verifying : 7:device-mapper-1.02.158-2.el7_7.2.x86_64                                2/9  Verifying : device-mapper-persistent-data-0.8.5-1.el7.x86_64                             3/9  Verifying : 7:lvm2-2.02.185-2.el7_7.2.x86_64                                     4/9  Verifying : 7:lvm2-libs-2.02.185-2.el7_7.2.x86_64                                  5/9  Verifying : 7:device-mapper-event-1.02.158-2.el7_7.2.x86_64                             6/9  Verifying : 7:device-mapper-event-libs-1.02.158-2.el7_7.2.x86_64                           7/9  Verifying : 7:device-mapper-1.02.140-8.el7.x86_64                                  8/9  Verifying : 7:device-mapper-libs-1.02.140-8.el7.x86_64                                9/9Installed: lvm2.x86_64 7:2.02.185-2.el7_7.2                                             Dependency Installed: device-mapper-event.x86_64 7:1.02.158-2.el7_7.2       device-mapper-event-libs.x86_64 7:1.02.158-2.el7_7.2      device-mapper-persistent-data.x86_64 0:0.8.5-1.el7     lvm2-libs.x86_64 7:2.02.185-2.el7_7.2            Dependency Updated: device-mapper.x86_64 7:1.02.158-2.el7_7.2         device-mapper-libs.x86_64 7:1.02.158-2.el7_7.2        Complete![root@test-centos7-node1 ~]#
复制代码
说明:最小化安装系统默认系统上没有安装这个包的,所以我们需要把这个包装上才可创建LVM
3)创建PV
  1. [root@test-centos7-node1 ~]# pvcreate /dev/sdb{1,2,3} Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. Physical volume "/dev/sdb3" successfully created.[root@test-centos7-node1 ~]# pvscan  PV /dev/sdb1           lvm2 [10.00 GiB] PV /dev/sdb3           lvm2 [10.00 GiB] PV /dev/sdb2           lvm2 [10.00 GiB] Total: 3 [30.00 GiB] / in use: 0 [0  ] / in no VG: 3 [30.00 GiB][root@test-centos7-node1 ~]# pvs PV     VG Fmt Attr PSize PFree  /dev/sdb1   lvm2 --- 10.00g 10.00g /dev/sdb2   lvm2 --- 10.00g 10.00g /dev/sdb3   lvm2 --- 10.00g 10.00g[root@test-centos7-node1 ~]# pvdisplay  "/dev/sdb1" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name        /dev/sdb1 VG Name         PV Size        10.00 GiB Allocatable      NO PE Size        0   Total PE       0 Free PE        0 Allocated PE     0 PV UUID        MsszES-YPdm-YGQl-7rgg-B6gX-Q4xu-T8m1gz   "/dev/sdb3" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name        /dev/sdb3 VG Name         PV Size        10.00 GiB Allocatable      NO PE Size        0   Total PE       0 Free PE        0 Allocated PE     0 PV UUID        BMMx8p-zu9O-ns61-G9DU-iKMR-NmZO-crCjlR   "/dev/sdb2" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name        /dev/sdb2 VG Name         PV Size        10.00 GiB Allocatable      NO PE Size        0   Total PE       0 Free PE        0 Allocated PE     0 PV UUID        LPynpW-twlu-fxwg-OlCT-jA2A-R5UI-fvqWLj  [root@test-centos7-node1 ~]#
复制代码
说明:pvcreate 命令表示创建PV 后面跟硬盘或分区对应的设备文件,pvscan 命令作用是搜索系统内里任何具有PV属性的磁碟,PV属性就是通过pvcreate创建过的磁碟,pvs是查看pv简要情况,pvdisplay 查看pv的详细信息。当然我们要移除某块盘,让其不具备PV属性,可以用pvremove + 磁盘的设备文件路径
  1. [root@test-centos7-node1 ~]# pvremove /dev/sdb3 Labels on physical volume "/dev/sdb3" successfully wiped.[root@test-centos7-node1 ~]# pvs PV     VG Fmt Attr PSize PFree  /dev/sdb1   lvm2 --- 10.00g 10.00g /dev/sdb2   lvm2 --- 10.00g 10.00g[root@test-centos7-node1 ~]#
复制代码
说明:移除pv的条件是它没有在任何VG内里才可做移除,否则移除不了
4)创建VG
[code][root@test-centos7-node1 ~]# pvs PV     VG Fmt Attr PSize PFree  /dev/sdb1   lvm2 --- 10.00g 10.00g /dev/sdb2   lvm2 --- 10.00g 10.00g[root@test-centos7-node1 ~]# pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created.[root@test-centos7-node1 ~]# pvs PV     VG Fmt Attr PSize PFree  /dev/sdb1   lvm2 --- 10.00g 10.00g /dev/sdb2   lvm2 --- 10.00g 10.00g /dev/sdb3   lvm2 --- 10.00g 10.00g[root@test-centos7-node1 ~]# vgcreate test -s 8M /dev/sdb{1,2,3} Volume group "test" successfully created[root@test-centos7-node1 ~]# vgs VG  #PV #LV #SN Attr  VSize  VFree  test  3  0  0 wz--n-

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|第一站长论坛 ( 闽ICP备16019670号-2 )

GMT+8, 2020-6-3 13:19 , Processed in 0.140001 second(s), 35 queries .

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc & Style Design

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