如何在Linux中扩展和调整LVM分区大小

时间:2020-03-05 15:27:01  来源:igfitidea点击:

逻辑卷管理器(LVM)允许Linux内核有效管理大磁盘驱动器。
这允许用户从多个磁盘中创建分区,并允许它们在几秒钟内在线扩展文件系统大小。

在本文中,我们将看到,我们如何在不丢失数据的情况下扩展和调整LVM分区的大小。

如果我们在Linux上使用LVM,则以下是在线扩展LVM分区的步骤,而无需任何数据丢失。

注意:必须使用sudo权限使用root或者用户运行这些命令。

场景1:

1)使用现有磁盘扩展LVM

在这种情况下,我们对现有存储有一个未使用的分区,我们希望将其使用它来扩展另一个LVM分区。

一种。检查卷组详细信息

首先,我们将使用vgdisplay命令查看卷组的细节(接下来我们调用它vg)。

# vgdisplay

我们可以看到有49.21 GB的免费大小。

要查看我们VG的更详细信息,我们可以使用"添加"-V"参数到VGDisplay命令。

# vgdisplay -v

湾延长存储

"/dev/vg_devmachine/data"具有24.41 GB。
假设我们希望将10 GB更多添加到/data分区。
要扩展逻辑卷,我们只需告诉Lvextend命令用-l参数增加我们想要增加大小(+10)的大量。

# lvextend -L+10G /dev/vg_devmachine/data

仅限Rhel 3注意:我们需要在激活更改之前卸载分区。

# unmount /dev/VolGroup00/LogVol00

对于此示例,我们可以通过键入:卸载/data分区

# unmount /dev/vg_devmachine/data

然后我们需要激活更改。我们将使用Resize2FS命令。此命令用于在线调整Ext2/Ext3/Ext4文件系统大小。

# resize2fs /dev/vg_devmachine/data

注意:在RHEL 4上,我们可以使用ext2online命令调整分区大小。

# ext2online /dev/mapper/vg_devmachine-data

但是在上面的RHEL 5上,命令由Resize2FS命令替换。

现在要检查它,再次运行vgdisplay -v,并突出显示/dev/vg_devmachine/data

我们现在看到LV尺寸成长为34.41 GB.如果我们使用的是RHEL 3,请不要忘记再次安装分区.Scenario 2:

用新磁盘扩展存储

在此方案中,我们添加了新的存储,该存储是"/dev/sdb",在Linux系统中具有100 GB的容量。
然后,我们希望使用它来扩展现有的LVM分区。
将LVM分区扩展到另一个磁盘的命令保持相同。
但是当我们在系统中添加更多物理存储时,我们需要使OS(Linux)更多了解它。

一种。
创建物理分区

当我们添加新磁盘时,我们需要它被系统识别以进行一些操作。
互联网上有一些分区工具,如fdisk并分开。

在本文中,我们将使用FDISK,因为它可以在大多数Linux发行版中提供。
首先要做的是创建一个新分区

# fdisk /dev/sdb

n创建新分区。

让我们说,我们想创建2个新分区。
P1以创建新的主分区。
将尺寸为50g。

重复第二个分区的操作。
P2以创建第二个主分区。
对于尺寸(如问题最后一个气缸......),我们无需输入值,它将考虑其余的空间作为下面的示例

完成后,按"W"按钮提交更改。

现在,如果我们做了fdisk -l,我们将看到/dev/sdb1/dev/sdb2分区。

创建物理量(PV)作为LVM的基础

完成生理分区后,下一步是创建物理卷(PV)。
PV用作LVM的主体。
物理磁盘分为一个或者多个物理卷(PV)

# pvcreate /dev/sdb1 /dev/sdb2

如果没有错误,可以使用pvscan命令检查结果。

# pvscan

我们现在看到两个空的PV出现。
空意味着PV不属于任何卷组。

扩展卷组(VG)

通过组合一个或者多个光伏来创建逻辑卷组(VG)。
我们已经称为vg_devmachine。
其能力为95.11 GB和39.21 GB的可用空间。
要扩展vg_devmachine,我们可以使用vgextend命令。

# vgextend vg_devmachine /dev/sdb1

通过vgdisplay检查它。
我们将看到VG_Devmachine大小正在增加。

扩展LVM分区

