初始化磁盘-Linux系统LVM逻辑卷管理

生活百科10个月前发布 aixure
65 0 0

↓↓↓↓↓

逻辑卷管理(Logical Volume Management,简称LVM)是一种在Linux系统上管理磁盘存储的技术,它允许用户将多个物理硬盘上的存储空间组合成逻辑卷,并在需要时对其进行动态管理。LVM提供了灵活性、可扩展性和数据保护性,使得存储管理更加方便和高效。

LVM基于几个核心概念:

物理卷(Physical Volume,简称PV):物理卷是磁盘或磁盘分区,可以被LVM管理。它可以是整个磁盘,也可以是磁盘的一个分区。

卷组(Volume Group,简称VG):卷组是由一个或多个物理卷组成的存储池。它将物理卷组合在一起,提供了一个集中管理和分配存储空间的单元。

逻辑卷(Logical Volume,简称LV):逻辑卷是从卷组中分配出来的独立的存储区域,类似于传统硬盘上的分区。逻辑卷可以按需调整大小,并且可以扩展到跨越多个物理卷。

初始化磁盘-Linux系统LVM逻辑卷管理

物理卷处于LVM的最底层,它们可以是实际物理硬盘上的分区或整个物理硬盘或RAID设备。卷组建立在物理卷之上,卷组建立之后便可动态添加物理卷到卷组中。逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后便可动态地扩展或缩小空间。

与基本分区相比,逻辑卷最大的优势是可以进行扩容与数据迁移,并且所有操作都是在线的,即不需要卸载文件系统。

1、创建物理卷

pvcreate命令用于将物理设备(如硬盘或分区)标记为LVM物理卷,使其可以被逻辑卷管理器(LVM)使用。以下是pvcreate命令常用的参数:

-f:强制执行操作,即使设备已经被标记为LVM物理卷。

-y:自动回答“是”对所有提示,默认为“否”。

-v:显示详细的操作过程和信息。

-d:禁用LVM写入设备的元数据。

-ff:强制执行操作,并删除任何可能存在的旧的LVM元数据。

-M 2:指定元数据备份级别,其中1表示单个备份,2表示多个备份(默认为2)。

-n:不要创建物理卷。

下面通过pvcreate将一个磁盘初始化为物理卷

#查看当前可用磁盘[root@localhost ~]# lsblkNAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda               8:0    0   20G  0 disk ├─sda1            8:1    0    1G  0 part /boot└─sda2            8:2    0   19G  0 part   ├─centos-root 253:0    0   17G  0 lvm  /  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]sdb               8:16   0   20G  0 disk sr0              11:0    1  4.3G  0 rom  /run/media/root/CentOS 7 x86_64#将可用磁盘初始化为物理卷[root@localhost ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.

物理卷创建成功之后,可以通过pvscan命令查看创建结果

[root@localhost ~]# pvscan  PV /dev/sda2   VG centos          lvm2 [<19.00 GiB / 0    free]  PV /dev/sdb                       lvm2 [20.00 GiB]  Total: 2 [<39.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [20.00 GiB]

2、创建卷组

vgcreate命令用于创建LVM卷组(Volume Group),将多个物理卷(Physical Volumes)组合在一起形成逻辑卷管理器(LVM)的逻辑卷组。以下是vgcreate命令常用的参数:

-v:显示详细的操作过程和信息。

-s PE_SIZE:指定物理区块(Physical Extent)的大小。默认情况下,PE大小为4MB。

-c:启用磁盘扫描和磁盘上的校验和功能。

-f:强制执行操作,即使卷组名称已经存在。

-A y/n:设置是否自动激活卷组(自动激活将在系统启动时自动激活卷组)。

-M 2:指定元数据备份级别,其中1表示单个备份,2表示多个备份(默认为2)。

-p PE_START:PE是卷组中的储存单位初始化磁盘,默认大小为4MB。

下面通过vgcreate将物理卷整合为卷组

