操作过程

查看当前磁盘使用情况。

我在/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
在 Linux中 如何在线减小 LVM 大小

有时候,我们会遇到这种情况:
服务器的某个逻辑卷上有大量可用空间但未使用, 而正在使用的另一个分区空间不足。

在这种情况下,我们不需要添加另外的磁盘来扩展卷组和逻辑卷,为什么不从这个大 lvm 中获取一些可用空间并扩展我们的分区,这可以在同一会话中执行而无需重新启动。

重要提示:本文显示了在线减小逻辑卷的步骤,但建议在运行级别1中执行这些步骤,因为在运行级别1中,您的分区将不会被任何进程使用,在任何其他运行级别中,分区将被使用的风险很高,因此您将无法执行这些LVM操作。

减小LVM可能会丢失存储在分区中的数据,因此执行这些步骤的风险由个人自己承担。

在本文中,将介绍缩小 LVM 并将缩小的磁盘空间扩展另一个分区的步骤。
我们将在Red Hat Enterprise Linux 7上完成这些步骤。

日期:2020-06-02 22:17:03 来源:oir作者:oir