LVM 动态调整容量大小

有时候机器在安装的操作系统存储空间分配时总会有存在一些出入--没有合理分配分区空间。比如IDC机房人员帮忙安装操作系统时,默认就是自动分区。默认分区会存在大部分空间落在/home分区上面。不过还好使用的是LVM来管理,可以进行动态划分调整。

XFS 文件系统

  • 示例:将/data分区空间扩容

# pvcreate /dev/sdc
# vgextend vg_name /dev/sdc
# lvextend -l +100%FREE /dev/mapper/centos-data


# xfs_growfs /data                            # xfs
# resize2fs /data                             # ext*
  • 示例: 将/home分区的空间减少100G,并将该该空间划入到/root分区上面。
# umount /home/
# lvreduce -L -100G /dev/mapper/centos-home
# xfs_growfs /dev/mapper/centos-home
# mkfs.xfs -f /dev/mapper/centos-home
# mount /dev/mapper/centos-home /home/

# lvextend -l +100%FREE /dev/mapper/centos-root
# xfs_growfs /dev/mapper/centos-home

EXT 文件系统

# lvextend -L 120G /dev/mapper/centos-home     //调整至120G
# lvextend -L +20G /dev/mapper/centos-home     //在原来的基础上增加20G
# lvreduce -L 50G /dev/mapper/centos-home      //在原来的基础上减小50G
# resize2fs /dev/mapper/centos-home            //执行生效

小结

  • resize2fs命令 针对的是ext2、ext3、ext4文件系统
  • xfs_growfs命令 针对的是xfs文件系统

xfs 文件系统在缩减空间大小时需要重新格式化--会存在数据丢失的风险。而ext文件系统不会存在该问题。

其它

减少分区大小时,需要将该分区进行卸载才能操作,当该目录有程序使用该分区时是无法卸载的。

# umount /home
umount: /home: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

查看哪些进程使用该分区

# lsof +D /home
或
# fuser -m /home    // 也可以接入 -k 参数,表示自动把占用home分区的进程杀掉,还可以加一个-i 参数,这样每杀死一个程序前,会询问