如何在Amazon EC2中使用“实例存储卷”存储?


18

根据AWS的说法,中型EC2服务器具有850 GB的存储空间。但是当我创建Amazon Linux AMI时,无法使用所提供的850 GB。

创建它时,确实在实例存储卷的存储设备配置中显示了它的设备将位于/ dev / sdb,但是当我启动VM时,我只是找到了/ dev / sda1。

您能帮我安装此存储吗?谢谢

另外,当亚马逊声称实例存储对于长期使用不安全并且应该优先使用EBS时,那么这850 GB的意义何在?

谢谢


您尝试运行哪种特定的实例类型?c1.medium?m1.medium?还有什么吗
埃里克·哈蒙德

Answers:


10

使用实例本地存储在实例停止时不是持久性的,这非常简单:这是一个很大的空间,可用于临时事物。它们是安装到的理想目标,/tmp如果您的服务器临时处理非常大的文件,它们将非常有用。

例如,如果您要构建一组实例来对上载的视频文件进行语音到文本的转换,则本地实例存储就是您要放入处理中文件的东西。在处理文件的过程中,它可能会存在几个小时,但是一旦完成,便可以将其删除,并占用另一个文件。您不需要EBS,并且在实例本地而不是EBS之外运行这种存储便宜得多。

实例本地存储旨在用作运行处理的暂存空间,而不是长期存储。如果您的工作负载不占用任何暂存空间,或者所需的资源太小而不重要,那么它就不适合您。


16
临时存储或实例存储确实会在实例重新启动后持续存在!它不会在停止/启动,终止或某些实例硬件故障期间持续存在。这是我写的关于重新启动与停止/启动之间的区别的文章:alestic.com/2011/09/ec2-reboot-stop-start
Eric Hammond,

27

如果尚未将其挂载在例如/ mnt下,并且尚未创建文件系统,请执行以下操作:

  1. 检查设备名称

    须藤fdisk -l

  2. 将目录建立到您要挂载卷的位置

    须藤mkdir / mnt

  3. 在卷上创建文件系统(确保选择正确的卷,因为这将在卷上创建新的文件系统)

    须藤mkfs.ext4 / dev / xvdj

  4. 挂载量

    须藤挂载-t ext4 / dev / xvdj / mnt

  5. 如果要在重新启动后保留挂载,请打开/ etc / fstab并将挂载添加到其中

    echo“ / dev / xvdj / mnt auto noatime 0 0” | sudo tee -a / etc / fstab

  6. 通过挂载所有文件来确保fstab没问题

    挂载-a


5
根据实例类型,您首先需要使用block-device-mapping选项将实例存储卷附加到实例。如果不这样做,您甚至可能看不到/ dev下的设备
Eric Hammond 2012年

@EricHammond的评论确实是我追求的答案-我什至没有在任何地方看到它们-即使在fdisk -l
Peter

如果看不到该设备,请尝试使用lsblk
volker238

这些说明为我安装了该卷,但是尝试向该卷中写入新文件将导致“访问被拒绝”。我无法弄清楚权限出了什么问题。有任何想法吗?
MikeB

lsblk -f这是查找磁盘卷的最佳方法-挂载的所有卷都将显示挂载路径,并显示卷的标签(建议在Linux上挂载文件系统时使用UUID或标签)。
RichVel

1

我为Ubuntu创建了一个脚本,该脚本可以在启动时以及启动/停止周期后运行,因为在AWS领域,这是两个截然不同的事情。当您重新启动时,您仍然拥有相同的临时磁盘,而您所需要做的就是安装(/ etc / fstab应该会自动处理),但是当实例停止然后重新启动时,您会得到一个新的未格式化的临时磁盘,需要更多的爱才能获得准备启用。只要您有正确的/ etc / fstab条目,您就可以随时运行它,它将根据需要安装/格式化设备。它会使用安装点的参数,但如果未提供,它将采用/ mnt。您可以调用脚本mount_ephemeral.sh并以root用户身份在启动服务中运行。

#!/bin/sh
set -e
mountPoint=${1:-'/mnt'}
rawDevice=$(grep "\s$mountPoint\s" /etc/fstab |cut -f1)
#echo checking $mountPoint on $rawDevice
[ "$rawDevice" = "" ] && { echo -e "$mountPoint not in /etc/fstab"; exit 1; }
mountpoint -q $mountPoint
[  "$?" = "0" ] && { echo -e "$mountPoint mounted"; exit; }
hasFS=$(blkid |grep $rawDevice)
[ ! "$hasFS" = "" ] && { echo -e "$mountPoint has FS:$hasFS"; mount $mountPoint; exit; }
echo initializing $mountPoint on $rawDevice
mkdir -p $mountPoint
mkfs.ext4 $rawDevice
mount $mountPoint
chmod 777 $mountPoint
exit 0

我不希望将其/mnt用作卷的安装点,因为约定是/mnt/foo每个卷都使用的约定。如果您必须在某个时候挂载另一个卷/mnt/bar,那意味着/mnt/mnt/bar挂载时无法卸载卷。grep如果您正在使用,/mnt并且有诸如这样的挂载点,则这很危险/mnt/foo,因为它/mnt可以匹配多行-因此该脚本在某些情况下可能会挂载或mkfs错误的磁盘。
RichVel

由于必须精确匹配,因此找不到其他类似的安装座。问题是fstab中使用的空格需要与grep中的引用值匹配。我已更新使用,\b但使用YMMV。这/mnt只是您可以更改自己的默认设置,仅作为示例。另外,您可以将参数传递给脚本,它将使用该安装点代替。我要添加set -e以便所有失败都将终止整个脚本
DanJGer

更正:从更改\b\s
DanJGer

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.