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是这次的练习内容。

- 进行备份练习
-
查询建立的
volumeshellaws ec2 --region ap-northeast-1 describe-volumes --filters "Name=size,Values=5" --query "Volumes[].VolumeId" --output text注意,在这里需要指定
region -
建立
snapshot快照shellaws --region ap-northeast-1 ec2 create-snapshot --volume-id vol-026a77a7e0b5a86ae --query "SnapshotId" --output text
这样就建立好了当前的snapshot。
在快照里面,touch了一个测试文件。shell[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命令shellmkdir /mnt/volume mount /dev/xvdf /mnt/volume -
之后查看
snapshot上的文件
发现文件都是存在,都已经恢复了。
注意,删除环境的时候,EBS的卷,已经mount的部分,需要执行umount之后,再进行EC2停止。

-
2. AWS实例存储
- 实例存储和
EBS的区别
实例存储和EBS相反,它不是独立EC2用户虚拟服务器的,它依存于EC2。

- 使用
Cloudformation创建实例存储-
Cloudformation代码json{ "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。
