私はこの問題を自分で理解するのに 1 日の大部分を費やしました。また、ayurchen のリンクを引き上げるには Google キャッシュ検索が必要だったため、ayurchen の非常に役立つ回答を参考にして、もう少し詳細なウォークスルーを投稿したいと思いました。
スワップ領域とは何ですか? なぜ使用するのですか?
スワップ領域は、実際の物理メモリが混雑し始めたときに、メモリからオブジェクトを格納するために Linux (および他のほとんどのオペレーティング システム) によって使用されるディスク領域です。ディスクは一般にメモリよりも遅いため、Linux は最近使用されていないオブジェクトを最初にスワップに格納し、できるだけ多くをメモリに保持します。一般に、可能であれば、メモリと同じサイズのスワップ スペースを用意することをお勧めします。スワップ領域の詳細については、こちらを参照してください。
これはどこに設定すればよいですか?
私も最初に使用した Ubuntu 12.04 LTS AMI は、ストレージ デバイスのサイズと数が異なる可能性があるため、最初はスワップ スペースなしで構成されています。ただし、ほとんどの場合、大容量の無料一時ストレージ デバイスが自動的に付属しています。S3 ストレージはコストによって制限されるため、エフェメラル ドライブはスワップ ファイルに適した場所です。私のものは、質問に記載されているデバイス名と同じ/dev/xvdb
ですが、インスタンスの起動時にこれを構成できます。
エフェメラル ストレージ ドライブにスワップ領域を設定するにはどうすればよいですか?
スワップ領域は、単一のファイルまたはデバイスのパーティションに設定できます。ファイルはディスク上の隣接していないブロックで表すことができますが、パーティションは隣接するブロックの事前定義されたセットです。ディスクの読み取り/書き込みは高速であるため、読み取りヘッドを長距離移動し続ける必要がないため、パーティションを使用するとパフォーマンスが向上します。(これが、上記の質問がファイルを一時的な解決策として使用することを軽視している理由です。)
Linux には、fdisk、sfdisk、parted など、ディスク パーティションを管理するための多くのプログラムが付属していsfdisk
ます。シェル スクリプトから必要なすべての引数を受け入れることができるため、 を使用します。インスタンスを「停止」するたびに一時ストレージが失われるため、これは重要です。したがって、インスタンスが開始されるたびに自動的に実行されるスクリプトをファイルに設定します/etc/rc.local
。
# Unmount the drive in-case it is already mounted. Umount throws an error if
# it wasn't mounted, so we add || : to continue the script in that case
umount /dev/xvdb || :
# Each line below is a partition (4 maximum master partitions for this partition
# type). Can can generally use the default arguments, supplying only the amount
# of space we want in blocks (512 came out to ~4gb for me), and the partition
# type (82 for swap, 83 for general linux is default). This will create:
# dev/xvdb1 with 1024 blocks
# dev/xvdb2 with the remainder of the disk
sfdisk /dev/xvdb << EOF
,512,82
;
;
;
EOF
# Now we format the swap partition:
mkswap /dev/xvdb1
# And the remainder. You can choose amoung the various filesystem types, but
# make sure you have the necessary formatter installed. To check, ls /sbin/mk*
mkfs.ext4 /dev/xvdb2
最後に、マウント情報を に含めることを好みました/etc/fstab
。これは、利用可能なさまざまなデバイスを自動的に処理する方法を規定する Ubuntu のシステム ファイルです。また、起動時に実行されます。
/dev/xvdb1 swap swap sw,nobootwait 0 0
/dev/xvdb2 /mnt2 ext4 defaults,nobootwait 0 0
nobootwait オプションは、Ubuntu がブート時にハングしないようにするためのものです。回復。"
/mnt2
これを mkdir でマウントする予定の場所または場所にフォルダーを作成してください。
これで発生している問題をデバッグするにはどうすればよいですか?
rc.local スクリプトをsudo /etc/rc.local
実行して、問題がないかどうかを監視できます。sudo fdisk -l
実行後に新しいパーティションが表示されるはずです。問題がなければ、デバイスを でマウントしてみてくださいsudo mount /dev/xvdb1
。これにより、fstab に保存した構成が使用されます。それでもうまくいかない場合は、マウント パラメータをいじってみて、それに応じて fstab を調整してください。