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
相关推荐
小鹿撞出了脑震荡32 分钟前
SQLite3语句以及用实现FMDB数据存储的学习
数据库·学习·sqlite
lcintj40 分钟前
【WPF】Prism学习(九)
学习·wpf·prism
夜流冰1 小时前
工程师 - 智能家居方案介绍
笔记
一只小菜鸡..1 小时前
241121学习日志——[CSDIY] [InternStudio] 大模型训练营 [11]
学习
2402_871321951 小时前
MATLAB方程组
gpt·学习·线性代数·算法·matlab
2301_775281191 小时前
法语旅游常用口语-柯桥学外语到蓝天广场泓畅学校
学习·生活·旅游
SSL_lwz2 小时前
P11290 【MX-S6-T2】「KDOI-11」飞船
c++·学习·算法·动态规划
垂杨有暮鸦⊙_⊙2 小时前
阅读《先进引信技术的发展与展望》定装和探测部分_笔记
笔记
weixin_478689762 小时前
【二分查找】【刷题笔记】——灵神题单1
笔记