[Amazon FSx for NetApp ONTAP] SMBファイル共有のパスに含まれるディレクトリの名前を変更する時の対応方法を確認してみた
SMBファイル共有のパスに含まれるディレクトリの名前を変更したい
こんにちは、のんピ(@non____97)です。
皆さんはSMBファイル共有のパスに含まれるディレクトリの名前が変わった時の影響が気になったことはありますか? 私はあります。
ファイルサーバーを運用する中でディレクトリ名の変更は十分起こりうるでしょう。それでは、名前を変更したディレクトリがSMBファイル共有のパスに含まれている場合はどのような挙動をするのでしょうか。
WindowsだとSMBファイル共有にアクセスできなくなる認識ですが、Amazon FSx for NetApp ONTAP(以降FSxN)では良きようにやってくれるのでしょうか。
実際に試してみました。
いきなりまとめ
- SMBファイル共有のパスに含まれるディレクトリ名を変更しても、SMBファイル共有のパスは自動で更新されない
- 結果、パスを修正するまでアクセスできなくなる
- SMBファイル共有のパスに含まれるディレクトリ名を変更する際は以下2ステップが必要
- ディレクトリ名の変更
- ONTAP CLIもしくはONTAP REST APIでSMBファイル共有のパスを変更する
fsmgmt.msc
ではSMBファイル共有のパスおよび共有名を変更することはできない- ONTAP CLIでもSMBファイル共有の共有名を変更することはできない
- SMBファイル共有の共有名を変更したい場合は、新しい名前でSMBファイル共有を作り直す必要がある
やってみた
qtreeの作成
まず、qtreeを作成します。作成するqtreeはSMBファイル共有のパスに含まれるような形にします。
::*> qtree show -volume vol_ntfs
Vserver Volume Qtree Style Oplocks Status
---------- ------------- ------------ ------------ --------- --------
svm vol_ntfs "" ntfs enable normal
::*> qtree create -volume vol_ntfs -qtree qtree1
::*> qtree create -volume vol_ntfs -qtree qtree2
::*> qtree show -volume vol_ntfs
Vserver Volume Qtree Style Oplocks Status
---------- ------------- ------------ ------------ --------- --------
svm vol_ntfs "" ntfs enable normal
svm vol_ntfs qtree1 ntfs enable normal
svm vol_ntfs qtree2 ntfs enable normal
3 entries were displayed.
qtree1
とqtree2
の2つのqtreeを作成しました。
SMBファイル共有パスで指定するディレクトリの作成
SMBファイル共有のパスにqtreeだけでなく、通常のディレクトリが含まれる場合も検証したいです。
SMBファイル共有パスで指定するディレクトリの作成します。
> ls \\SMB-SERVER.corp.non-97.net\c$\vol_ntfs
Directory: \\SMB-SERVER.corp.non-97.net\c$\vol_ntfs
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 8/30/2024 6:39 AM dir1
d----- 9/22/2024 9:04 PM qtree1
d----- 9/22/2024 9:05 PM qtree2
-a---- 8/30/2024 6:53 AM 38 test.txt
> mkdir \\SMB-SERVER.corp.non-97.net\c$\vol_ntfs\qtree2\dir
Directory: \\SMB-SERVER.corp.non-97.net\c$\vol_ntfs\qtree2
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 9/22/2024 9:09 PM dir
qtree2
配下にdir
というディレクトリを作成しました。
SMBファイル共有の作成
SMBファイル共有の作成をします。
::*> cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm c$ / oplocks - BUILTIN\Administrators / Full Control
browsable
changenotify
show-previous-versions
svm ipc$ / browsable - -
svm share /vol_ntfs oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
3 entries were displayed.
::*> cifs share create -vserver svm -share-name share_qtree -path /vol_ntfs/qtree1
::*> cifs share create -vserver svm -share-name share_qtree_dir -path /vol_ntfs/qtree2/dir
::*> cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm c$ / oplocks - BUILTIN\Administrators / Full Control
browsable
changenotify
show-previous-versions
svm ipc$ / browsable - -
svm share /vol_ntfs oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
svm share_qtree /vol_ntfs/qtree1 oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
svm share_qtree_ /vol_ntfs/qtree2/ oplocks - Everyone / Full Control
dir dir browsable
changenotify
show-previous-versions
5 entries were displayed.
share_qtree
とshare_qtree_dir
の2つのSMBファイル共有を作成しました。
なお、SMBファイル共有のパスに存在しないパスを指定しようとすると、以下のように怒られます。
::*> cifs share create -vserver svm -share-name share_qtree -path /vol_ntfs/qtree
Error: command failed: The specified path "/vol_ntfs/qtree" does not exist in the namespace belonging to Vserver "svm".
SMBファイル共有のパスに含まれるディレクトリ名の変更
SMBファイル共有のパスに含まれるディレクトリ名の変更を行います。
変更前の状態は以下のとおりです。
エクスプローラーで以下のようにディレクトリ名を変更します。
変更時は警告や拒否はされませんでした。
リネーム後のSMBファイル共有とqtreeの情報は以下のとおりです。
::*> cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm c$ / oplocks - BUILTIN\Administrators / Full Control
browsable
changenotify
show-previous-versions
svm ipc$ / browsable - -
svm share /vol_ntfs oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
svm share_qtree /vol_ntfs/qtree1 oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
svm share_qtree_ /vol_ntfs/qtree2/ oplocks - Everyone / Full Control
dir dir browsable
changenotify
show-previous-versions
5 entries were displayed.
::*> qtree show -volume vol_ntfs
Vserver Volume Qtree Style Oplocks Status
---------- ------------- ------------ ------------ --------- --------
svm vol_ntfs "" ntfs enable normal
svm vol_ntfs qtree1_renamed
ntfs enable normal
svm vol_ntfs qtree2_renamed
ntfs enable normal
3 entries were displayed.
qtree名は変わっていますが、SMBファイル共有のパスは変わっていませんね。どうやらFSxNも自動でパスの追従はしてくれなさそうです。
SMBファイル共有にアクセス
SMBファイル共有にアクセスしてみましょう。
はい、作成したどちらのSMBファイル共有にもアクセスできませんでした。
SMBファイル共有のパスの変更
SMBファイル共有のパスの変更をした後、アクセスできることを確認します。
ONTAP CLIでパスを変更します。
::*> cifs share modify -share-name share_qtree -path /vol_ntfs/qtree1_renamed
::*> cifs share modify -share-name share_qtree_dir -path /vol_ntfs/qtree2_renamed/dir
::*> cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm c$ / oplocks - BUILTIN\Administrators / Full Control
browsable
changenotify
show-previous-versions
svm ipc$ / browsable - -
svm share /vol_ntfs oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
svm share_qtree /vol_ntfs/qtree1_ oplocks - Everyone / Full Control
renamed browsable
changenotify
show-previous-versions
svm share_qtree_ /vol_ntfs/qtree2_ oplocks - Everyone / Full Control
dir renamed/dir browsable
changenotify
show-previous-versions
5 entries were displayed.
変更後にSMBファイル共有にアクセスできることを確認します。
はい、どちらもアクセスできるようになりました。
そのため、SMBファイル共有のパスに含まれるディレクトリ名を変更する際は以下2ステップが必要になります。
- ディレクトリ名の変更
- qtreeであってもSMB経由での変更でOK
- ONTAP CLIもしくはONTAP REST APIでSMBファイル共有のパスを変更する
fsmgmt.msc
からSMBファイル共有のパスを変更することはできません。以下のようにテキストボックスがグレーアウトにはなっていませんが変更できませんでした。
qtree名をONTAP CLIから変更した場合
qtree名をONTAP CLIから変更した場合も確認します。
::*> qtree rename -volume vol_ntfs -qtree qtree1_renamed -newname qtree1_renamed2
::*> qtree rename -volume vol_ntfs -qtree qtree2_renamed -newname qtree2_renamed2
::*> qtree show -volume vol_ntfs
Vserver Volume Qtree Style Oplocks Status
---------- ------------- ------------ ------------ --------- --------
svm vol_ntfs "" ntfs enable normal
svm vol_ntfs qtree1_renamed2
ntfs enable normal
svm vol_ntfs qtree2_renamed2
ntfs enable normal
3 entries were displayed.
::*> cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm c$ / oplocks - BUILTIN\Administrators / Full Control
browsable
changenotify
show-previous-versions
svm ipc$ / browsable - -
svm share /vol_ntfs oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
svm share_qtree /vol_ntfs/qtree1_ oplocks - Everyone / Full Control
renamed browsable
changenotify
show-previous-versions
svm share_qtree_ /vol_ntfs/qtree2_ oplocks - Everyone / Full Control
dir renamed/dir browsable
changenotify
show-previous-versions
5 entries were displayed.
はい、qtree名をONTAP CLIで変更したからといってSMBファイル共有のパスは自動で更新はされませんでした。
qtree名変更後、SMBファイル共有にアクセスしようとすると弾かれました。
> ls \\SMB-SERVER.corp.non-97.net\share_qtree
ls : Cannot find path '\\SMB-SERVER.corp.non-97.net\share_qtree' because it does not exist.
At line:1 char:1
+ ls \\SMB-SERVER.corp.non-97.net\share_qtree
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (\\SMB-SERVER.corp.non-97.net\share_qtree:String) [Get-ChildItem], ItemN
otFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
おまけ : SMBファイル共有の名前は変更できない
おまけとして、SMBファイル共有の名前を後から変更することはできません。
ONTAP CLIでSMBファイル共有関連のコマンドを覗いても、該当するオプションはありませんでした。
::*> cifs share ?
access-control> The access-control directory
create Create a CIFS share
delete Delete a CIFS share
modify Modify a CIFS share
properties> Manage share properties
show Display CIFS shares
::*> cifs share modify -share-name share_qtree ?
[ -vserver <vserver name> ] Vserver (default: svm)
[ -path <text (size 1..256)> ] Path
[ -symlink-properties {enable|hide|read-only|symlinks|symlinks-and-widelinks|disable|no-strict-security}, ... ] Symlink Properties
[ -file-umask <Octal Integer> ] File Mode Creation Mask
[ -dir-umask <Octal Integer> ] Directory Mode Creation Mask
[ -comment <text (size 1..256)> ] Share Comment
[ -attribute-cache-ttl <[<integer>d][<integer>h][<integer>m][<integer>s]> ] File Attribute Cache Lifetime
[ -offline-files {none|manual|documents|programs} ] Offline Files
[ -vscan-fileop-profile {no-scan|standard|strict|writes-only} ] Vscan File-Operations Profile
[ -max-connections-per-share <integer> ] Maximum Tree Connections on Share
[ -force-group-for-create <text> ] UNIX Group for File Create
fsmgmt.msc
も同様にSMBファイル共有名を変更することはできません。
部署名の変更などでSMBファイル共有名を変更したい場合は、SMBファイル共有を新しい名前で作り直す必要があります。
SMBファイル共有のパスに含まれるディレクトリの名前を変更する時は注意しよう
SMBファイル共有のパスに含まれるディレクトリの名前を変更した時の対応方法を確認してみました。
SMBファイル共有のパスに含まれるディレクトリの名前を変更する時は注意しましょう。特に複数のSMBファイル共有に含まれるディレクトリの場合、影響および修正範囲は大きくなります。ディレクトリ名を変更する際はSMBファイル共有のパス一覧を確認した上で行うのが安心です。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!