Azure Files は AWS の EFS に相当するマネージドファイル共有サービスです。SMB 3.x と NFS 4.1 の両プロトコルをサポートしますが、Linux からマウントする場合は前提条件が大きく異なります。SMB は全ティアで使えるのに対し、NFS は Premium File Shares 限定で、かつ VNet 内接続が必須です。この違いを把握せずに進めると、「なぜか接続できない」で時間を消耗します。
この記事では、Azure FilesをLinuxからSMBおよびNFSでマウントする手順を、Azureポータルでのファイル共有作成から cifs-utils/nfs-common のインストール、fstab による永続化まで一通り解説します。Rocky Linux 9.4・Ubuntu 24.04 LTS で動作確認済みの手順を元にしているので、そのまま実践環境で試せます。
この記事のポイント
・SMBマウントは cifs-utils をインストールして mount -t cifs で実行できる
・NFS 4.1マウントは Premium File Shares 限定・VNet 接続が必須
・/etc/smbcredentials に認証情報を分離し fstab に直書きしない
・nofail オプションを fstab に付けてネットワーク障害時の起動失敗を防ぐ
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Azure Filesとは何か
Azure Files(アジュール ファイルズ)は、Azure 上でフルマネージドのファイル共有を提供するサービスです。Windows のファイルサーバー(SMB 共有)をそのままクラウドに移行したり、複数の Linux VM 間でファイルを共有したりするユースケースに使われます。主な特徴は以下のとおりです。
・SMB 3.x サポート:Windows・Linux・macOS の全 OS から標準的な SMB クライアントでアクセスできます
・NFS 4.1 サポート:Premium tier 限定。Linux からの高速なファイルアクセスが必要な場合に選択します
・Azure Backup との統合:ファイル共有のスナップショットを定期的に取得できます
・Azure Active Directory 認証:SMB 接続で AD ドメイン参加マシンからの RBAC 制御が可能です
Azure Blob Storage・Managed Disk との棲み分けも明確にしておきましょう。
・Azure Files:複数の VM から同時にマウントして読み書きするファイル共有層(例:ログ集約・設定ファイル共有・CMS のメディアフォルダ)
・Azure Blob Storage:オブジェクトストレージ。大容量データの格納・配信に向くが SMB/NFS でのマウントは不可(AzCopy や FUSE ベースのマウントは別途必要)
・Managed Disk:単一 VM にアタッチするブロックデバイス。同時マウントには別途 SAN 構成が必要
前提条件と準備
1. ストレージアカウントの作成
Azure ポータル(portal.azure.com)にログインし、「ストレージアカウント」を新規作成します。NFS を使う場合は、この時点でパフォーマンス階層を Premium に設定し、アカウントの種類を FileStorage にする必要があります(Standard では NFS 非対応)。SMB のみ使う場合は Standard の汎用 v2 アカウントで問題ありません。
Azure CLI を使う場合は以下のコマンドで作成できます。
# リソースグループの作成 $ az group create --name rg-files-test --location japaneast # Standard ストレージアカウント(SMB用) $ az storage account create \ --name mystgaccountlinux01 \ --resource-group rg-files-test \ --location japaneast \ --sku Standard_LRS \ --kind StorageV2 # Premium ストレージアカウント(NFS用) $ az storage account create \ --name mypremiumfiles01 \ --resource-group rg-files-test \ --location japaneast \ --sku Premium_LRS \ --kind FileStorage
2. ファイル共有の作成
ストレージアカウント配下にファイル共有(共有名)を作成します。# SMB 用ファイル共有(クォータは GiB 単位) $ az storage share-rm create \ --resource-group rg-files-test \ --storage-account mystgaccountlinux01 \ --name myshare \ --quota 100 \ --enabled-protocols SMB # NFS 用ファイル共有(Premium アカウントのみ有効) $ az storage share-rm create \ --resource-group rg-files-test \ --storage-account mypremiumfiles01 \ --name mynfsshare \ --quota 100 \ --enabled-protocols NFS
3. ストレージアカウントキーの取得(SMB 接続で必要)
SMB でマウントする際にはストレージアカウントキーがパスワードとして必要です。$ az storage account keys list \ --resource-group rg-files-test \ --account-name mystgaccountlinux01 \ --query "[0].value" -o tsv Abcde1234FGHijklMNOPQRstuvwxyz/AbcdEFGHijkLmNOpQRSTUVwxyz0123456789==
Linux の名前解決(DNS 設定)の基本はこちら
SMBでLinuxからマウントする方法
1. cifs-utils のインストール
Linux から SMB 共有をマウントするにはcifs-utils パッケージが必要です。# Ubuntu 24.04 LTS の場合 $ sudo apt update $ sudo apt install -y cifs-utils # Rocky Linux 9.4 / RHEL 9.x の場合 $ sudo dnf install -y cifs-utils
2. 認証情報ファイルの作成
fstab や mount コマンドにストレージキーをそのまま書くと、ps コマンドやプロセスリストからキーが丸見えになります。必ず専用ファイルに分離してください。# 認証情報ファイルの作成 $ sudo vi /etc/smbcredentials # --- ファイルの内容 --- username=mystgaccountlinux01 password=Abcde1234FGHijklMNOPQRstuvwxyz/AbcdEFGHijkLmNOpQRSTUVwxyz0123456789== # --- ここまで --- # パーミッションを root のみ読み取り可に設定 $ sudo chmod 600 /etc/smbcredentials $ sudo chown root:root /etc/smbcredentials # 確認 $ sudo ls -la /etc/smbcredentials -rw------- 1 root root 124 Jul 14 09:00 /etc/smbcredentials
3. マウントポイントの作成と手動マウント
# マウントポイントの作成 $ sudo mkdir -p /mnt/azurefiles # SMB でマウント(テスト) $ sudo mount -t cifs \ //mystgaccountlinux01.file.core.windows.net/myshare \ /mnt/azurefiles \ -o credentials=/etc/smbcredentials,serverino,nosharesock,actimeo=30 # マウント確認 $ df -h /mnt/azurefiles Filesystem Size Used Avail Use% Mounted on //mystgaccountlinux01.file.core.windows.net/myshare 100G 128M 100G 1% /mnt/azurefiles # ファイルの読み書きテスト $ echo "test write" | sudo tee /mnt/azurefiles/test.txt test write $ cat /mnt/azurefiles/test.txt test write
・credentials=:認証情報ファイルのパスを指定します
・serverino:サーバー側の inode 番号を使用します(rsync 等でファイル識別が正確になる)
・nosharesock:複数の同時接続での競合を防ぎます
・actimeo=30:属性キャッシュの有効期間(秒)。デフォルトの 1 秒より長くすることで stat コールを減らせます
Samba (SMB) プロトコルの基本についてはこちら
Azure対応セミナーの詳細を見る >>
NFSでLinuxからマウントする方法(Premium限定)
NFS 4.1 は Premium File Shares のみで利用可能です。Standard アカウントでは NFS オプション自体が表示されません。また、NFS は認証機能を持たないため、Azure のストレージファイアウォールまたはプライベートエンドポイントによる VNet 制限が必須となります。パブリックネットワークから NFS マウントすることは原則できないと考えてください。1. nfs-common / nfs-utils のインストール
# Ubuntu 24.04 LTS の場合 $ sudo apt update $ sudo apt install -y nfs-common # Rocky Linux 9.4 / RHEL 9.x の場合 $ sudo dnf install -y nfs-utils
2. ストレージアカウントのネットワーク設定(VNet制限)
NFS を使うためには、ストレージアカウントの「ネットワーク」設定で、Linux VM が所属する VNet/サブネットを「選択したネットワーク」として追加するか、プライベートエンドポイントを設定する必要があります。# ストレージアカウントのネットワーク設定に VNet を追加 $ az storage account network-rule add \ --resource-group rg-files-test \ --account-name mypremiumfiles01 \ --vnet-name myVNet \ --subnet mySubnet # デフォルトアクセスを「Deny」に変更(VNet 内のみ許可) $ az storage account update \ --resource-group rg-files-test \ --name mypremiumfiles01 \ --default-action Deny
3. NFS マウントの実行
# マウントポイントの作成 $ sudo mkdir -p /mnt/nfsshare # NFS 4.1 でマウント(VNet 内 VM から実行) $ sudo mount -t nfs mypremiumfiles01.file.core.windows.net:/mypremiumfiles01/mynfsshare \ /mnt/nfsshare \ -o vers=4,minorversion=1,sec=sys # マウント確認 $ df -h /mnt/nfsshare Filesystem Size Used Avail Use% Mounted on mypremiumfiles01.file.core.windows.net:/mypremiumfiles01/mynfsshare 100G 10M 100G 1% /mnt/nfsshare # 書き込みテスト $ sudo touch /mnt/nfsshare/nfstest.txt $ ls -la /mnt/nfsshare/nfstest.txt -rw-r--r-- 1 root root 0 Jul 14 09:05 /mnt/nfsshare/nfstest.txt
・vers=4:NFS バージョン 4 を使用します
・minorversion=1:NFS 4.1 を明示します(Azure Files は 4.1 のみ対応)
・sec=sys:UNIX の UID/GID ベースの認証を使用します
fstabへの記述で永続マウントする方法
手動でマウントした状態は再起動すると消えてしまいます。OS 起動時に自動的にマウントさせるには /etc/fstab に設定を追記します。mount コマンドと fstab の基本的な使い方はこちら
SMB の fstab 設定
sudo vi /etc/fstab を開き、以下の行を追記してください。# /etc/fstab への追記内容(SMB) //mystgaccountlinux01.file.core.windows.net/myshare /mnt/azurefiles cifs credentials=/etc/smbcredentials,serverino,nosharesock,actimeo=30,nofail,_netdev 0 0
NFS の fstab 設定
# /etc/fstab への追記内容(NFS) mypremiumfiles01.file.core.windows.net:/mypremiumfiles01/mynfsshare /mnt/nfsshare nfs vers=4,minorversion=1,sec=sys,nofail,_netdev 0 0
・nofail:マウントに失敗しても OS の起動を止めません。ネットワーク障害時に VM が起動不能になるのを防ぎます
・_netdev:ネットワークが有効になってからマウントを試みます。これがないとネットワーク起動前にマウントを試みて失敗します
fstab の動作確認
# fstab の構文確認(実際にはマウントしない) $ sudo mount -a --fake # fstab に基づいて全マウントポイントをマウント $ sudo mount -a # マウント状態の確認 $ mount | grep azurefiles //mystgaccountlinux01.file.core.windows.net/myshare on /mnt/azurefiles type cifs (rw,relatime,vers=3.1.1,cache=strict,username=mystgaccountlinux01,uid=0,noforceuid,gid=0,noforcegid,addr=52.239.x.x,file_mode=0755,dir_mode=0755,soft,nosharesock,serverino,mapposix,nofail,_netdev,actimeo=30)
トラブルシューティング
「mount error(115): Operation now in progress」——ポート445への接続タイムアウト
SMB は TCP ポート 445 を使います。プロバイダーや企業ネットワークでポート 445 がブロックされている場合、このエラーが出ます。Azure Files 側の問題ではなく、クライアント側のネットワーク制限です。# ポート 445 の疎通確認(Linux VM から Azure へ) $ nc -zv mystgaccountlinux01.file.core.windows.net 445 Connection to mystgaccountlinux01.file.core.windows.net (52.239.x.x) 445 port [tcp/microsoft-ds] succeeded! # 接続できない場合(タイムアウト) $ nc -zv mystgaccountlinux01.file.core.windows.net 445 nc: connect to mystgaccountlinux01.file.core.windows.net port 445 (tcp) failed: Connection timed out
Linux でのポート確認コマンド(ss・lsof・nc)はこちら
「mount error(13): Permission denied」——認証エラー
ストレージアカウントキーが間違っている、または /etc/smbcredentials のパーミッションが正しくない場合に発生します。# 認証情報ファイルのパーミッション確認 $ sudo ls -la /etc/smbcredentials -rw------- 1 root root 124 Jul 14 09:00 /etc/smbcredentials # 600 でなければ修正 $ sudo chmod 600 /etc/smbcredentials # ストレージキーの再確認 $ az storage account keys list \ --resource-group rg-files-test \ --account-name mystgaccountlinux01 \ --query "[0].value" -o tsv
NFS マウントで「access denied by server」——VNet 制限の確認
NFS 接続が拒否される場合、VM の所属サブネットがストレージアカウントのネットワーク許可リストに入っていない可能性があります。# 許可済みネットワークの確認 $ az storage account show \ --name mypremiumfiles01 \ --resource-group rg-files-test \ --query "networkRuleSet" -o table Action Bypass -------- ------- Deny AzureServices # VM のサブネット情報を確認(VM 上で実行) $ ip route show default via 10.0.0.1 dev eth0 proto dhcp 10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.4
ip route で確認した VM のサブネット(この例では 10.0.0.0/24)が、ストレージアカウントの「ネットワーク」設定で許可されているかをポータルまたは az コマンドで確認してください。「Stale file handle」——接続が途切れた後の参照エラー
ネットワーク断や Azure 側のメンテナンスで接続が切れると、マウントポイントへのアクセスで Stale file handle エラーが出ることがあります。# アンマウントして再マウント $ sudo umount /mnt/azurefiles $ sudo mount /mnt/azurefiles # umount できない場合(プロセスが掴んでいる) $ sudo lsof /mnt/azurefiles # lsof 結果でプロセスを特定してから kill または fuser -k $ sudo fuser -km /mnt/azurefiles
hard ではなく soft オプション(デフォルト動作)を使うと、サーバー側の一時的な障害で I/O が永久ブロックされにくくなります。ただし soft は書き込みデータの保証が弱くなる点に注意してください。ntpd/chrony による時刻同期設定(SMB Kerberos 認証に影響)はこちら
本記事のまとめ
Azure FilesをLinuxからマウントする際の選択肢と手順を以下にまとめます。| プロトコル | 対応ティア | パッケージ | ポート | 認証 |
|---|---|---|---|---|
| SMB 3.x | Standard / Premium | cifs-utils | TCP 445 | ストレージアカウントキー |
| NFS 4.1 | Premium のみ | nfs-common / nfs-utils | TCP 2049 | VNet 制限(認証なし) |
Azure Files はファイル共有層として非常に手軽に使えるサービスですが、NFS を選ぶ場合は Premium tier・VNet 構成という前提コストが発生します。ユースケースと予算を照らし合わせてプロトコルを選択してください。
Azure対応セミナーの詳細を見る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:Azure BackupでLinux VMをバックアップ・リストアする方法|Recovery Servicesコンテナーの構築と復元テスト
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます