aws(学习笔记第九课) 使用AWS的网络存储EBS

aws(学习笔记第九课)

  • 使用AWS的网络存储EBS

学习内容:

  • 使用AWS的网络存储EBS

1.使用AWS的网络存储EBS

  1. EBS是什么
    EBSaws Elastic Block Store的缩写,就是AWS的弹性数据块存储。EBS有如下特点。
    • 它不属于EC2的一部分,独立存在。
    • 可以独立存在或者同一时间挂载到一个EC2实例上。
      注意,同一时间不能挂在到两个以及两个以上的EC2
    • 可以像普通的磁盘一样使用。
  2. 练习使用EBS
    • 创建一个EBS,之后用EC2进行挂载。

      json 复制代码
      {
      	"AWSTemplateFormatVersion": "2010-09-09",
      	"Description": "(EBS)",
      	"Parameters": {
      		"KeyName": {
      			"Description": "Key Pair name",
      			"Type": "AWS::EC2::KeyPair::KeyName",
      			"Default": "my-cli-key"
      		},
      		"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"
      		},
      		"AttachVolume": {
      			"Description": "Should the volume be attached?",
      			"Type": "String",
      			"Default": "yes",
      			"AllowedValues": ["yes", "no"]
      		}
      	},
      	"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"}
      		}
      	},
      	"Conditions": {
      		"Attached": {"Fn::Equals": [{"Ref": "AttachVolume"}, "yes"]}
      	},
      	"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
      				}]
      			}
      		},
      		"IamRole": {
      			"Type": "AWS::IAM::Role",
      			"Properties": {
      				"AssumeRolePolicyDocument": {
      					"Version": "2012-10-17",
      					"Statement": [
      						{
      							"Effect": "Allow",
      							"Principal": {
      								"Service": ["ec2.amazonaws.com"]
      							},
      							"Action": ["sts:AssumeRole"]
      						}
      					]
      				},
      				"Path": "/",
      				"Policies": [
      					{
      						"PolicyName": "ec2",
      						"PolicyDocument": {
      							"Version": "2012-10-17",
      							"Statement": [{
      								"Effect" : "Allow",
      								"Action" : ["ec2:DescribeVolumes", "ec2:CreateSnapshot", "ec2:DescribeSnapshots", "ec2:DeleteSnapshot"],
      								"Resource": "*"
      							}]
      						}
      					}
      				]
      			}
      		},
      		"IamInstanceProfile": {
      			"Type": "AWS::IAM::InstanceProfile",
      			"Properties": {
      				"Path": "/",
      				"Roles": [{"Ref": "IamRole"}]
      			}
      		},
      		"Server": {
      			"Type": "AWS::EC2::Instance",
      			"Properties": {
      				"IamInstanceProfile": {"Ref": "IamInstanceProfile"},
      				"ImageId": {"Fn::FindInMap": ["EC2RegionMap", {"Ref": "AWS::Region"}, "AmazonLinuxAMIHVMEBSBacked64bit"]},
      				"InstanceType": "t2.micro",
      				"KeyName": {"Ref": "KeyName"},
      				"SecurityGroupIds": [{"Ref": "SecurityGroup"}],
      				"SubnetId": {"Ref": "Subnet"}
      			}
      		},
      		"Volume": {
      			"Type": "AWS::EC2::Volume",
      			"Properties": {
      				"AvailabilityZone": {"Fn::GetAtt": ["Server", "AvailabilityZone"]},
      				"Size": "5",
      				"VolumeType": "gp2"
      			}
      		},
      		"VolumeAttachment": {
      			"Type": "AWS::EC2::VolumeAttachment",
      			"Condition": "Attached",
      			"Properties": {
      				"Device": "/dev/xvdf",
      				"InstanceId": {"Ref": "Server"},
      				"VolumeId": {"Ref": "Volume"}
      			}
      		}
      	},
      	"Outputs": {
      		"PublicName": {
      			"Value": {"Fn::GetAtt": ["Server", "PublicDnsName"]},
      			"Description": "Public name (connect via SSH as user ec2-user)"
      		},
      		"VolumeId": {
      			"Value": {"Ref": "Volume"},
      			"Description": "Volume id"
      		}
      	}
      }
    • 创建结果

    • EBS上创建文件系统
      这里,还没有对EBS创建文件系统,接下来创建文件系统

      • 创建文件系统

        shell 复制代码
        sudo mkfs -t ext4 /dev/xvdf
      • 创建mount point进行挂载

        shell 复制代码
        mkdir /mnt/volume
        mount /dev/xvdf /mnt/volume/
      • 确认mount情况

      • touch文件在新的文件系统上

    • 尝试卸掉挂载

      • EBS最大的优点是独立于EC2,可以尝试将它umont

        shell 复制代码
        sudo umount /mnt/volume

        更新cloudformation,将AttachVolume修改为No

      • 可以查看更改集

      • 卸载之后,查看结果

        shell 复制代码
        fdisk -l
      • 更改AttachVolume,进行重新的Attach

      • 查看Attach之后的结果

      • 重新进行mount

        shell 复制代码
        mount /dev/xvdf /mnt/volume/
        cd /mnt/volume/
        cat ebs.txt
相关推荐
布丁不叮早起枣祈14 分钟前
11.05学习
学习
与君共勉121381 小时前
Zabbix proxy 主动模式的实现
运维·学习·zabbix
minos.cpp2 小时前
《Java并发编程的艺术》笔记 —— 第一章
java·笔记·idea
青椒大仙KI112 小时前
24/11/5 算法笔记 DBSCAN聚类算法
笔记·算法·聚类
无厌3203 小时前
Django学习-项目部署
学习
无敌最俊朗@4 小时前
unity3d————球形插值知识点
开发语言·学习·unity·c#·游戏引擎
瑞金彭于晏8 小时前
墨菲定律是什么?超详细+举例子+通俗易懂版!
笔记
我是汉堡请多指教8 小时前
网络学习笔记---客户端和服务端
笔记
FF_y9 小时前
Hive学习笔记
hive·笔记·学习