[root@localhost ~]# vgcreate datavg /dev/sdb  Volume group "datavg" successfully created

3、查看卷组

pvscan命令用于扫描系统中的物理卷(Physical Volumes)并显示它们的信息。以下是pvscan命令常用的参数:

-d:禁用磁盘扫描,只显示已知的物理卷。

-h:显示帮助信息,列出pvscan命令的参数选项和用法。

-i:显示物理卷的详细信息,包括物理卷名称、卷组名称、物理卷大小、物理卷的UUID等。

-v:显示详细的操作过程和信息。

-s:显示扫描磁盘的摘要信息,包括扫描的磁盘数、扫描到的物理卷数等。

-a:扫描所有可用的物理卷,包括未激活的物理卷。

卷组创建完成之后,可以通过pvscan命令查看创建结果

[root@localhost ~]# pvscan  PV /dev/sda2   VG centos          lvm2 [<19.00 GiB / 0    free]  PV /dev/sdb    VG datavg          lvm2 [<20.00 GiB / <20.00 GiB free]  Total: 2 [38.99 GiB] / in use: 2 [38.99 GiB] / in no VG: 0 [0   ]

通过pvscan命令只能查看到卷组的大致信息,如需查看卷组的详细信息可以通过vgdisplay命令查看

[root@localhost ~]# vgdisplay datavg  --- Volume group ---  VG Name               datavg  System ID               Format                lvm2  Metadata Areas        1  Metadata Sequence No  3  VG Access             read/write  VG Status             resizable  MAX LV                0  Cur LV                2  Open LV               2  Max PV                0  Cur PV                1  Act PV                1  VG Size               <20.00 GiB  PE Size               4.00 MiB  Total PE              5119  Alloc PE / Size       50 / 200.00 MiB  Free  PE / Size       5069 / 19.80 GiB  VG UUID               gQrVqu-zh0o-P0u7-x0Nu-TMgE-bbcV-puCAgD

4、创建逻辑卷

lvcreate命令用于创建逻辑卷(Logical Volume)。以下是lvcreate命令常用的参数:

-L size:指定逻辑卷的大小。可以使用单位来表示大小,例如M(兆字节)、G(千兆字节)等。

-n name:指定逻辑卷的名称。

-v:显示详细的操作过程和信息。

-y:在创建逻辑卷时不进行确认提示,直接执行。

-i number:指定逻辑卷的副本数。创建有多个副本的逻辑卷时使用。

-I size:指定逻辑卷的镜像区域大小。

-m Mirrors:指定逻辑卷的镜像数。

-c chunk size:指定逻辑卷的块大小。

下面通过lvcreate在卷组中创建出一个逻辑卷。

[root@localhost ~]# lvcreate -L 100M -n lv1 datavg  Logical volume "lv1" created.

上述示例中,在卷组datavg中创建了一个大小为100M,命名为lv1的逻辑卷。其中,-L参数用于指定逻辑卷的大小,若是使用-l参数则需要指定以PE为单位的逻辑卷容量,示例代码如下。

[root@localhost ~]# lvcreate -l 25 -n lv2 datavg  Logical volume "lv2" created.

由于一个PE单位的容量默认为4M,所以此处配置逻辑卷lv2的大小为25个PE单位,也就是100M。

逻辑卷创建完成之后,查看当前逻辑卷

[root@localhost ~]# lvscan  ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit  ACTIVE            '/dev/centos/root' [<17.00 GiB] inherit  ACTIVE            '/dev/datavg/lv1' [100.00 MiB] inherit  ACTIVE            '/dev/datavg/lv2' [100.00 MiB] inherit

5、挂载逻辑卷

在挂载逻辑卷之前,将需要挂载的逻辑卷进行格式化

