Azure

Azure FilesをLinuxからマウントする記事

皆様、こんにちは。
在宅勤務による運動不足を解消するために縄跳びをやってみたところ、
見事にひざと足首を痛めて毎日涙目な×3です。

今回はAzure FilesをLinuxからマウントして、起動時の自動マウントまでを検証してみたいと思います。

構築自体はとても簡単なので、構築手順については割愛させていただきます。

それではやっていきましょう

事前に作成したファイル共有(kaketestshare)

事前にアクセスキーブレードからkey1のキー情報を控えておいてください。
また、ファイル共有のプロパティからURL情報を確認しておいてください。
実施環境:CentOS 7.7

まず、Linux側でマウントする要件を満たしているかを確認しましょう。
①Linuxに cifs-utils が導入されているかを確認します。

# rpm -qa | grep cifs-utils

筆者の環境ではcifs-utils-6.2-10.el7.x86_64が仮想マシンをデプロイした段階ですでに導入されていました。

②Linux側で445のポートが解放されているか?(cifsが445を使用)
Azure Filesへの接続に445番ポートを使用します。仮想マシンのFirewallやNSGで通信を制限していないか確認しましょう。

③ストレージアカウント側のFirewallで仮想マシンへの制限を掛けていないか。

上記が確認できたら事前準備です。
マウントポイント用のディレクトリを作成します。

mkdir /mnt/kakeshare

実はマウントだけであれば、もう実施は可能となっています。
以下コマンドで実際にマウントしてみましょう。

mount -t cifs //kaketeststo.file.core.windows.net/kaketestshare /mnt/kakeshare/ -o vers=3.0,username=<ストレージアカウント名>,password=<キー1の値>,serverino

コマンドの解説ですが、まず-tでcifsファイルシステムを指定、
そのあとの//kaketeststo~/kaketestshareまでがファイル共有のURLです。
で、事前に作成していたマウント先(/mnt/kakeshare)を指定します。

マウントオプションについてですが、versでSMBのバージョンを指定、username,passwordでストレージアカウントへアクセスするための資格情報を指定、serverinoはinode番号をサーバーから返却された番号を使用するためのオプションです。

そして実行後、dfコマンドを実行すると・・・

//kaketeststo.file.core.windows.net/kaketestshare 5368709120       0 5368709120   0% /mnt/kakeshare

今回指定したファイル共有がキチンとマウントされてますね。

自動マウントについては、まず/etc/fstabファイルに以下の様に記載します。

//kaketeststo.file.core.windows.net/kaketestshare /mnt/kakeshare  cifs nofail,vers=3.0,username=<ストレージアカウント名>,password=<キー1>,serverino

# <ストレージアカウント名>,<キー1>はご自身の環境のものを入力してください。

編集を保存して、そのまま以下コマンドを実行。
※事前にマウントしていた場合はアンマウントをしてから実行してくださいね。

mount -a

なにもエラーがなく、プロンプトが返ってきたらおそらくマウント成功です。
dfコマンドで確認しましょう。

//kaketeststo.file.core.windows.net/kaketestshare 5368709120       0 5368709120   0% /mnt/kakeshare

通常のマウントと同様にマウントされていることが確認できました。
これで、1度仮想マシンを再起動して再ログインしdfコマンドを実行、コマンドでマウントをした時のようにマウントされていることが確認できたら無事成功です。

いえ、無事成功ではないのです。

これでも成功は成功です、ただ無事ではないのです。

先ほどのようにfstabを記載すると、ストレージアカウント名、キー情報が丸見えです。
これでは、セキュリティ的によくありません。

というわけで、MS公式から以下が公開されています。
※以下実施にはAzure CLIが必要となります。

if [ ! -d "/etc/smbcredentials" ]; then
    sudo mkdir "/etc/smbcredentials"
fi

storageAccountKey=$(az storage account keys list \
    --resource-group $resourceGroupName \
    --account-name $storageAccountName \
    --query "[0].value" | tr -d '"')

