aws(学习笔记第十课) 对AWS的EBS如何备份(snapshot)以及使用snapshot恢复数据,AWS实例存储
aws(学习笔记第十课)
- 对
AWS的EBS
如何备份(snapshot
)以及使用snapshot
,AWS
实例存储
学习内容:
- 对
AWS的EBS
如何备份 AWS
实例存储EBS
和实例存储的不足
1. 对AWS的EBS
如何备份(snapshot)以及使用snapshot恢复数据
- 使用
EBS
的快照功能
对EBS
生成快照,能够对数据进行备份。需要知道volume id
,之后使用volume id
对该volume
进行拍摄快照(snapshot)。下图是整个EBS
练习的步骤,其中:- 步骤1到4是第九课的练习内容
- 步骤5是这次的练习内容。
- 进行备份练习
- 查询建立的
volume
注意,在这里需要指定aws ec2 --region ap-northeast-1 describe-volumes --filters "Name=size,Values=5" --query "Volumes[].VolumeId" --output text
region
- 建立
snapshot
快照aws --region ap-northeast-1 ec2 create-snapshot --volume-id vol-026a77a7e0b5a86ae --query "SnapshotId" --output text
这样就建立好了当前的snapshot
。
在快照里面,touch
了一个测试文件。[root@ip-172-31-1-17 volume]# cat hello.txt hello,snapshot; [root@ip-172-31-1-17 volume]#
- 利用
snapshot
进行还原
恢复数据,必须在EC2
创建的时候,利用snapshot
创建一个新的EBS
卷。 - 进入新创建的
EC2
查看基于snapshot
创建的volume
- 对新的
volume
进行mount
注意,这里已经进行了文件系统的创建,不需要在执行mkfs
命令mkdir /mnt/volume mount /dev/xvdf /mnt/volume
- 之后查看
snapshot
上的文件
发现文件都是存在,都已经恢复了。
注意,删除环境的时候,EBS
的卷,已经mount
的部分,需要执行umount
之后,再进行EC2
停止。
- 查询建立的
2. AWS
实例存储
- 实例存储和
EBS
的区别
实例存储和EBS
相反,它不是独立EC2
用户虚拟服务器的,它依存于EC2
。
- 使用
Cloudformation
创建实例存储Cloudformation
代码{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "(Instance Store)", "Parameters": { "KeyName": { "Description": "Key Pair name", "Type": "AWS::EC2::KeyPair::KeyName", "Default": "mykey" }, "VPC": { "Description": "Just select the one and only default VPC", "Type": "AWS::EC2::VPC::Id" }, "Subnet": { "Description": "Just select one of the available subnets", "Type": "AWS::EC2::Subnet::Id" } }, "Mappings": { "EC2RegionMap": { "ap-northeast-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-cbf90ecb"}, "ap-southeast-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-68d8e93a"}, "ap-southeast-2": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-fd9cecc7"}, "eu-central-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-a8221fb5"}, "eu-west-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-a10897d6"}, "sa-east-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-b52890a8"}, "us-east-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-1ecae776"}, "us-west-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-d114f295"}, "us-west-2": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-e7527ed7"} } }, "Resources": { "SecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "My security group", "VpcId": {"Ref": "VPC"}, "SecurityGroupIngress": [{ "CidrIp": "0.0.0.0/0", "FromPort": 22, "IpProtocol": "tcp", "ToPort": 22 }] } }, "Server": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": {"Fn::FindInMap": ["EC2RegionMap", {"Ref": "AWS::Region"}, "AmazonLinuxAMIHVMEBSBacked64bit"]}, "InstanceType": "m3.medium", "KeyName": {"Ref": "KeyName"}, "SecurityGroupIds": [{"Ref": "SecurityGroup"}], "SubnetId": {"Ref": "Subnet"}, "BlockDeviceMappings": [{ "DeviceName": "/dev/xvda", "Ebs": { "VolumeSize": "8", "VolumeType": "gp2" } }, { "DeviceName": "/dev/xvdb", "VirtualName": "ephemeral0" }] } } }, "Outputs": { "PublicName": { "Value": {"Fn::GetAtt": ["Server", "PublicDnsName"]}, "Description": "Public name (connect via SSH as user ec2-user)" } } }
- 代码分析,两块实例存储的磁盘(
disk
)
- 在
EC2
上执行fdisk -l
查看磁盘状况
注意,Cloudformation
中的"VirtualName": "ephemeral0"
就是第二块disk
的mount point
名字/media/ephemeral0
。
- 在
EC2
上查看卷volume
的状况
可以看到EBS
的卷volume
这里,并没有多出来定义卷volume
,因为定义的/dev/xvdb
这里的实例存储就单单是一个实例存储,并不是独立的卷volume
,所以不会出现在这里。
3. EBS
和实例存储的不足
EBS
和实例存储
EBS
与EC2
独立存在,EC2
被删除了之后,仍然可以存在,但是不足之处是不能由多个EC2
同时使用。不能同时进行文件共享。
实例存储
不能够独立与EC2
存在,EC2
被删除了之后,就会消失,不是独立存在的卷volume
。
那么问题来了,如何利用块存储,进行EC2
之间的文件共享,让EC2
等实例件共享文件呢,下次继续练习amazon Elastic File System
,即EFS
。