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
相关推荐
天天爱吃肉82181 小时前
第十篇:电源设计的“能量矩阵”——无线充电与碳化硅LLC谐振
笔记·矩阵·汽车
Luis Li 的猫猫2 小时前
深度学习中的知识蒸馏
人工智能·经验分享·深度学习·学习·算法
鹿鸣悠悠4 小时前
第二月:学习 NumPy、Pandas 和 Matplotlib 是数据分析和科学计算的基础
学习·numpy·pandas
Java能学吗5 小时前
2.17学习总结
数据结构·学习
靡不有初1116 小时前
CCF-CSP第31次认证第二题——坐标变换(其二)【NA!前缀和思想的细节,输出为0的常见原因】
c++·学习·ccfcsp
我爱学习_zwj9 小时前
4.从零开始学会Vue--{{组件通信}}
前端·javascript·vue.js·笔记·前端框架
虾球xz9 小时前
游戏引擎学习第108天
学习·游戏引擎
好评笔记9 小时前
深度学习笔记——循环神经网络之LSTM
笔记·rnn·深度学习
初尘屿风10 小时前
小程序类毕业设计选题题目推荐 (29)
spring boot·后端·学习·微信·小程序·课程设计
Dawndddddd10 小时前
网络安全之攻防笔记--通用漏洞SQL注入之MySQL&mssql&postgresql
笔记·sql·web安全