AWS系列之三 使用EBS

简介: Amazon Elastic Block Store(EBS)可作为EC2实例的持久性数据块级存储。其具有高可用性和持久性的特点,可用性高达99.999%。给现有的EC2实例扩展新的存储块只需要几分钟的时间,省时省力。

Amazon Elastic Block Store(EBS)可作为EC2实例的持久性数据块级存储。其具有高可用性和持久性的特点,可用性高达99.999%。给现有的EC2实例扩展新的存储块只需要几分钟的时间,省时省力。每个EBS块都被放置在一个特定的可用区内,并且会自动维护一个副本,随时保护数据安全。

Amazon EBS共提供三种硬盘类型,SSD(固态硬盘), Provisioned IOPS SSD(特供IOPS固态硬盘)和Magnetic(普通硬盘)。SSD是默认的EC实例的硬盘格式(凶残啊!Amazon真是有钱,自从咱的本本换了SSD后,也离不开SSD了。)Provisioned IOPS SSD更凶残,具有高一致性及超低延迟的性能,专门设计用于I/O密集型操作,比如数据库。IOPS全称为Input/Output Operations Per Second,即每秒进行读写(I/O)操作的次数,用来衡量随机访问的性能。Provisioned IOPS SSD的每GB IOPS可达30。Magnetic Volumes就是俗称的磁卷了,它最便宜,当然性能也最差了。如果你的应用程序不是I/O密集型的,对数据的访问不是很频繁,使用该类型就比较划算。

EBS还有一个功能就是很方便的创建快照,并保存到Amazon S3上去。EBS的快照是增量存储的。比如你有一块100G的硬盘,第一次快照使用了100G容量,第二次快照时只有5G的数据发生了变化,那么你总共只需花105G的存储费用。当然你不不必担心删除其中一个快照导致数据丢失,因为删除一个快照时,系统只会删除其中不会被其它快照使用的数据,所以不会影响其它快照。

好了,接下来是本文的两个主要任务是两个。第一个任务是给一个EC实例附加一个新的EBS卷,并且加入到当前EC实例的文件系统中。第二个任务是为该EC实例创建一个快照。

首先当然是准备工作了,创建一个新的EC2实例。如何创建上一篇文章已经详细介绍了,这里不再累述。如果还没有AWS account的同学可以使用可以qwiklabs提供的免费实验来进行该练习。地址是https://run.qwiklabs.com。说实话qwiklabs真是个好东西,如果我使用自己的account来进行练习,要花不少钱。而qwiklabs里面有几个免费实验,使用AWS的所有资源不收任何费用,真是业界良心。

EC2创建完毕后,应该是这个样子。

img_f1d4f69b239a810ce725c1b29d7060b9.png

然后远程ssh进去。

1
$: ssh ec2-user@54.191.59.163 -i ~/Downloads/key.pem

先查看下当前的磁盘情况。