#将lv1进行ext4格式化[root@localhost ~]# mkfs.ext4 /dev/datavg/lv1mke2fs 1.42.9 (28-Dec-2013)文件系统标签=OS type: Linux块大小=1024 (log=0)分块大小=1024 (log=0)Stride=0 blocks, Stripe width=0 blocks25688 inodes, 102400 blocks5120 blocks (5.00%) reserved for the super user第一个数据块=1Maximum filesystem blocks=3368550413 block groups8192 blocks per group, 8192 fragments per group1976 inodes per groupSuperblock backups stored on blocks:   8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (4096 blocks): 完成Writing superblocks and filesystem accounting information: 完成 #将lv2进行xfs格式化[root@localhost ~]# mkfs.xfs /dev/datavg/lv2meta-data=/dev/datavg/lv2 isize=512 agcount=4, agsize=6400 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0data = bsize=4096 blocks=25600, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log =internal log bsize=4096 blocks=855, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0

在挂载逻辑卷时并不需要UUID,使用设备名称即可,因为逻辑卷的名称不会发生改变。

创建两个挂载点。

[root@localhost ~]# mkdir -p /mnt/lv01 /mnt/lv02

有了挂载点之后,将挂载信息写入到/etc/fstab文件中

[root@localhost ~]# cat /etc/fstab 
## /etc/fstab# Created by anaconda on Wed Apr 8 14:30:29 2020## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/centos-root / xfs defaults 0 0UUID=214c5b00-13fb-46da-b59f-7fef6b85ada3 /boot xfs defaults 0 0/dev/mapper/centos-swap swap swap defaults 0 0/dev/datavg/lv1 /mnt/lv01 ext4 defaults 0 0 /dev/datavg/lv2 /mnt/lv02 nfs defaults 0 0

逻辑卷挂载完成之后,读取配置并查看挂载结果。

[root@localhost ~]# mount -a[root@localhost ~]# df -Th文件系统                类型      容量  已用  可用 已用% 挂载点/dev/mapper/centos-root xfs        17G  5.9G   12G   35% /devtmpfs                devtmpfs  470M     0  470M    0% /devtmpfs                   tmpfs     487M     0  487M    0% /dev/shmtmpfs                   tmpfs     487M  8.6M  478M    2% /runtmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup/dev/sda1               xfs      1014M  166M  849M   17% /boottmpfs                   tmpfs      98M  4.0K   98M    1% /run/user/42tmpfs                   tmpfs      98M   24K   98M    1% /run/user/0/dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64/dev/mapper/datavg-lv1  ext4       93M  1.6M   85M    2% /mnt/lv01/dev/mapper/datavg-lv2  nfs        93M  1.6M   85M    2% /mnt/lv02

此时逻辑卷lv1与lv2已经成功挂载到目录/mnt/lv01与/mnt/lv02中。

6、卷组扩容

当逻辑卷的空间不足时,可以进行扩容,但在扩容逻辑卷之前需要保证卷组具备充足的空间。若是卷组的空间不足,可以先将卷组进行扩容。

将新磁盘初始化为物理卷,并添加到卷组中。

[root@localhost ~]# vgextend datavg /dev/sdc  Physical volume "/dev/sdc" successfully created.  Volume group "datavg" successfully extended

上述示例中,并没有将sdc初始化为物理卷,而是直接将其添加到卷组中,但系统便默认将其初始化为物理卷又将其添加至卷组中。

卷组扩容完成之后,查看卷组中的物理卷。

[root@localhost ~]# pvs  PV         VG     Fmt  Attr PSize   PFree    /dev/sda2  centos lvm2 a--  <19.00g      0   /dev/sdb   datavg lvm2 a--  <20.00g  19.80g  /dev/sdc   datavg lvm2 a--  <20.00g <20.00g

7、逻辑卷扩容

lvextend命令用于扩展逻辑卷(Logical Volume)的大小。以下是lvextend命令常用的参数:

-L size:指定逻辑卷的新大小。可以使用单位来表示大小,例如M(兆字节)、G(千兆字节)等。

-l extents:指定逻辑卷的新大小,以卷组中的扩展数为单位。

-n name:指定逻辑卷的名称。

