增
通过磁盘快照创建云盘,并挂在到实例
aliyun ecs CreateDisk --RegionId $regionId --DiskCategory $diskCategory --SnapshotId $snapshotId --InstanceId $instanceId
执行成功后会返回磁盘ID(DiskID)
- --RegionId 区域ID(必须)
- --DiskCategory 磁盘规格
- --SnapshotId 磁盘快照ID
- --InstanceId 挂在服务器实例ID
改
修改云盘为按量付费
磁盘卸载前,必须要从包年包月修改为按量付费
aliyun ecs ModifyDiskChargeType --InstanceId $instanceId --DiskIds '["$diskid1","$diskid2"]' --RegionId $regionId --DiskChargeType PostPaid
- --InstanceId 实例ID(必须)
- --DiskIds 磁盘ID(必须),输入格式为json格式的列表
- --RegionId 区域ID(必须)
- --DiskChargeType
- PrePaid(默认):按量付费数据盘转换为包年包月数据盘。
- PostPaid:包年包月数据盘转换为按量付费数据盘。
卸载云盘
aliyun ecs DetachDisk --InstanceId $instanceId --DiskId $diskId
- --InstanceId 实例ID(必须)
- --DiskId 磁盘ID(必须)
查
查看云盘相关信息
根据状态筛选云盘,查看云盘信息
aliyun ecs DescribeDisks --RegionId $regionId --Status Available --PageSize 5 --PageNumber 1
- --RegionId 区域ID(必须)
- --Status 状态:Available
- --PageSize 每页显示磁盘的数量
- --PageNumber 第几页
通过磁盘快照批量创建云盘脚本
此脚本需要一个instance-list.txt文件。每行依此记录:源服务器、磁盘快照ID、目标服务器IP、目标服务器instanceID,使用英文逗号分隔。
脚本最后sleep 40,是因为使用aliyun cli调用接口创建磁盘,接口并发量太高会因前一个事件还没结束而失败。
为了避免不必要的失败,又要重新整理机器,不如多等会。
#!/bin/bash
for i in `cat /root/instance-list.txt`
do
regionId=填写地区id
diskCategory=填写磁盘规格
sourceInstance=`echo $i | awk -F ',' '{print $1}'`
snapshotId=`echo $i | awk -F ',' '{print $2}'`
destinationInstanceIp=`echo $i | awk -F ',' '{print $3}'`
instanceId=`echo $i | awk -F ',' '{print $4}'`
#通过镜像创建Disk,获取Disk的ID
diskId=`aliyun ecs CreateDisk --RegionId $regionId --DiskCategory $diskCategory --SnapshotId $snapshotId --InstanceId $instanceId | jq '.DiskId' | awk -F"\"" '{print $2}'`
echo SourceInstance:$sourceInstance , DestinationInstance:$destinationInstanceIp , DiskId:$diskId
sleep 40
done
卸载服务器上包年包月云盘脚本
- 云盘从包年包月转为按量付费
- 卸载按量付费云盘
此脚本需要一个detach-disks-list.txt文件。每行依此记录:服务器instanceID、云盘diskID,使用英文逗号分隔。
#!/bin/bash
for i in `cat /root/detach-disks-list.txt`
do
instanceId=`echo $i | awk -F',' '{print$1}'`
diskId=`echo $i | awk -F',' '{print$2}'`
regionId=cn-shenzhen
echo 1- ModifyDiskChargeType InstanceId: $instanceId ,DiskId: $diskId
aliyun ecs ModifyDiskChargeType --InstanceId $instanceId --DiskIds '["'$diskId'"]' --RegionId $regionId --DiskChargeType PostPaid
sleep 5
echo 2- DetachDisk InstanceId: $instanceId ,DiskId: $diskId
aliyun ecs DetachDisk --InstanceId $instanceId --DiskId $diskId
sleep 5
done