如何在Linux中扩展和调整LVM分区大小
逻辑卷管理器(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个新分区。
按P
和1
以创建新的主分区。
将尺寸为50g。
重复第二个分区的操作。
按P
和2
以创建第二个主分区。
对于尺寸(如问题最后一个气缸......),我们无需输入值,它将考虑其余的空间作为下面的示例
完成后,按"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
你可以看到一个新的大小。
我们不需要调整文件系统大小。