现在在这个阶段,我们将在上一个命令使用相同的命令。
让我们说我们想要扩展/home分区。
添加它更多30 GB。

我们再次使用lvdisplay命令首先检查它以查看当前容量。

# lvdisplay

要添加更多30g进入/home分区,我们需要扩展分区:

# lvextend -L+30G /dev/vg_devmachine/home

然后我们需要激活更改,以便生效:

# resize2fs /dev/vg_devmachine/home

如何调整/缩小LVM

在缩小卷之前,请确保备份挂载点。
缩小卷有可能数据损坏。
要减少逻辑卷的大小,请先卸载文件系统。

然后,我们可以使用lvreduce命令缩小卷。
缩小卷后,重新安装文件系统。
此帖子中给出的示例适用于CentOS 7.

在我们的示例中,命名为/dev/vg-01/lv_stripe的逻辑卷具有1GB尺寸。
我们希望将LV大小降低到800MB。
在继续缩小文件系统之前,请注意以下几点。

  • 确保文件系统的当前磁盘使用率小于我们将减少逻辑卷的大小。
  • 在LVM中的任何大小更改之前始终备份文件系统数据,因为命令中的一个简单错误可能导致文件系统损坏并因此丢失数据。

为了将LV大小降低到800MB,我们需要遵循以下步骤。

  • 卸载文件系统(如果它的根卷需要引导到Live CD以完成工作)
  • 使用fsck命令在调整它之前检查文件系统。
  • 在减少LV大小之前将文件系统调整为800MB
  • 减小逻辑卷800MB的大小。
  • 安装文件系统

现在,我们可以通过上面提到的每个步骤。

1)卸载文件系统

在下面的示例中,我们在安装点上安装了一个逻辑卷/dev/vg-01/lv_stripe
/mnt/lv_stripe我们可以检查卷是否已装入df -hp命令

# df -hP 
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        18G  5.2G   13G  30% /
devtmpfs                      897M     0  897M   0% /dev
tmpfs                         912M  156K  912M   1% /dev/shm
tmpfs                         912M  9.0M  903M   1% /run
tmpfs                         912M     0  912M   0% /sys/fs/cgroup
/dev/sda1                     497M  189M  309M  38% /boot
tmpfs                         183M   24K  183M   1% /run/user/1000
/dev/mapper/vg--01-lv_stripe 1008M   55M  902M   6% /mnt/lv_stripe

我们可以看到最后一行,逻辑卷已安装。
在文件系统上运行fsck之前,应该卸载它。
我们可以卸载文件系统/mnt/lv_stripe,如下所示。

# umount /mnt/lv_stripe

使用DF命令进行检查

# df -hP 
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        18G  5.2G   13G  30% /
devtmpfs                      897M     0  897M   0% /dev
tmpfs                         912M  156K  912M   1% /dev/shm
tmpfs                         912M  9.0M  903M   1% /run
tmpfs                         912M     0  912M   0% /sys/fs/cgroup
/dev/sda1                     497M  189M  309M  38% /boot
tmpfs                         183M   24K  183M   1% /run/user/1000

2)执行文件系统检查

在继续缩小文件系统之前,应完成FSCK命令以避免文件系统数据的不一致。
即使文件系统似乎清除了"-F"选项,我们也会强制检查。
这可以如下完成。

# e2fsck -f /dev/vg-01/lv_stripe 
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg-01/lv_stripe: 14/65536 files (7.1% non-contiguous), 18146/262144 blocks

此操作必须在文件系统的每5个步骤中传递,如果没有文件系统可能存在一些问题。

注意:FSCK.ext4现在推荐用于Ubuntu的新版本,因为它默认使用ext4文件系统。

3)调整文件系统大小

在减少逻辑卷的大小之前,我们需要减少其中的文件系统。
命令resize2fs可以如下使用。
我们将将文件系统缩短为800MB。
我们将使用"-p""选项在脱机调整大小期间为每个Resize2FS操作打印出百分比完成列。

# resize2fs -p /dev/vg-01/lv_stripe 800M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg-01/lv_stripe to 204800 (4k) blocks.
Begin pass 3 (max = 8)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/vg-01/lv_stripe is now 204800 blocks long.

4)减少LV尺寸

