aws ebs云盘常用操作
今天我们主要谈aws云磁盘的日常操作,其实日常对云磁盘的操作我个人觉得算是相对少(可能跟目前的业务有关),所以今天我只列出我日常用的操作, 有些我会给出代码,如果没有代码的我会把原理描述清楚,在开始前呢,跟以往一样,我们先把一些名词和在使用中要避免的坑先给填一填,其实除了 ebs,aws还提供一种本地ssd磁盘,它也可以挂载到实例上,而且很便宜,但我们一般建的实例很少用到它(特殊业务除外),说到这,你要问了,这么便 宜我们为什么不用本机ssd盘,而且大家都可能知道,ssd磁盘IO很强大,这是为啥呢?先别急,待我慢慢与你说来:
我们先说说我们不会经常使用的最大的问题,就是本机ssd磁盘数据不会保存,就是你存入的数据重启会丢失,到这里,你知道为什么不使用了吧,买的磁 盘不能存数据,我要它鸟用,所以一般业务我们不会选择本机ssd磁盘,而且选择了ssd磁盘,你的IOPS是无法自定义IOPS,看到这里,你估计更不想 用,你也别太失望,其实这种盘在很多业务上用途很广泛的,因为ssd具备了高IO,如果你的业务需要高IO而且不需要报存在就可以使用,很多公司都在使用 了,具体怎么用要跟你业务相关,合适用就不用,不适合别勉强,以免出问题,其实云磁盘这块aws已经做的很牛x了,之所以提供本机ssd磁盘,也是避免浪 费,在机器上插着不是插着吗,能发挥点价值,收点费用不更好么,哈。
说完ssd磁盘,就要说我们经常用的ebs盘了,俗称云磁盘,aws在这块做的很好了,每个ebs磁盘大小都跟iops是成比例的,每GB磁盘是3 个IOPS,这样你就可以根据你需要的IOPS来觉得用多大的磁盘了,ebs磁盘共分三种:第一种就是通用型,第二种是可预配置型,第三种是磁,其中第三 种基本已经不用了,我们不会提它,通用型和预配置型主要区别是,通用型就是我们刚才说的按比例来计算IOPS,但如果你业务IO很大,不成比例,你就可以 直接设置你磁盘的IOPS,所以aws提高了可预配置盘,你可以自己设置IOPS大小,最大支持 20000的IOPS。
以上讲的都是云磁盘的概念和日常使用中应该避免的低级操作,再往下我们就说具体如何操作了,对于磁盘,在业务上一般的操作是新建,attach到实 例,制作快照以及从快照恢复数据等,我们先讲新建云磁盘,在建云磁盘前我们需要理解新建磁盘并attach到一个实例上需要的基本参数:
1、磁盘size
2、磁盘创建在那个可用区
3、attach到实例上的设备名(或磁盘分区名)
#!/usr/bin/evn python
import boto
from boto import ec2
import time
region = ‘your region’
def create_volume(volume_size, device_name):
ec2 = boto.ec2.connect_to_region(region)
azone = ec2.get_only_instances()[0].placement
volume = ec2.create_volume(volume_size, azone)
while volume.status != ‘available':
print ‘#’
time.sleep(5)
volume.update()
instance_id = ec2.get_only_instances()[0].id
if instance_id == u’your instance id':
volume.attach(instance_id, device_name)
这段代码就功能就是创建一个磁盘,传入连个参数,一个是size,一个是设备名,先获取实例的可用区,然后创建磁盘,if判断你要附加到具体那个实例上,要指定你的实例id,最后一行是attach到一个实例上,调用:
create_volume(10, ‘/dev/xvdb’)
其中/dev/xvdb是实例上磁盘分区名称,要根据你现有实例的磁盘分区名称来,你可以先查下你现在的磁盘具体到那个了,如果已经到xvdb了,你就需要传入xvdc这个参数了。
磁盘还有日常的操作就是做备份,给卷做快照,我们看看如何用代码实现:
def Back_volumes():
ec2 = boto.ec2.connect_to_region(region)
volumes = ec2.get_all_volumes()
snaps = [ v.create_snapshot() for v in volumes ]
print snaps
以上是给你这个region下所有磁盘做快照,你自己可以加入判断,只给某个磁盘加快照。
除了以上列的,磁盘删除,扩充系统盘等操作,扩充系统盘目前我用的不是很多,基本原理就是你用磁盘先建一个快照,用快照生成一个磁盘,这时候你就可 以指定磁盘大小了,创建完新磁盘再attach到原来实例上,关于删除就没什么好说的了.