ググってもあまり情報が出てこないのでエントリーを書いてみました。誰得なのか分からない情報ですが、もしお役に立てたら幸いです。
事象
Raspberry Pi Zero W (Raspbian Stretch) からAzure Files のファイル共有をマウントしようとするとできない。 vers=2.1
にSMBバージョンを落としてみても繋がりませんでした。
$ sudo mount -t cifs //pistorage.file.core.windows.net/pifile /mnt/azure -o vers=3.0,username=pistorage,password=key,dir_mode=0777,file_mode=0777,sec=ntlmssp mount error(11): Resource temporarily unavailable Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
原因
dmesgで情報を見てみると・・・まあなんということでしょう。SMB3 encryption not supported yet
と出てます。
$ dmesg [30739.337990] CIFS VFS: SMB3 encryption not supported yet [31260.358217] Status code returned 0xc0000022 STATUS_ACCESS_DENIED [31260.358354] CIFS VFS: Send error in SessSetup = -13 [31260.358845] CIFS VFS: cifs_mount failed w/return code = -13
トラブルシューティングのページを調べてみると、Linuxの場合、SMB 3.0の暗号化機能は、Kerrnel 4.11で導入されたようです。この機能を使用すると、オンプレミスまたは他のAzureリージョンからもAzureファイル共有をマウントできるようになります。
Troubleshoot Azure Files problems in Linux | Microsoft Docs
- Linuxからファイル共有をマウントするには、クライアントをファイル共有と同じAzureのリージョンに建てる
- Kerrnel 4.11 以上をサポートしているLinuxからアクセスする
追記:対応しました!(2018/02/24)
Raspbian Stretch の場合、カーネルバージョンをアップデートしたら、SMB3.0に対応しました!素晴らしい!
$ uname -a Linux raspberrypi 4.14.20+ #1094 Mon Feb 19 14:43:02 GMT 2018 armv6l GNU/Linux
$ sudo mount -t cifs //pistorage.file.core.windows.net/pifile /mnt/azure -o vers=3.0,username=pistorage,password=PASSWORD==,dir_mode=0777,file_mo de=0777 pi@raspberrypi:~ $ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/root 15G 7.0G 7.0G 51% / devtmpfs 181M 0 181M 0% /dev tmpfs 186M 0 186M 0% /dev/shm tmpfs 186M 2.8M 183M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 186M 0 186M 0% /sys/fs/cgroup /dev/mmcblk0p1 42M 22M 20M 52% /boot tmpfs 38M 0 38M 0% /run/user/1000 //pistorage.file.core.windows.net/pifile 10G 320K 10G 1% /mnt/azure
Fedora 27 の場合
Fedora27 からは余裕でマウントできました。Kerrnelのバージョンは4.14.6 ですので、SMB3 encryption がサポートされています。
4.14.6-300.fc27.x86_64
Windows 10 の場合
Windows 10 はSMB 3.0にバッチリ対応しているのでPCからアクセスしても問題無くマウントできます。
以下をPowerShellで実行し、Azure Filesの共有フォルダをマウントしています。
PS C:\Users\taira> $acctKey = ConvertTo-SecureString -String "key" -AsPlainText -Force PS C:\Users\taira> $credential = New-Object System.Management.Automation.PSCredential -ArgumentList "Azure\pistorage", $ acctKey PS C:\Users\taira> New-PSDrive -Name X -PSProvider FileSystem -Root "\\pistorage.file.core.windows.net\pifile" -Credenti al $credential -Persist Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- X 0.00 10.00 FileSystem \\pistorage.file.core.windows.ne...
Azure Fileサービスの共有フォルダをエクスプローラーで開いたところ。
他のWindows バージョン
Windows 7 はSMB 3.0に対応していないです。その他の情報については公式ドキュメントを参照すると詳しく記載されています。
回避策
考えられる回避策
考えられる回避策としては以下の通り。
- SMB3 encryptionに対応しているLinuxマシンからアクセスする
- Azure CLI 2.0 からAzure Storageにファイルをアップロードする
- Azure Storage Explorer からアクセスする
- REST APIを使う
- smbclient コマンドから操作する
- 自力でKernelバージョンを上げる(万人向けの選択肢としては無し)
Kernel - Raspberry Pi Documentation - 諦める(Kerrnelアップデートされるのを待つ)
smbclient で、もういいんじゃないのかと思いました。
Azure CLI 2.0 をインストールしてもいいのですが、ラズパイZeroにAzure CLI 2.0 をインストールするのに1時間前後かかるので、現実的じゃないと思いました(便利ですけどね)。
しかしながら、必要に応じて設定したい人も居ると思いますので、別エントリーに記事を書きましたので参考にして下さい。
smbclient コマンドの接続方法
Raspberry Pi のコマンドラインからは、Azure CLI 2.0 または smbclient を使ってアクセスすると問題無く繋がりますので、こちらを使います。
ちなみに smbclient の繋ぎ方は以下の通り。
--user=pistorage%password
のように、%
の後にpassword(Key)を入力します。 --user
にはストレージ アカウント名を指定します。
$ sudo smbclient //pistorage.file.core.windows.net/pifile --user=pistorage%password -mSMB3 WARNING: The "syslog" option is deprecated Domain=[X] OS=[] Server=[] smb: \> ls . D 0 Tue Jan 2 21:24:34 2018 .. D 0 Tue Jan 2 21:24:34 2018 2017-09-07-162135_1824x984_scrot.png A 2034061 Tue Jan 2 23:53:35 2018 20170503011149.jpg A 356965 Tue Jan 2 23:36:46 2018 163840 blocks of size 65536. 163803 blocks available smb: \> lcd img smb: \> !ls 2017-09-07-162135_1824x984_scrot.png 2017-10-15-234940_1824x984_scrot.png 2017-09-07-162337_1824x984_scrot.png 2017-10-15-235031_1824x984_scrot.png
コマンドの使い方はhelp
を実行すれば表示されます。
smb: \> help
念のためファイルを送信する方法を記載します。
smb: \> put 2017-09-07-162135_1824x984_scrot.png putting file 2017-09-07-162135_1824x984_scrot.png as \2017-09-07-162135_1824x984_scrot.png (1900.8 kb/s) (average 1900.8 kb/s)
まとめ
- KerrnelのアップデートでRaspbian StretchでもAzure Filesをマウントできるようになった
- ラズパイで撮影した写真をSMB(CIFS)でAzure Filesへ転送し、データを溜め込んで、Azure上のサーバー側で画像合成や解析などに使うと楽しそう
- Azure CLI 2.0 をラズパイZeroにインストールするのが思った以上に時間が掛かる(1時間)なので、より簡単な方法を考えていこうと思った