smbCredentialFile="/etc/smbcredentials/$storageAccountName.cred"
if [ ! -f $smbCredentialFile ]; then
    echo "username=$storageAccountName" | sudo tee $smbCredentialFile > /dev/null
    echo "password=$storageAccountKey" | sudo tee -a $smbCredentialFile > /dev/null
else 
    echo "The credential file $smbCredentialFile already exists, and was not modified."
fi

長いですね。。。
こちら、何をするためのものかというと、/etc配下にsmbcredentialsというディレクトリを作成、さらにその配下に<ストレージアカウント名>.credというファイルを作成して、そのファイルにストレージアカウント名とキー情報を記載する、というものです

$resourceGroupName,$storageAccountName,$storageAccountKeyはあらかじめ該当する情報を代入しておいてください。

そして、上のものをそのままコピペで実行すると、/etc/smbcredentials/<ストレージアカウント名>.credが作成されます。

その後、<ストレージアカウント名>.credファイルのパーミッションを

chmod 600 $smbCredentialFile

で600に設定するのを忘れずに実施しましょう。設定していないと、他のユーザーから資格情報が確認できてしまいます。(デフォルトだと644)

さて、ここまで来たらあと少しです。

再度、/etc/fstabを編集します。

//kaketeststo.file.core.windows.net/kaketestshare /mnt/kakeshare  cifs nofail,vers=3.0,credentials=/etc/smbcredentials/kaketeststo.cred,serverino

マウントオプションのcredentialsで作成したcredファイルを指定しています。
では再度mount -aを実行してみましょう。

エラーが特になく、dfコマンドでマウントされていることが確認できたら設定完了です。

補足

先ほど、資格情報ファイルの作成コマンドはAzure CLI必須と記載していましたが、
このファイル、フォーマットは以下の様になっています。

username=<ストレージアカウント名>
password=<キー1の値>

実はこのファイル、情報を直入力しても作成できるので、Azure CLI導入が面倒な方はこちらの手段もよいかもしれません。

また、ストレージアカウントのアクセスキーを更新した場合、即時にマウント解除されましたので、
アクセスキーを更新した際は、credファイルを再作成するか、キーの値を直接修正するか対応が必要となります。

まとめ

今回はAzure FilesをLinuxからマウントして、自動マウントまでを検証してみました。

はい、書いてて気づきました。Linux要素多めでした。
次回はきちんとAzure要素たっぷりな記事をお届けできればと思います。

今回も最後まで読んでいただきありがとうございました。

参考記事

Linux で Azure Files を使用する
https://docs.microsoft.com/ja-jp/azure/storage/files/storage-how-to-use-files-linux

SMB を使用して Linux VM に Azure File Storage をマウントする
https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/mount-azure-file-storage-on-linux-using-smb

L7 負荷分散 Azure Application Gateway について:2回目前のページ

AzureのDMSでデータを移行してみる記事 ~MySQL編~次のページ

関連記事

  1. Azure

    LogAnalytics(監視エージェント)を利用したVMの監視をしよう

    VM(仮想マシン)をAzureMonitorで監視する準備…

  2. 最新情報

    テレワーク導入応援キャンペーン

    緊急事態宣言によるテレワーク対応待ったなし!でも、何が…

  3. Azure

    Azure Migrateを使ったIaaS移行

    はじめまして。新人クラウドエンジニアの三醍醐です。今回は、新機能が実…

  4. Azure

    AADDSを構築する記事

    ---5/13追記(追記事項は末尾記載)---皆様、こんにちは。在宅…

  5. Application Gateway

    L7負荷分散 Azure Application Gateway について:1回目

    はじめまして。Azure推進チーム構成員のヤモトと申します。…

  6. Azure

    Runbookで管理タスクを自動化する。

    1.はじめに初めまして、Cloud Engineerの曽我で…

関連記事

  1. Azure

    Azure Key Vaultでみんなしあわせ
  2. Azure

    Azure Virtual Machineのリージョン間複製
  3. Azure

    AzureのDMSでデータを移行してみる記事 ~MySQL編~
  4. Azure

    Azure料金に関する豆知識①
  5. Azure

    Azure 資格試験の更新(2020年版)
PAGE TOP