开发者社区> 问答> 正文

在 Debian Linux 里“压缩卷” - shrink partion

环境:Debian 9,例子中,将阿里云ECS云服务器默认的系统盘,40GB的/dev/vda1,划成30GB的/dev/vda1和10GB的/dev/vda2。

过程:

1. df -h # 查看当前的磁盘使用情况,/dev/vda1 是40GB

2. on-line shrinking not supported # 尝试直接运行resize2fs来压缩,提示错误,不允许对正在使用的分区进行压缩操作

3. vi /etc/initramfs-tools/hooks/resizefs # 创建好脚本,复制好resize2fs
#!/bin/sh
   set -e
   PREREQS=""
   prereqs() { echo "$PREREQS"; }
   case $1 in
    prereqs)
        prereqs
        exit 0
    ;;
   esac
  . /usr/share/initramfs-tools/hook-functions
   copy_exec /sbin/e2fsck
   copy_exec /sbin/resize2fs
   exit 0

4. chmod +x /etc/initramfs-tools/hooks/resizefs # 添加执行权限

5. vi /etc/initramfs-tools/scripts/local-premount/resizefs # 创建好脚本,在挂载/前进行resize2fs操作
#!/bin/sh
   set -e
   PREREQS=""
   prereqs() { echo "$PREREQS"; }
   case "$1" in
    prereqs)
        prereqs
        exit 0
    ;;
   esac
   /sbin/e2fsck -yf /dev/vda1
   /sbin/resize2fs /dev/vda1 30G
   /sbin/e2fsck -yf /dev/vda1
6. chmod +x /etc/initramfs-tools/scripts/local-premount/resizefs # 添加执行权限

7. update-initramfs -u -v # 更新系统引导

8. 重启系统后用 df 查看磁盘使用情况

9. fdisk /dev/vda # 用fdisk删除vda1分区,再新建30GB的vda1分区和10GB容量的vda2分区

10. rm /etc/initramfs-tools/hooks/resizefs /etc/initramfs-tools/scripts/local-premount/resizefs # 删除之前的启动脚本

11. update-initramfs -u -v # 更新系统引导

10. 重启系统后,用 fdisk -l 查看,可以看到相应的分区和容量信息

参考: https://serverfault.com/questions/528075/is-it-possible-to-on-line-shrink-a-ext4-volume-with-lvm

展开
收起
dongshan8 2018-04-25 07:34:32 16459 0
2 条回答
写回答
取消 提交回答
  • 2018-04-25 09:31:46
    赞同 展开评论 打赏
  • 阿里云论坛版主,QQ 1978638808
    这个厉害了,记得win是虚拟D盘。
    2018-04-25 08:21:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载