-v:显示详细的操作过程和信息。

-r:在扩展逻辑卷后自动调整文件系统大小。

将逻辑卷lv1的容量扩容到500M。

[root@localhost ~]# lvextend -L 500M /dev/datavg/lv1  Size of logical volume datavg/lv1 changed from 100.00 MiB (25 extents) to 500.00 MiB (125 extents).  Logical volume datavg/lv1 successfully resized.

为逻辑卷lv2增加400M的容量。

[root@localhost ~]# lvextend -L +400M /dev/datavg/lv2  Size of logical volume datavg/lv2 changed from 100.00 MiB (25 extents) to 500.00 MiB (125 extents).  Logical volume datavg/lv2 successfully resized.

逻辑卷扩容完成之后,查看扩容结果。

[root@localhost ~]# df -Th文件系统                类型      容量  已用  可用 已用% 挂载点/dev/mapper/centos-root xfs        17G  5.9G   12G   35% /devtmpfs                devtmpfs  470M     0  470M    0% /devtmpfs                   tmpfs     487M     0  487M    0% /dev/shmtmpfs                   tmpfs     487M  8.6M  478M    2% /runtmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup/dev/sda1               xfs      1014M  166M  849M   17% /boot/dev/mapper/datavg-lv1  ext4       93M  1.6M   85M    2% /mnt/lv01/dev/mapper/datavg-lv2  xfs        97M  5.3M   92M    6% /mnt/lv02tmpfs                   tmpfs      98M  4.0K   98M    1% /run/user/42tmpfs                   tmpfs      98M   24K   98M    1% /run/user/0/dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64

此时逻辑卷的容量并没有得到提升,这是由于没有对文件系统进行扩容。

8、文件系统扩容

将逻辑卷比作一间教室,文件系统比作桌椅,数据比作学生。学生数量增加,就需要扩大教室的空间,但扩大教室的空间还是不够的,还需要增加桌椅供学生使用,文件系统扩容就相当于增加桌椅的数量。

在Linux下,不同的文件系统有不同的扩容方式。下面列出了几种常见的文件系统以及对应的扩容方式:

1、Ext2/Ext3/Ext4文件系统:

使用resize2fs命令来扩展文件系统大小。例如,resize2fs /dev/sdb1将扩展/dev/sdb1上的Ext2/Ext3/Ext4文件系统。

2、XFS文件系统:

使用xfs_growfs命令来扩展文件系统大小。例如,xfs_growfs /mnt将扩展/mnt上的XFS文件系统。

3、Btrfs文件系统:

使用btrfs filesystem resize命令来扩展文件系统大小。例如,btrfs filesystem resize +2G /mnt将/mnt上的Btrfs文件系统扩展2GB。

4、ZFS文件系统:

使用zpool和zfs命令来扩展文件系统大小。首先使用zpool命令扩展存储池的容量,然后使用zfs命令扩展具体的ZFS文件系统。

此处逻辑卷lv1的文件系统为ext4,则需要resize2fs命令进行扩容。

[root@localhost ~]# resize2fs /dev/datavg/lv1resize2fs 1.42.9 (28-Dec-2013)Filesystem at /dev/datavg/lv1 is mounted on /mnt/lv01; on-line resizing requiredold_desc_blocks = 1, new_desc_blocks = 4The filesystem on /dev/datavg/lv1 is now 512000 blocks long.

逻辑卷lv2的文件系统为xfs初始化磁盘,则需要xfs_growfs命令进行扩容。

[root@localhost ~]# xfs_growfs /dev/datavg/lv2meta-data=/dev/mapper/datavg-lv2 isize=512    agcount=4, agsize=6400 blks         =                       sectsz=512   attr=2, projid32bit=1         =                       crc=1        finobt=0 spinodes=0data     =                       bsize=4096   blocks=25600, imaxpct=25         =                       sunit=0      swidth=0 blksnaming   =version 2              bsize=4096   ascii-ci=0 ftype=1log      =internal               bsize=4096   blocks=855, version=2         =                       sectsz=512   sunit=0 blks, lazy-count=1realtime =none                   extsz=4096   blocks=0, rtextents=0data blocks changed from 25600 to 128000

