Amazon EC2で「Instance Store Volumes」ストレージを使用する方法は?


18

AWSによると、中規模EC2サーバーで850 GBのストレージを取得しました。しかし、Amazon Linux AMIを作成すると、提供されている850 GBを使用できません。

インスタンスを作成すると、インスタンスストアボリュームのストレージデバイス構成に、そのデバイスが/ dev / sdbにあることが示されますが、VMを起動すると、/ dev / sda1が見つかります。

このストレージのマウントを手伝ってくれませんか?ありがとうございました

また、Amazonがインスタンスストレージは長期間の使用には安全ではなく、EBSの使用を好むと主張する場合、それらの850 GBのポイントは何ですか?

ありがとう


どの特定のインスタンスタイプを実行しようとしていますか?c1.medium?m1.medium?他に何か?
エリックハモンド

1
ここでEC2上のインスタンスストレージについての学習のための2つの偉大なリソースです:docs.amazonwebservices.com/AWSEC2/latest/UserGuide/...docs.amazonwebservices.com/AWSEC2/latest/UserGuide/...
エリック・ハモンド

回答:


10

インスタンスが停止したときに永続的ではないインスタンスローカルストレージの使用は非常に簡単です。一時的なものに役立つ非常に大きな領域です。これらはにマウントするのに最適なターゲットであり/tmp、サーバーが非常に大きなファイルを一時的に処理する場合に非常に役立ちます。

たとえば、アップロードされたビデオファイルの音声からテキストへの変換を行うインスタンスのグループを構築している場合、インスタンスローカルストレージは、インプロセスファイルを配置したいだけです。ファイルが処理されている間、数時間そこにあるかもしれませんが、一度処理されると削除され、別のファイルが使用されます。そのためにEBSは必要ありません。そのようなストレージをEBSではなくインスタンスローカルから実行する方がはるかに安価です。

インスタンスローカルストレージは、長期ストレージではなく、処理を実行するためのスクラッチスペースとして使用することを目的としています。ワークロードがスクラッチスペースを何も使用していない場合、または必要なものがあまり重要ではないほど小さい場合、それは適切ではありません。


16
エフェメラルストレージまたはインスタンスストアは、インスタンスの再起動後も持続します!停止/開始、終了、または一部のインスタンスのハードウェア障害にまたがって持続することはありません。再起動と停止/開始の違いについて書いた記事を次に示し
Eric Hammond

27

例えば/ mntの下にまだマウントされておらず、ファイルシステムが既に作成されていない場合は、次のようにします。

  1. デバイス名を確認してください

    sudo fdisk -l

  2. ボリュームをマウントするディレクトリを作成します

    sudo mkdir / mnt

  3. ボリューム上にファイルシステムを作成します(ボリューム上に新しいファイルシステムを作成するため、正しいボリュームを選択してください)

    sudo mkfs.ext4 / dev / xvdj

  4. マウントボリューム

    sudo mount -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デバイスが表示されないことがあり
エリック・ハモンド

@EricHammondのコメントは、本当に私の探求への答えでした-私はそれらをどこにも見ませんでした-でもfdisk -l
ピーターV.モーチ14年

デバイスが表示されない場合は、を使用してみてくださいlsblk
volker238

これらの指示はボリュームをマウントしますが、新しいファイルをボリュームに書き込もうとすると「アクセスが拒否されました」と表示されます。権限の何が問題なのかを整理できません。何か案は?
MikeB

lsblk -fディスクボリュームを見つける最良の方法です-マウントされているボリュームはマウントパスとともに表示され、ボリュームのラベルが表示されます(LinuxでファイルシステムをマウントするときにUUIDまたはラベルを使用することをお勧めします)。
RichVel

1

AWSの世界では、これらは非常に異なるものであるため、起動時と起動/停止サイクル後に実行できるUbuntu用のスクリプトを作成しました。再起動しても同じエフェメラルディスクがあり、マウントするだけです(/ 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の引用された値と一致する必要があることです。\bYMMV を使用するように更新しました。これ/mntは、自分で変更できるデフォルトであり、単なる例です。さらに、パラメータをスクリプトに渡すと、代わりにそのマウントポイントが使用されます。set -e失敗するとスクリプト全体が終了するように追加します
DanJGer

修正:から\bに変更\s
DanJGer

0

インスタンスストアのマウントもイメージによって異なります。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/add-instance-store-volumes.html

インスタンスを起動すると、指定されたAMIによってデフォルトのブロックデバイスマッピングが提供されます。追加のインスタンスストアボリュームが必要な場合は、起動時にインスタンスに追加する必要があります。AMIブロックデバイスマッピングで指定されたデバイスを省略することもできます。

一部の画像は、利用可能なすべてのリソースを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.