Azure FilesをLinuxからマウントする方法|NFS・SMB共有の作成からfstabによる永続化まで

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Azure > Azure FilesをLinuxからマウントする方法|NFS・SMB共有の作成からfstabによる永続化まで
「Azure FilesをLinuxからマウントしたいが、mount コマンドでエラーになる。SMBとNFSはどちらを選べばよいか、fstabに書いても再起動後にマウントされない」——こういった声は、クラウドへのファイル共有移行案件で必ずと言っていいほど出てきます。

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 に付けてネットワーク障害時の起動失敗を防ぐ


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

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==

出力されたキーは後の手順で使います。本番環境では Azure Key Vault に格納して管理することを推奨します。

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) プロトコルの基本についてはこちら
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
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

NFS マウントオプションの説明です。

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_netdev の 2 つのオプションは必ず付けてください。

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

ポート 445 が閉じている環境では SMB マウントは使えません。その場合は VPN Gateway または ExpressRoute 経由での接続か、NFS(Premium tier)への切り替えを検討してください。

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

SMB の場合は fstab に 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 制限(認証なし)
fstab に書く際は nofail_netdev を必ず付けてください。付け忘れると、ネットワーク障害時に VM が起動不能になる可能性があります。また SMB の認証情報は /etc/smbcredentials に分離し、パーミッションを 600 にするのが鉄則です。

Azure Files はファイル共有層として非常に手軽に使えるサービスですが、NFS を選ぶ場合は Premium tier・VNet 構成という前提コストが発生します。ユースケースと予算を照らし合わせてプロトコルを選択してください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Azure対応セミナーの詳細を見る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。