容量無制限!! NFSからAmazon Elastic File System (EFS) に移行する
今までec2のインスタンスでnfsサーバを立てて運用していましたが、ディスクの使用率が逼迫してくると、ディスクの追加作業が面倒な上に、時間がかかるので、今回、既存のec2 nfsサーバをEFSに移行しちゃおうと考えたわけです。
旧構成
上記、図の通りawsのec2でやってますよ!とはいいつつも、別にec2でなくてもいい構成ですね。一台の、ec2サーバにディスクを盛大に乗っけてnfsサーバにしているわけです。 これを、awsのefsに移行する手順を公開したいと思います
BLUENEXT ELANVITAL ワイヤレスステレオレシーバーAirCLIPII シルバー EVSH-03SR
- 出版社/メーカー: BLUENEXT
- 発売日: 2012/11/09
- メディア: エレクトロニクス
- この商品を含むブログを見る
HanyeTech iPhone6 4.7インチ用液晶保護強化ガラスフィルム スマートフォン ガラスフィルム 硬度9H 超薄0.33mm 2.5D ラウンドエッジ加工
- 出版社/メーカー: HanyeTech
- メディア: Wireless Phone Accessory
- この商品を含むブログ (4件) を見る
Pokémon GO Plus (ポケモン GO Plus)
- 出版社/メーカー: 任天堂
- 発売日: 2016/09/16
- メディア: Video Game
- この商品を含むブログ (8件) を見る
- 出版社/メーカー: Amazon
- 発売日: 2015/09/30
- メディア: エレクトロニクス
- この商品を含むブログ (30件) を見る
新構成
上記通り、ec2で作成したnfsを廃止し、全てefsでかいけつできるように改修するのが今回の目的です
10.0.1.100 の構成
こちらがnfsサーバの構成です
# cat /etc/exports # /usr/local/public 10.0.0.0/16(rw,no_root_squash)
10.0.1.10 の構成
こちらが、nfsクライアントの構成です。ちなみに、例では1台しか載せておりませんが、実際はこれが5-10台あります
# cat /etc/fstab # LABEL=/ / ext4 defaults,noatime 1 1 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/sdb /media/ephemeral0 auto defaults,nofail,comment=cloudconfig 0 2 10.0.0.100:/usr/local/public /usr/local/public nfs defaults 0 0
設定手順
では、早速にnfsからefsに移行する手順を書きたいと思います
amazon EFSの設定
- amazonの管理コンソールを開きます
- 初回は以下のような画面になると思います、「Create file system」をクリックしてください
- 下記のような画面になると思います。とりあえずこのまま進めましょう(これがあとでハマるけど・・)
- タグの設定です。わかりやすいような名前にしましょう
- こんな画面になると思います。「Create file system」をクリックしてください
- EFSの作成中の画面になります。しばらく待ちますと完了します。管理コンソールでの作業は以下の通りです
10.0.1.100 (nfs server)
今回は、efsを作る!だけの話ではなく、旧nfsサーバからのデータ移行も含みますので、コンソールでの作業も必要になります。まずは、nfsサーバでの作業からです。
- 移行用のディレクトリを予め作成しておきます
mkdir -p /public_new chmod -Rf 775 /public_new
- efsサーバにmountします
ここでハマりました、タイムアウトエラーが発生・・・
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).fs-02f33d4b.efs.us-east-1.amazonaws.com:/ /public_new ------------------------------------------------- mount.nfs4: Connection timed out
- SGの設定をデフォルトで進めたのが良くなかったようです
おそらく、他の皆様も、VPCで構築し、独自のSGを設定しているかと思います。そのSGの中に、以下のポート(2379)を追加してください。
- 再度、efsサーバにmountします。こんどは無事に接続できたかと思います
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).fs-65f13f2c.efs.us-east-1.amazonaws.com:/ /public_new
vi /etc/exports --------------------------------------- # /usr/local/public 10.0.0.0/16(rw,no_root_squash)
- データをコピーする
では、早速データ移行を開始しましょう。下記作業は、旧nfsのディレクトリの中身をすべて、efsにコピーする作業になっております
cp -arf /usr/local/public/* /public_new
- ryncする
データコピー中も、データが更新されているかもしれません、コピーが終わったら念のためrsyncして、データを同期しましょう
rsync -avr --delete /usr/local/public/* /public_new
- 接続をumoun する
サーバ側の設定はこれで終わりなので速やかにumountしておきましょう。
umount /public_new
10.0.1.10 (nfs client)
次はnfsクライアントの設定になります。基本的には、マウントポイントを変更するだけです
- 既存のマウントポイントを、アンマウントする
旧mount設定を一旦解除し、efs用のマウントを行います
umount /usr/local/public mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).fs-02f33d4b.efs.us-east-1.amazonaws.com:/ /usr/local/public
- マウントされているか確認してみる
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/xvda1 99G 5.3G 93G 6% / devtmpfs 7.5G 64K 7.5G 1% /dev tmpfs 7.5G 0 7.5G 0% /dev/shm us-east-1a.fs-bbaf11f2c.efs.us-east-1.amazonaws.com:/ 8.0E 94G 8.0E 1% /usr/local/public
マウントできているようですね。ここのus-east-1a.fs-bbaf11f2c.efs.us-east-1.amazonaws.coは覚えておいてください
- /etc/fstab の編集
旧mount設定はコメントアウトし、新設定をここに入れ込みます
vi /etx/fstab -------------------- # LABEL=/ / ext4 defaults,noatime 1 1 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/sdb /media/ephemeral0 auto defaults,nofail,comment=cloudconfig 0 2 # 10.0.0.100:/usr/local/public /usr/local/public nfs defaults 0 0 us-east-1a.fs-bbaf11f2c.efs.us-east-1.amazonaws.com:/ /usr/local/public nfs4 defaults 0 0
設定はこれで完了です。どうでしょう?思ったよりかんたんだったのではないでしょうか?ちなみにdfで出力された結果が8.0Eとなっております。8.0Eってエクサバイト????まじですげえ!!!