操作过程
查看当前磁盘使用情况。
我在/opt/sdf/backup分区中有将近90 GB的空闲空间,而我的/tmp分区的大小非常小,
所以让我们从/opt/sdf/backup中获取10 GB的空间,并将其添加到/tmp分区中。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/system-root 2.0G 1.4G 453M 76% / devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.8G 0 3.8G 0% /dev/shm tmpfs 3.8G 8.9M 3.8G 1% /run tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup /dev/sda1 120M 92M 20M 83% /boot /dev/mapper/system-tmp 2.0G 6.8M 1.8G 1% /tmp /dev/mapper/system-opt 2.0G 220M 1.6G 12% /opt /dev/mapper/system-sdf 5.8G 66M 5.5G 2% /opt/sdf tmpfs 1.0M 4.0K 1020K 1% /opt/sdf/queues /dev/mapper/system-var 2.0G 63M 1.8G 4% /var /dev/mapper/system-sdfbackup 97G 63M 92G 1% /opt/sdf/backup
确保我们要缩减的分区没有被任何进程使用,这可以使用下面的命令进行检查
# lsof /opt/sdf/backup COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 18978 root cwd DIR 253,2 4096 2 /opt/sdf/backup
可以看到bash进程正在使用该分区,因此您无法继续LVM大小缩减,请确保在操作之前关闭所有使用该分区的进程。
结束(退出)进程后,再次检查,没有进程占用
# lsof /opt/sdf/backup
接下来卸载分区
# umount /opt/sdf/backup
执行文件系统检查以确保磁盘健康,
显然我们不希望磁盘在操作期间损坏。
# e2fsck -f /dev/mapper/system-sdfbackup 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/mapper/system-sdfbackup: 60/6414336 files (0.0% non-contiguous), 451402/25649152 blocks
如果我们在上述步骤中收到任何警告或者错误,强烈建议我们首先检查磁盘健康状况。
没有问题,则继续。
调整LVM的大小。
现在我们将LVM卷大小调整到80G, 这样大概可以释放出大约17GB的大小
# resize2fs /dev/mapper/system-sdfbackup 80G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/mapper/system-sdfbackup to 20971520 (4k) blocks.
/dev/mapper/system sdfbackup上的文件系统现在有20971520个块。
接下来,使用与上述相同的大小选项执行lvreduce。
# lvreduce -L 80G /dev/mapper/system-sdfbackup WARNING: Reducing active logical volume to 80.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce system/sdfbackup? [y/n]: y Size of logical volume system/sdfbackup changed from 97.84 GiB (3131 extents) to 80.00 GiB (2560 extents). Logical volume system/sdfbackup successfully resized.
完成后,准备重新挂载我们的分区
# mount /dev/mapper/system-sdfbackup /opt/sdf/backup
检查分区的新大小
# df -h /dev/mapper/system-sdfbackup Filesystem Size Used Avail Use% Mounted on /dev/mapper/system-sdfbackup 79G 59M 75G 1% /opt/sdf/backup
现在可以扩展/tmp分区了
在这里,我们将/tmp分区扩展10个G
# lvextend -L +10G /dev/mapper/system-tmp Size of logical volume system/tmp changed from 2.00 GiB (64 extents) to 12.00 GiB (384 extents). Logical volume system/tmp successfully resized.
现在调整文件系统的大小
# resize2fs /dev/mapper/system-tmp resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/mapper/system-tmp is mounted on /tmp; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/mapper/system-tmp is now 3145728 blocks long.
查看现在/tmp分区的大小,已经是12G了。
# df -h /dev/mapper/system-tmp Filesystem Size Used Avail Use% Mounted on /dev/mapper/system-tmp 12G 11M 12G 1% /tmp
有时候,我们会遇到这种情况:
服务器的某个逻辑卷上有大量可用空间但未使用, 而正在使用的另一个分区空间不足。
在这种情况下,我们不需要添加另外的磁盘来扩展卷组和逻辑卷,为什么不从这个大 lvm 中获取一些可用空间并扩展我们的分区,这可以在同一会话中执行而无需重新启动。
重要提示:本文显示了在线减小逻辑卷的步骤,但建议在运行级别1中执行这些步骤,因为在运行级别1中,您的分区将不会被任何进程使用,在任何其他运行级别中,分区将被使用的风险很高,因此您将无法执行这些LVM操作。
减小LVM可能会丢失存储在分区中的数据,因此执行这些步骤的风险由个人自己承担。
在本文中,将介绍缩小 LVM 并将缩小的磁盘空间扩展另一个分区的步骤。
我们将在Red Hat Enterprise Linux 7上完成这些步骤。