在缩小驻留文件系统后,我们可以继续降低LV,如下所示。

# lvreduce -L 800M /dev/vg-01/lv_stripe 
  WARNING: Reducing active logical volume to 800.00 MiB
  THIS Jan DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_stripe? [y/n]: y
  Size of logical volume vg-01/lv_stripe changed from 1.00 GiB (256 extents) to 800.00 MiB (200 extents).
  Logical volume lv_stripe successfully resized.

这将将逻辑卷大小降至800MB。
请注意,在调整逻辑卷大小时,请使用精确尺寸(800MB)。
我们可以检查逻辑卷的新大小

# lvdisplay /dev/vg-01/lv_stripe 
 --- Logical volume --
 LV Path /dev/vg-01/lv_stripe
 LV Name lv_stripe
 VG Name vg-01
 LV UUID moX8R0-ME2Q-UFHd-HLIP-rmij-SmTm-3Zupem
 LV Write Access read/write
 LV Creation host, time centos7-srv, 2016-05-01 16:02:21 +0100
 LV Status available
 # open 0
 LV Size 800.00 MiB
 Current LE 200
 Segments 1
 Allocation inherit
 Read ahead sectors auto
 - currently set to 8192
 Block device 253:3

我们可以看到"LV大小800.00 MIB"线路,表示新尺寸。
我们还可以安装文件系统并使用命令"df -ph`命令检查它

# mount /dev/vg-01/lv_stripe /mnt/lv_stripe/
# df -Ph
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/centos-root        18G  5.2G   13G  30% /
devtmpfs                      897M     0  897M   0% /dev
tmpfs                         912M  156K  912M   1% /dev/shm
tmpfs                         912M  9.0M  903M   1% /run
tmpfs                         912M     0  912M   0% /sys/fs/cgroup
/dev/sda1                     497M  189M  309M  38% /boot
tmpfs                         183M   20K  183M   1% /run/user/1000
/dev/mapper/vg--01-lv_linear  9.7G  3.2M  9.2G   1% /mnt/lv_linear
/dev/mapper/vg--01-lv_mirror  992M  2.8M  938M   1% /mnt/lv_mirror
/dev/mapper/vg--01-lv_stripe  786M   55M  692M   8% /mnt/lv_stripe

请注意,在使用LVReduce命令缩小逻辑卷之前,我们将使用Resize2FS命令调整文件系统大小。
Resize2FS使文件系统仅使用存储的第一个大小字节。
它通过移动文件系统元数据和数据来实现这一点。
完成后,将在块设备(逻辑卷)的末尾进行未使用的存储,由文件系统未使用。
lvextend和lvreduce命令更改逻辑卷的大小。
如果给出了调用Resize2fs的-R选项,它们可以另外更改文件系统的大小,这些选项可能是正确的方式,尤其是在减少的情况下。
意外给Lvreduce提供错误的尺寸是一种遗忘的方法,可以丢失数据; -R防止此(通过确保Resize2f被告知相同的大小)。

因此,我们可以通过使用直接LVreduce与"-R""选项进行绕过Resize2FS步骤。
例如,我们将通过遵循上图的步骤来减少我们的逻辑卷,而无需resize2fs步骤,并以以下与"lvreduce -r`命令结尾:

# umount /mnt/lv_stripe/
# e2fsck -f /dev/vg-01/lv_stripe 
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg-01/lv_stripe: 14/57344 files (7.1% non-contiguous), 17567/204800 blocks
# lvreduce -r -L 500M /dev/vg-01/lv_stripe
  Rounding size (125 extents) up to stripe boundary size for segment (126 extents)
fsck from util-linux 2.23.2
/dev/mapper/vg--01-lv_stripe: clean, 14/57344 files, 17567/204800 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg--01-lv_stripe to 129024 (4k) blocks.
The filesystem on /dev/mapper/vg--01-lv_stripe is now 129024 blocks long.
  Size of logical volume vg-01/lv_stripe changed from 800.00 MiB (200 extents) to 504.00 MiB (126 extents).
  Logical volume lv_stripe successfully resized.

现在让我们检查逻辑卷的新大小

# lvdisplay /dev/vg-01/lv_stripe | grep "Size"
 LV Size 504.00 MiB

你可以看到一个新的大小。
我们不需要调整文件系统大小。