酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Elastic Block Store(EBS)をAWSのEC2にヒモ付

AWSのEC2にElastic Block Store(EBS)を紐付けする手順です。サーバを新規作成した際には、仕様に応じて事前にストレージの容量設計をしておくと後で不要なエラーを発生させずに、捗ります。てか、よくそこで数カ月後にハマりますw

昨日やっていて設定でハマってしまったので忘備録を兼ねてメモです。


公式ドキュメント

Amazon EBS ボリュームを使用できるようにする
AWSは進歩がすごく早いので、ググった情報だとうまく動かず、かなりハマってしまいました。公式ドキュメントが一番信頼できると実感しています。

手順

AWSのコンソール画面内のEBS(Elastic Block Store)でボリュームを作成。インスタンスに紐付け。

# 用語説明
device_name => /dev/xvdx # ボリュームを割り当てると自動で設定される
mount_point => /path/to # 割り当てたいフォルダを作成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 使用可能なディスクを確認するコマンド
lsblk

# ext4 ファイルシステムを作成
sudo mkfs -t ext4 device_name

# ボリュームを割り当て
sudo mkdir mount_point
sudo mount device_name mount_point

# 再起動時に自動で割り当てされるように設定
sudo cp /etc/fstab /etc/fstab.org
sudo vim /etc/fstab
# 下のように書き換え
# /dev/xvdx       /path/to  ext4    defaults    0       2

# Waring/Errorが出なければ設定成功
sudo mount -a

おまけ: MySQLのデータディレクトリをEBSに差し替え

MySQLにログインして以下を実行すると、データベースのディレクトリが出ます。

1
2
mysql -u root -p
show variables like 'datadir';

ここで出たデータベースのデータディレクトリを/path/to/mysql/new/とします。ここをEBSのフォルダに差し替えます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# MySQLを停止
sudo /etc/init.d/mysql stop

sudo vi my.cnf
# ↓ 以下の様に変更
innodb_data_home_dir=/path/to/mysql/new/
innodb_log_group_home_dir=/path/to/mysql/new/

sudo vi /etc/init.d/mysql
# ↓ 以下の様に変更
datadir=/path/to/mysql/new/

# 旧ディレクトリ => 新ディレクトリへのコピー
cp -pR /path/to/mysql/old/* /path/to/mysql/new/

# フォルダの権限変更
chmod -R mysql.mysql /path/to/mysql/new

# MySQLを再起動
/etc/init.d/mysql start

# 動作確認(ログインできること・データ変更できることを確認)
mysql -u root -p

# 古いフォルダを削除
rm -rf /path/to/mysql/old

インフラは苦手なので、いろいろご指摘頂ければ幸いです!

Special Thanks

MySQLのデータベースの場所を調べたり、ディレクトリ変更したりのメモ

MySQLのデータディレクトリを移動する

おすすめの書籍