将逻辑卷的文件系统扩容之后,再次查看逻辑卷容量。

[root@localhost ~]# df -Th文件系统                类型      容量  已用  可用 已用% 挂载点/dev/mapper/centos-root xfs        17G  5.9G   12G   35% /devtmpfs                devtmpfs  470M     0  470M    0% /devtmpfs                   tmpfs     487M     0  487M    0% /dev/shmtmpfs                   tmpfs     487M  8.6M  478M    2% /runtmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup/dev/sda1               xfs      1014M  166M  849M   17% /boot/dev/mapper/datavg-lv1  ext4      481M  2.3M  456M    1% /mnt/lv01/dev/mapper/datavg-lv2  xfs       497M  6.0M  491M    2% /mnt/lv02tmpfs                   tmpfs      98M  4.0K   98M    1% /run/user/42tmpfs                   tmpfs      98M   24K   98M    1% /run/user/0/dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64

9、卷组缩减

当磁盘空间不足时,可以减少卷组所占空间,即删除卷组中的物理卷。如果需要删除的物理卷中存有数据,需要将数据迁移到其他物理卷中,但也要保证目标物理卷有足够的空间储存迁移的数据。

pvmove命令用于在物理卷(Physical Volume,PV)之间移动数据。它的常用参数包括:

-n:执行预览操作,显示移动数据的计划,而不实际执行移动。

-v:显示详细的移动操作过程。

-i:在移动之前进行交互式确认,以便用户可以确认移动操作。

-b:在后台执行移动操作,允许用户继续其他操作。

-M:在移动之后,更新相关物理卷和卷组(Volume Group,VG)的元数据。

-t:指定移动数据的目标物理卷。

将物理卷sdb中的数据迁移到物理卷sdc中。

[root@localhost ~]# pvmove /dev/sdb /dev/sdc  /dev/sdb: Moved: 4.80%  /dev/sdb: Moved: 10.00%  /dev/sdb: Moved: 50.00%  /dev/sdb: Moved: 60.00%  /dev/sdb: Moved: 100.00%

通过vgreduce命令将sdb物理卷从卷组中删除。

[root@localhost ~]# vgreduce datavg /dev/sdb  Removed "/dev/sdb" from volume group "datavg"

10、删除逻辑卷

lvremove命令用于删除逻辑卷(Logical Volume,LV)。它的常用参数包括:

-v:显示详细的删除操作过程。

-f:强制删除逻辑卷,忽略警告和确认提示。

-A:在删除逻辑卷之前进行交互式确认。

-d:在删除逻辑卷之前执行预览操作,显示删除的计划,而不实际执行删除。

将多余的逻辑卷删除。

#解除挂载[root@localhost ~]# umount /dev/datavg/lv2#删除逻辑卷[root@localhost ~]# lvremove /dev/datavg/lv2Do you really want to remove active logical volume datavg/lv2? [y/n]: y  Logical volume "lv2" successfully removed

在lvremove命令中添加-f参数,强制删除多余的逻辑卷。

[root@localhost ~]# umount /dev/datavg/lv1 [root@localhost ~]# lvremove -f /dev/datavg/lv1   Logical volume "lv1" successfully removed

由于在创建逻辑卷时的创建顺序是物理卷、卷组与逻辑卷,所以在删除物理卷时的删除顺序应为逻辑卷、卷组与物理卷。

结束!如有不足之处,欢迎指正!

来不及解释了,快上车!(加我微信拉你进群,需要学习资料的V我)

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。

初始化磁盘-Linux系统LVM逻辑卷管理

限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信:
初始化磁盘-Linux系统LVM逻辑卷管理

© 版权声明

相关文章

暂无评论

暂无评论...