openstack 之 镜像制作 根分区扩容

 

背景说明

cloud-init 的一项功能是自动扩展linux的指定分区。比如linux镜像是20G,在部署instance时选择的flavor磁盘定义是40G,那么instance部署时cloud-init会自动将制定分区扩到 40G。

环境准备

1) 该功能依赖growpart,所以需要在开始前,在镜像中安装包:

yum install –y cloud-utils-growpart

2) 查看需要扩容的磁盘分区

# mount  |grep /dev/vd

/dev/vda1 on / type ext4 (rw,relatime,seclabel,data=ordered)

/dev/vda3 on /var type ext4 (rw,relatime,seclabel,data=ordered)

如上所示:/dev/vda3为我们需要进行扩容的磁盘分区。

cloud-init配置

cloud-init配置开机启动命令:

# cat /etc/cloud/cloud.cfg

….

 

bootcmd:

  - [ cloud-init-per, once, grow-partition, growpart, /dev/vda, 3 ]

  - [ cloud-init-per, once, resize-filesystem, resize2fs, /dev/vda3 ]

简单来说就是,在系统第一次启动的时候,执行命令:

growpart /dev/vda 3

resize2fs /dev/vda3

即可。

----------------------------cloud-init常用配置和命令:更多配置参考文章:https://blog.csdn.net/qq_37242520/article/details/106421730

system_info:
   distro: sles
   default_user:
     name: linux   //登录操作系统使用的用户名
     lock_passwd: True   //True表示禁用密码登录方式,注意部分操作系统此处配置为1表示禁用
     gecos: redhat
     groups: [adm, audio, cdrom, dialout, dip, floppy, lxd, netdev, plugdev, sudo, video]   //可选项,将用户添加到其他组,groups必须是操作系统etc/group中已存在的组
     sudo: ["ALL=(ALL) NOPASSWD:ALL"]   //表示当前用户具有root用户的所有权限
     shell: /bin/bash   //shell执行采用bash方式
    paths:
      cloud_dir: /var/lib/cloud/
      templates_dir: /etc/cloud/templates/
    ssh_svcname: sshd

systemctl status cloud-init-local
systemctl status cloud-init

# 后两个服务貌似不常用
systemctl status cloud-config
systemctl status cloud-final

lvm类型的系统盘扩容脚本

如果是lvm类型的系统盘,可以通过如下脚本扩容:

# cat extend_root_fs

echo "[] linux-rootfs-resize ..."

lvm vgchange --sysinit -an

#lvm_lv_root=$( echo $(df -h | grep '/$') | sed " ")

lvm_lv_root=$(echo $(df -h | grep '/$') | awk -F ' ' '{print $1}')

lvm_pv_path=$(lvm pvs --noheadings |awk '{print $1}')

lvm_pv_temp=$(echo ${lvm_pv_path}|sed "s/dev//g")

lvm_pv_dev=$(echo ${lvm_pv_temp}| sed "s/[^a-z]//g")

lvm_pv_part=$(echo ${lvm_pv_temp}| sed "s/[^0-9]//g")

growpart -v /dev/${lvm_pv_dev} ${lvm_pv_part}

partprobe -s /dev/${lvm_pv_dev}

lvm pvresize -v ${lvm_pv_path}

lvm vgchange --sysinit -ay

lvm lvextend -v -l +100%FREE ${lvm_lv_root}

然后执行:

./ extend_root_fs

再重启系统即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值