文档首页/ 弹性伸缩 AS/ 常见问题/ 其他/ 如何自动初始化弹性伸缩新增的云服务器数据盘?
更新时间:2021-12-30 GMT+08:00
分享

如何自动初始化弹性伸缩新增的云服务器数据盘?

操作场景

云服务器创建完成后,数据盘需要初始化后才能使用。当使用弹性伸缩为伸缩组增加数量较多的云服务器时,您就需要逐一手动初始化数据盘,将会占用较长时间。

本节为您介绍通过脚本自动化完成初始化磁盘的操作,包括磁盘分区和挂载指定目录。本节介绍的自动初始化脚本示例仅支持初始化一个数据盘。

本节操作以centos 6.5为例。其他操作系统配置方法略有区别,请参考对应操作系统的相关资料进行操作,文档中不对此进行详细说明。

操作步骤

  1. 以root用户登录已有云服务器。
  2. 执行以下命令,进入脚本存放目录。

    cd /脚本目录

    例如:

    cd /home

  3. 执行以下命令,创建脚本。

    vi 脚本名称

    例如:

    vi fdisk_mount.sh

  4. 按“i”,进入脚本编辑页面。

    以下脚本为云服务器只有一个数据盘时的自动初始化,仅供参考,请用户根据实际情况修改。

    #!/bin/bash 
    bash_scripts_name=fdisk_mount.sh 
    ini_path=/home/fdisk.ini 
    disk= 
    size= 
    mount= 
    partition= 
     
    function get_disk_from_ini() 
    { 
    disk=`cat $ini_path|grep disk| awk -F '=' '{print $2}'` 
    if [ $disk = "" ] 
    then 
        echo "disk is null in file,exit" 
        exit 
    fi 
    result=`fdisk -l $disk | grep $disk` 
    if [ $result = 1 ] 
    then 
        echo "disk path is not exist in linux,exit" 
        exit 
    fi 
     
    } 
     
    function get_size() 
    { 
    size=`cat $ini_path| grep size|awk -F '=' '{print $2}'` 
    if [ $size = "" ] 
    then 
        echo "size is null,exit" 
        exit 
    fi 
    } 
     
    function make_fs_mount() 
    { 
    mkfs.ext4 -T largefile $partition 
    if [ $? -ne 0 ] 
    then 
        echo "mkfs disk failed,exit" 
        exit 
    fi  
     
    dir=`cat $ini_path|grep mount |awk -F '=' '{print $2}'` 
    if [ $dir = "" ] 
    then 
        echo "mount dir is null in file,exit" 
        exit 
    fi 
     
    if [ ! -d $dir ] 
    then 
        mkdir -p $dir 
    fi 
     
    mount $partition $dir 
    if [ $? -ne 0 ] 
    then 
        echo "mount disk failed,exit" 
        exit 
    fi  
     
    echo "$partition $dir ext3 defaults 0 0" >> /etc/fstab 
    } 
     
    function remove_rc() 
    { 
    cat /etc/rc.local | grep $bash_scripts_name 
    if [ $? ne 0 ] 
    then 
        sed -i '/'$bash_scripts_name'/d' /etc/rc.local 
    fi 
    } 
     
    ################## start ####################### 
    ##1、判断配置文件是否存在 
    if [ ! -f $ini_path ] 
    then 
        echo "ini file not exist,exit" 
        exit 
    fi 
     
    ##2、获取配置文件中disk指定的设备路径 
    get_disk_from_ini 
     
    ##3、获取配置文件中size分区大小 
    get_size 
     
    ##4、将磁盘分区 
    fdisk $disk  <<EOF 
    n 
    p 
    1 
    1 
    $size        
    w 
    EOF 
    partition=`fdisk -l $disk 2>/dev/null| grep "^/dev/[xsh].*d" | awk '{print $1}'` 
     
    ##5、格式化分区,挂载分区到对应目录 
    make_fs_mount 
     
    ##6、修改开机启动项,避免重试执行 
    remove_rc 
     
    echo 'SUCESS'
  5. 按“Esc”键,输入:wq,按“Enter”保存并退出编辑。
  6. 执行以下命令,创建配置文件。

    vi fdisk.ini

  7. 按“i”,进入配置文件编辑页面。

    配置文件中设置了数据盘的盘符、大小和挂载目录信息,用户可参考如下所示信息,根据实际情况修改。

    disk=/dev/xdev 
    size=+100G 
    mount=/opt/test
  8. 按“Esc”键,输入:wq,按“Enter”保存并退出编辑。
  9. 执行以下命令,打开配置文件“rc.local”。

    vi /etc/rc.local

  10. 按“i”,在“rc.local”文件中添加如下内容。

    /home/fdisk_mount.sh

    配置“rc.local”后,云服务器首次启动时会自动执行初始化数据盘脚本。

  11. 按“Esc”键,输入:wq,按“Enter”保存并退出编辑。
  12. 通过已有云服务器创建私有镜像。
  13. 创建伸缩配置。

    填写伸缩配置信息时,请选择上述步骤中创建的私有镜像,并选择一个数据盘。

  14. 创建伸缩组。

    配置伸缩组时,请选择上述步骤中创建的伸缩配置。

    伸缩组创建成功后,通过该组的伸缩活动产生的云服务器,会按照私有镜像中的配置自动初始化数据盘。

相关文档