Check! CentOS の仮想マシンから Azure File Storage をマウントする（CentOS 7系の動作確認、6系のエラーについてメモ）

おはようございます！エクストリームデザインの @dz_ こと大平かづみです。

Prologue - はじめに
====
Azure リハビリで、CentOS の仮想マシンを立てて遊んでいます。試しに、[Azure File Storage](https://azure.microsoft.com/ja-jp/services/storage/files/ "File Storage | Microsoft Azure") をマウントしてみたら、CentOS 6系と7系で動作が異なったのでメモしておきます。

結論から言うと、CentOS 7+からのサポートのようです。

CentOS で Azure File Storage をマウントする手順
====
下記の資料を参考にしました。

- [Linux で Azure Files を使用する方法 | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/storage/storage-how-to-use-files-linux "Linux で Azure Files を使用する方法 | Microsoft Docs")
- [LinuxからAzure File Storageをマウント | OSS on Azure 技術ブログ](http://azure.sios.jp/archives/205 "LinuxからAzure File Storageをマウント | OSS on Azure 技術ブログ")

仮想マシンの環境は以下です。

```bash
# CentOS のバージョンを確認する
$ cat /etc/redhat-release
CentOS release 6.8 (Final)
```

Azure File Storage の準備
----

まず、**仮想マシンと同一リージョン**のストレージアカウントを作成します。ここでは以下の設定で進めます。記載のない項目は、既定のままもしくは任意です。

| 設定項目 | 設定値 |
|----------|-------|
| ストレージアカウント名 | `samplestorage` |
| アカウントの種類 | 汎用 |
| レプリケーション | *任意の冗長方式を選択* |
| 場所 | 仮想マシンと同一リージョン |
| ファイル共有名 | `share` |
| マウントポイント | /mnt/azure |

CentOS での準備
----
必要なパッケージは `cifs-utils` です。入ってない場合はインストールしましょう。前述の資料に従い、 `samba-client`, `samba-common` もインストールしておきます。

```bash
# CentOSのバージョンを確認する
$ cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

# 必要なパッケージをインストールする
$ sudo yum install samba-client samba-common cifs-utils

# cifs-utils のバージョンを確認する
$ yum list installed | grep cifs
cifs-utils.x86_64                    6.2-9.el7                   @base
```

Azure File Storage をマウントする
----
ポータルで作成した File Storage をひらくと、「接続」タブがあり、マウントするコマンドをコピーすることができます。また、アクセスキーへのリンクもあるので便利です。
![20170323_azure-file-storage_002.png](https://qiita-image-store.s3.amazonaws.com/0/3812/39bf9bd7-c4eb-c8a9-14e1-b6275e49d656.png)

それでは、マウントしてみます。ストレージアカウント名などは適宜読み替えて実行してください。

```bash
# マウントポイントを作成する
$ mkdir /mnt/azure

# Azure File Storage をマウントする（前述のポータルでコピーしたコマンドが使えます。）
$ sudo mount -t cifs //samplestorage.file.core.windows.net/share /mnt/azure -o vers=3.0,username=samplestorage,password=<ストレージアカウントのアクセスキー>,dir_mode=0777,file_mode=0777

# マウントの状況を確認する
$ df -h /mnt/azure
Filesystem                                        Size  Used Avail Use% Mounted on
//samplestorage.file.core.windows.net/share  5.0T     0  5.0T   0% /mnt/azure
```

簡単にできました！ (o･ω･o)ﾉﾞ

CentOS 6系の場合
====
CentOS 6系で `Host is down` エラー
----
ところで、実は CentOS 6.8 で試したところ、 `Host is down` と表示されマウントできませんでした。

下記によると、CentOS 7.1 で同様の症状の場合は `vers=2.1` を指定するとよいともありますが、CentOS 6.8 ではだめでした。

- [Azure Files with CentOS : mount error(112): Host is down](https://social.technet.microsoft.com/Forums/exchange/en-US/3df4f8ee-4efe-4fd3-aee4-dde3c3e26ad3/azure-files-with-centos-mount-error112-host-is-down?forum=windowsazuredata "Azure Files with CentOS : mount error(112): Host is down")

```bash
# cifs-utils のバージョンを確認する
$ yum list installed | grep cifs
cifs-utils.x86_64                  4.8.1-20.el6              @base

# Azure File Storage のマウントを試みる（エラー）
$ sudo mount -t cifs //samplestorage.file.core.windows.net/share /mnt/azure -o vers=3.0,username=samplestorage,password=xxx,dir_mode=0777,file_mode=0777
error(112): Host is down
```

Epilogue - おわりに
====
今月頭の転職に伴い、なかなか時間が取れずにいたのですが、やっと手を動かす余裕ができた途端楽しいのなんのって！(〃∀〃)

なお一層、 Azure もテックも楽しんでいきますよー！