1
2
3
4
5
[ec2-user@ip-172-31-17-37 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  1.1G  6.6G  14% /
devtmpfs        486M   56K  486M   1% /dev
tmpfs           499M     0  499M   0% /dev/shm

可以看出当前磁盘总大小在8G左右,有三个文件系统。

接下来就创建一个硬盘。

点击EC2控制面板左侧的Volumes按钮,来到磁盘的控制面板。

img_da117b42a16bb8ec238230cb84085d7c.png

这里展示的一块硬盘就是当前ec2实例使用的硬盘。

我们点击上面的Create Volumes来新添加一块硬盘。

img_7b7eeba207984c9f96793d94735448d9.png

硬盘类型就是我上文的说的那几种,IOPS越高,硬盘就越贵,可用区的选择一定要和当前要使用的EC2实例保持一致,要不然会无法跨可用区附加硬盘。如果提供snapshot ID的话,新创建的硬盘会具有该快照的数据。

硬盘创建完毕后如下图所示。

img_7b0da5a848ab3f9d0ef899a3fbcd0dbe.png

目前它的状态是可用的,如果将其附加到EC2实例则会变为in-use。

点击Action按钮并选择Attach Volume命令,可以将该硬盘附加到EC2实例上。

img_74d0718696d30cec682698ec1202c539.png

在该界面中选择实例名及映射的设备地址,然后附加。

img_4cf4338412019f89d267a20afc332bd7.png

可以看到该硬盘状态已经发生改变。

那么再回到终端中查看磁盘情况。

1
2
3
4
5
[ec2-user@ip-172-31-17-37 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  1.1G  6.6G  14% /
devtmpfs        486M   60K  486M   1% /dev
tmpfs           499M     0  499M   0% /dev/shm

跟以前的一模一样,没有看到新添加的20G硬盘。这是怎么回事那?这是因为你虽然给机器添加了一块硬盘,但是还没有格式化和创建文件系统,并将文件系统添加到EC2的文件系统树上来。

我们换另一个命令来查看存储情况。

1
2
3
4
5
[ec2-user@ip-172-31-17-37 ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdf    202:80   0  20G  0 disk

这里可以看到有一块20G的大硬盘xvdf,但是没有MOUNTPOINT,这个MOUNTPOINT你可以理解为EC2实例上针对这个硬盘的根地址。

细心的读者可能会发现我们附加硬盘时输入的地址是/dev/sdf,为什么命令行中显示的是xvdf那?这是因为调皮的操作系统内核给改了,不同的Linux发行版其修改后的地址也会不太一样。

使用file命令来查看该块硬盘有没有建立文件系统。

1
2
[ec2-user@ip-172-31-17-37 ~]$ sudo file -s /dev/xvdf
/dev/xvdf: data

如果输出是data,说明该块硬盘还未创建文件系统。

使用下述命令来给xvdf来创建文件系统。

1
[ec2-user@ip-172-31-17-37 ~]$ sudo mkfs -t ext4 /dev/xvdf

然后再用file命令确认。

1
2
[ec2-user@ip-172-31-17-37 ~]$ sudo file -s /dev/xvdf
/dev/xvdf: Linux rev 1.0 ext4 filesystem data, UUID=1e14ec91-156a-4eb5-8846-cb5f2fa51b64 (extents) (large files) (huge files)

bash

可以看到该块硬盘已经建立了ext4格式的文件系统。

接下来要将该文件系统加入到当前实例的文件系统树中,这里要使用mount命令。

1
2
[ec2-user@ip-172-31-17-37 ~]$ sudo mkdir /boot2
[ec2-user@ip-172-31-17-37 ~]$ sudo mount /dev/xvdf /boot2

搞定,现在看看EC2实例的存储情况。

1
2
3
4
5
[ec2-user@ip-172-31-17-37 ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdf    202:80   0  20G  0 disk /boot2

可以在/boot2目录下随意创建文件和文件夹了。

这里并不是万事大吉的时候,我们需要将该MOUNTPOINT加入到系统文件中,要不然系统重启后还是找不到该硬盘。编辑/etc/fstab文件,在其中加入以下行。

1
/dev/xvdf       /data   ext4    defaults,nofail        0       2

这样就不怕重启的时候丢失该MOUNTPOINT了。添加完毕以后可以试一下fstab文件是否能正常运行。

1
[ec2-user@ip-172-31-17-37 ~]$ sudo mount -a

如果没有错误就一切万事大吉,如果有错误而你重启了电脑的话,你就等着哭吧。

这是第一个任务,第二任务是给现有硬盘创建快照,非常简单。回到Volumes控制面板,选择Action里的Create Snapshot按钮。

img_95a56b276a8c8cc2d591cb26147cc320.png

等一会snapshot就会创建成功。

img_cdacfe5cd0d7f65a5f6b169b00995199.png

相关文章
|
1月前
|
存储 API 云计算
AWS基础
AWS基础
55 2
|
1月前
|
存储 人工智能 大数据
云计算平台:AWS、Azure和Google Cloud的比较与选择
在当今数字化时代,云计算平台成为了企业和个人的首选。本文将重点比较三大主流云计算平台:AWS、Azure和Google Cloud,从性能、功能、可用性以及定价等方面进行综合评估,帮助读者更好地选择适合自己需求的云计算平台。
|
1月前
|
Kubernetes 监控 云计算
Docker与云计算平台集成:AWS、Azure、GCP完全指南
Docker和云计算平台的结合,如AWS(Amazon Web Services)、Azure(Microsoft Azure)和GCP(Google Cloud Platform),为现代应用的构建和部署提供了巨大的便利性。本文将深入研究如何与这些主要云计算平台集成Docker,提供更多示例代码和详细指南,帮助大家更全面地利用这些强大的工具。
|
1月前
|
机器学习/深度学习 人工智能 安全
【专栏】云计算平台的比较与选择:AWS、Azure 和 Google Cloud
【4月更文挑战第28天】本文对比了AWS、Azure和Google Cloud三大云计算平台,强调了解它们的差异对于企业选择合适云服务的重要性。AWS以其丰富功能和广泛覆盖领先,Azure与微软生态紧密集成,适合已使用微软技术的企业,而Google Cloud在大数据和AI领域有优势。选择时应考虑服务功能、成本、扩展性、技术支持、安全合规及行业生态。最终决策应基于全面评估以确保为企业提供高效、可靠的云服务。
|
8月前
|
SQL Cloud Native Go
云服务部署:AWS、Azure和GCP比较
云服务部署:AWS、Azure和GCP比较
284 0
|
存储 数据库 开发工具
「技术选型」AWS 和 AZURE的全面比较
「技术选型」AWS 和 AZURE的全面比较
|
消息中间件 并行计算 前端开发
「Azure云架构」Azure云不同的 架构风格
「Azure云架构」Azure云不同的 架构风格
|
存储 负载均衡 监控
在AWS上部署一个网站
在AWS上部署一个网站
127 0
|
运维 Kubernetes 调度
AWS学习笔记-EKS创建and升级集群笔记
AWS学习笔记-EKS创建and升级集群笔记
435 0
AWS学习笔记-EKS创建and升级集群笔记
|
存储 JSON 关系型数据库
【AWS系列】什么是DynamoDB
1. Truncate 操作:DynamoDB不支持 Truncate操作,最简单的办法是删表重建即可;如果需要删掉一部分数据,可以写脚本用scan 查出 PK 的列表逐个进行删除;还可以设置表的过期时间,让这批数据定期失效即可。2. JavaScript 有两个类库:一种使用了 DynamoDB Json其中包括了数据的类型,需要调用相关的marshal 和 unmarshal方法来转换成标准的 Json3.批量操作:DynamoDB 中批量操作有25 的数据量。
344 0
【AWS系列】什么是DynamoDB