LinuxのサーバからAzure FilesをSMBマウントする方法


概要

LinuxサーバからAzure上のストレージアカウントに作成したAzure Filesに
SMBマウントする方法です。
意外と簡単にできたんですが、マウントするサーバにAzure CLIをインストールする必要があり、諸事情で実作業では使えなかったので備忘録。。。

関連ページはこちら↓
SMB Azure ファイル共有を Linux でマウントする
Linux に Azure CLI をインストールする

※今回はAzure上のRHEL8.1のサーバで検証しました。

手順

①Azure Filesの作成

Azure Portalからストレージアカウント上にAzure Filesを作成します。

  1. Azure Portalにログインして、ストレージアカウントの画面を開く

  2. 「ファイル共有」をクリックして、Azure Filesを作成する

②Azure CLIのインストール

Azure FilesをマウントするサーバにAzure CLIをインストールします。
※LinuxサーバからのマウントはAzure CLIのインストールが必須です。

  1. 対象サーバにログインする

  2. Microsoft リポジトリ キーをインポートする

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    
  3. azure-cli リポジトリ情報を作成する

    echo -e "[azure-cli]
    name=Azure CLI
    baseurl=https://packages.microsoft.com/yumrepos/azure-cli
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/azure-cli.repo
    
  4. Azure CLIのインストールを実行する

    sudo dnf install azure-cli
    
  5. ①のAzure Filesが存在しているサブスクリプションにログインする

    az login
    # 認証画面が開かれるため、必要な情報を入力して対象のサブスクリプションにログインしてください。
    
  6. 対象のサブスクリプションが表示されることを確認

    az account list
    
    # 異なるサブスクリプションが表示されている場合は、以下のコマンドでサブスクリプションを変更してください。
    az account set --subscription <"対象のサブスクリプションID">
    

③Azure Filesのマウント

①で作成したAzure Filesに②のサーバからマウントします。

  1. 対象のストレージアカウントへ接続確認(エラーが出力されないことを確認します)

    resourceGroupName="<接続するAzure Files(ストレージアカウント)が存在するリソースグループ名>"
    storageAccountName="<接続するAzure Filesが存在するストレージアカウント名>"
    fileShareName="<接続するAzure Files名>"
    
    httpEndpoint=$(az storage account show --resource-group $resourceGroupName --name $storageAccountName --query "primaryEndpoints.file" | tr -d '"')
    smbPath=$(echo $httpEndpoint | cut -c7-$(expr length $httpEndpoint))
    fileHost=$(echo $smbPath | tr -d "/")
    
    nc -zvw3 $fileHost 445
    
    
  2. サーバ上にマウントポイントを作成する

    mntRoot="<Azure Filesをマウントするフォルダ>"
    mntPath="$mntRoot/$storageAccountName/$fileShareName"
    sudo mkdir -p $mntPath 
    
    # mntpathで指定されているパスにフォルダが作成されていることを確認する   
    
  3. 接続先のストレージアカウント情報を指定する

    httpEndpoint=$(az storage account show --resource-group $resourceGroupName --name $storageAccountName --query "primaryEndpoints.file" | tr -d '"')
    smbPath=$(echo $httpEndpoint | cut -c7-$(expr length $httpEndpoint))$fileShareName
    
    storageAccountKey=$(az storage account keys list --resource-group $resourceGroupName --account-name $storageAccountName --query "[0].value" | tr -d '"')
    
  4. マウント実行

    sudo mount -t cifs $smbPath $mntPath -o username=$storageAccountName,password=$storageAccountKey,serverino
    
  5. マウントされていることを確認する

    df -Th
    
    [root@XXXXXXXX ~] # df -Th
    Filesystem                                Type      Size  Used Avail Use% Mounted on
    devtmpfs                                  devtmpfs  3.8G     0  3.8G   0% /dev
    tmpfs                                     tmpfs     3.9G     0  3.9G   0% /dev/shm
    tmpfs                                     tmpfs     3.9G  8.7M  3.9G   1% /run
    tmpfs                                     tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
    /dev/mapper/rootvg-rootlv                 xfs       2.0G  329M  1.7G  17% /
    /dev/mapper/rootvg-usrlv                  xfs        10G  2.2G  7.9G  22% /usr
    /dev/mapper/rootvg-varlv                  xfs       8.0G  704M  7.4G   9% /var
    /dev/mapper/rootvg-homelv                 xfs      1014M   40M  975M   4% /home
    /dev/sda1                                 xfs       496M  144M  352M  30% /boot
    /dev/mapper/rootvg-tmplv                  xfs       2.0G   47M  2.0G   3% /tmp
    /dev/sda15                                vfat      495M  6.9M  488M   2% /boot/efi
    /dev/sdb1                                 ext4       16G   45M   15G   1% /mnt
    tmpfs                                     tmpfs     782M     0  782M   0% /run/user/1001
    ★//XXXXXXX.file.core.windows.net/testmedia cifs       10G     0   10G   0% /mount/XXXXX/testmedia
    # ↑ 2.で作成したマウントポイントにAzure Filesがマウントされていることを確認する
    

これでAzure Filesにマウントされました。
このあとは、通常の共有ファイルと同様、ストレージアカウント上からもサーバ上からも操作可能です。
試してはないですが、サーバの/etc/fstabに必要な情報を記載しておけば、サーバ起動時の自動マウントも可能みたいです。


以上です。

Linuxの操作嫌い&Azureのコマンド操作はPowerShallしか基本使わないので、CLIよく分からない状態でやってみましたが、
それでも簡単にできたので、機会があれば使ってみようと思います。