
# 如何自动初始化弹性伸缩新增的云服务器数据盘？
#### 操作场景
云服务器创建完成后，数据盘需要初始化后才能使用。当使用弹性伸缩为伸缩组增加数量较多的云服务器时，您就需要逐一手动初始化数据盘，将会占用较长时间。
本节为您介绍通过脚本自动化完成初始化磁盘的操作，包括磁盘分区和挂载指定目录。本节介绍的自动初始化脚本示例仅支持初始化一个数据盘。
本节操作以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. 创建伸缩组。 配置伸缩组时，请选择上述步骤中创建的伸缩配置。
    伸缩组创建成功后，通过该组的伸缩活动产生的云服务器，会按照私有镜像中的配置自动初始化数据盘。
    
 
