**文章首发于INFOQ
亚马逊云EC2提供了很多灵活的存储选项,有本地的EBS,instance store,还有网格存储的EFS和S3。
EBS
EBS是长期的持久卷,提供块级别的持久性存储。适合文件系统的保存和数据库的主存储。同样也分为SSD,HDD和磁带。
EBS和EC2不在同一个物理设备上,每次对EC2的stop/start操作都会迁移新的硬件,再启动时候也会挂原来的EBS,同时也可以对EBS进行备份,挂载和卸载,创建快照的时候不必关机,时间点从点击创建快照开始,后边的数据都不会备份,同样也可以对快照进行加密,共享等操作。
通用型SSD:gp2和gp3,能够满足大多数场景,在价格和功能之后实现平衡。
预置 IOPS SSD:io1和io2,适合IO密集型负载,创建时可以调整IOPS
吞吐量优化型 HDD: st1,低成本高吞吐量,适合大型顺序冷数据数据处理。
冷 HDD:sc1,适合低频的高吞吐量存储
磁带:上一代卷,磁介质,速度最慢
instance store
与EBS不同,instance store是附加到EC2物理机上的磁盘(NVME/SATA/HDD),也就说在EC2 的stop/start 操作更换底层硬件的时候,会无法迁移该部分数据,换句话说,当停止实例的时候,instance store会被清空。十分适合当作临时大吞吐量的场景的缓存。
根据实例存储的类型需要不同的操作:
NVMe :启动的时候会自动挂载
非 NVMe :启动的时候手动指定块设备,然后格式化
EFS
EFS其实就是NFSV4在亚马逊云上的实现,而且在原有的基础上添加了多可以用区备份,IAM权限控制,而且能和云上的VPC网络更好的集成,目前只能在VPC内部进行访问,跨VPC需要使用DX/VPC peering等手段进行打通。
EFS只有Linux系统可用,提供普通模式和最大性能模式,其实普通模式已经可以满足99.9%的场景了。同时有标准和不经常访问两种存储类别,可以使用生命周期策略在存储类别之间迁移数据。
sudo yum install -y amazon-efs-utils
UUID=90e29211-2de8-4967-b0fb-16f51a6e464c / xfs defaults, noatime 11
file-system-id/ /efs/wp-content efs netdev, tls, iam 00
S3
Mountpoint可以把S3当作数据盘挂载成为数据盘,相比于开源的s3fs,这次是亚马逊云官方的工具,会使用EC2上配置的IAM凭证进行操作。
这似乎是为了大数据ETL处理进行设计的,仅仅支持文件的列出,创建和读取,创建文件夹无法同步,也无法对现有的文件进行修改和删除,最大可以读取5T的单个文件。不过对于Glacier 和Intelligent,该工具无能为力。
rpm系安装:
wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
sudo yum install -y ./mount-s3.rpm
Deb系安装:
wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb
sudo apt-get install -y ./mount-s3.deb
安装好之后,我们新建挂载点(我这里叫做/s3_data)sudo mkdir /s3_data
,,然后把再把存储桶挂载到这个挂载点上,mount-s3 bucketname /s3_data
,这个默认的权限是755。在mount之后,mountpoint这个程序会在后台进行,如果不再使用,需要使用sudo umount /data 进行删除。
参考文档:
EBS: https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/AmazonEBS.html
实例存储:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/InstanceStorage.html
EBS和实例存储区别:https://repost.aws/zh-Hans/knowledge-center/instance-store-vs-ebs
EFS:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/AmazonEFS.html
Mountpoint https://aws.amazon.com/cn/about-aws/whats-new/2023/03/mountpoint-amazon-s3/ https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/mountpoint.html