WordPress with EFSでアンマウント / 再マウント


昨日いろいろ遊んでいて、ふと「これ本当にマウントできてんのか？」という不安に駆られたので実験してみました。

## スタックを作る
<a href="http://qiita.com/motchi0214/items/a22edddd12ccf4804523" >CloudFormationでElasticFileSystem(EFS)をEC2にマウントさせる - Qiita</a>
AMIMOTO AMI + EFS + ELB + VPC周り諸々が立ち上がってきます。

## マウントを外してみる
いきなり外そうとするとエラーになります。

```
$ sudo umount /var/www/vhosts/
umount.nfs4: /var/www/vhosts: device is busy
```

monitとnginxを停止させましょう。

```
[ec2-user@ip-10-0-0-201 ~]$ sudo service monit stop
Shutting down monit:                                       [  OK  ]
[ec2-user@ip-10-0-0-201 ~]$ sudo service nginx stop
Stopping nginx:                                            [  OK  ]
```

リトライ

```
[ec2-user@ip-10-0-0-201 ~]$ sudo umount /var/www/vhosts/
```

成功した場合は特に何もメッセージが出ません。

df -hするとマウントが外れているのがわかります。

```
[ec2-user@ip-10-0-0-201 ~]$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       9.8G  4.2G  5.6G   43% /
devtmpfs         1.9G   64K  1.9G    1% /dev
tmpfs            1.9G     0  1.9G    0% /dev/shm
/dev/xvdb         15G   39M   15G    1% /media/ephemeral0
```

マウント先（/var/www/vhosts/）も以下のようにWordPressが綺麗になくなってます。

```
[ec2-user@ip-10-0-0-201 ~]$ ll /var/www/vhosts/i-4fe8feda/
合計 4
-rw-r--r-- 1 root root 175  6月 29 18:33 index.html
```

### マウントしなおす

「fs-XXXX」はEFSのFile System IDです。

```
[ec2-user@ip-10-0-0-201 ~]$ sudo mount -t nfs4 -o nfsvers=4.1 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).fs-XXXX.efs.us-east-1.amazonaws.com:/ /var/www/vhosts
```

マウントされていることを確認します。

```
[root@ip-10-0-0-201 log]# df -h
Filesystem                                            Size  Used Avail Use% Mounted on
/dev/xvda1                                            9.8G  4.2G  5.6G  43% /
devtmpfs                                              1.9G   68K  1.9G   1% /dev
tmpfs                                                 1.9G     0  1.9G   0% /dev/shm
/dev/xvdb                                              15G   39M   15G   1% /media/ephemeral0
us-west-2b.fs-xxxxxx.efs.us-east-1.amazonaws.com:/  8.0E     0  8.0E   0% /var/www/vhosts
[root@ip-10-0-0-201 log]# 

```

ファイルも復活しました。

```
[ec2-user@ip-10-0-0-201 ~]$ ll /var/www/vhosts/i-4fe8feda/
合計 192
-rw-r--r--  1 nginx nginx   418  6月 29 18:38 index.php
-rw-r--r--  1 nginx nginx 19935  6月 29 18:38 license.txt
-rw-r--r--  1 nginx nginx  1176  6月 29 18:37 local-config.php
-rw-r--r--  1 nginx nginx   774  6月 29 18:38 local-salt.php
-rw-r--r--  1 nginx nginx  7360  6月 29 18:39 readme.html
-rw-r--r--  1 nginx nginx  5032  6月 29 18:38 wp-activate.php
drwxr-xr-x  9 nginx nginx  4096  6月 29 18:37 wp-admin
-rw-r--r--  1 nginx nginx   364  6月 29 18:39 wp-blog-header.php
-rw-r--r--  1 nginx nginx  1476  6月 29 18:38 wp-comments-post.php
-rw-r--r--  1 nginx nginx  2853  6月 29 18:39 wp-config-sample.php
-rw-r--r--  1 nginx nginx  2751  6月 29 18:36 wp-config.php
drwxr-xr-x  7 nginx nginx  4096  6月 29 19:23 wp-content
-rw-r--r--  1 nginx nginx  3286  6月 29 18:38 wp-cron.php
drwxr-xr-x 16 nginx nginx  4096  6月 29 18:36 wp-includes
-rw-r--r--  1 nginx nginx  2380  6月 29 18:38 wp-links-opml.php
-rw-r--r--  1 nginx nginx  3316  6月 29 18:38 wp-load.php
-rw-r--r--  1 nginx nginx 33837  6月 29 18:38 wp-login.php
-rw-r--r--  1 nginx nginx  7887  6月 29 18:39 wp-mail.php
-rw-r--r--  1 nginx nginx 13106  6月 29 18:38 wp-settings.php
-rw-r--r--  1 nginx nginx 28624  6月 29 18:38 wp-signup.php
-rw-r--r--  1 nginx nginx  4035  6月 29 18:38 wp-trackback.php
-rw-r--r--  1 nginx nginx  3061  6月 29 18:38 xmlrpc.php
```

Nginxとmonitが止まってるので現状サイト表示はまだ復活しません。
ちゃんと起動させておきましょう。

```
[root@ip-10-0-0-201 log]# service nginx start
Starting nginx:                                            [  OK  ]
[root@ip-10-0-0-201 log]# service monit start
Starting monit: Monit start delay set -- pause for 5s
                                                           [  OK  ]
```

例に使った構成はEC2*1なので、特にEFSを使うメリットはないかもしれません。ですが、実際にEFSでマウント・アンマウントができるということが確認できただけでも進捗だなというところです。