[Amazon FSx for NetApp ONTAP] AWS DataSyncでワークグループのSMBサーバーをロケーションに設定することはできない件
FSxNのワークグループのSMBサーバーをDataSyncのロケーションに設定することはできない
こんにちは、のんピ(@non____97)です。
皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)のワークグループのSMBサーバーに対してDataSyncでデータ転送したいと思ったことはありますか? 私はあまりありません。
以下記事で紹介している通り、SMBサーバーがドメインに参加していない場合、ロケーションタイプがAmazon FSx
だとDataSyncのロケーションとして設定することはできません。
これはドメイン参加しなければ、FSxNにSMBのエンドポイントが作成されない仕様であるためです。そのため、ワークグループのSMBサーバーの場合はDataSyncでSMBによる接続をすることができません。
対処方法として2点考えられます。
- DataSync Agentを使って転送する
- 一時的にSMBサーバーをドメイン参加させて転送する
DataSync Agentを使用する場合、以下AWS公式ブログに記載の通りworkgroup service account
と記載あるので、恐らくできるのでしょう。
Note: The source AWS account Windows file server administrator must grant the file share domain or workgroup service account with the permissions to access files, folders, and metadata.
Transferring data between AWS accounts using AWS DataSync | AWS Storage Blog
気になるのはDataSync AgentのEC2インスタンスが必要になるところです。
FSxNはDataSync Agentレスで転送することも可能です。ワークグループの場合は追加でDataSync Agentのコストが発生するところがネックです。
また、ACLがどのようにコピーされるのかも気になりますね。
DataSyncのメタデータの扱いを記しているAWS公式ドキュメントを確認しても、「ワークグループかドメインかでどのようにACLが設定されるか」といった情報はありませんでした。
実際に試してみたので紹介します。
いきなりまとめ
- ワークグループ間でDataSyncを使ってファイルの転送をする場合は、どちらかのロケーションでDataSync Agentを介して転送するようタスクを構成する
- DataSync Agentを使用するロケーション間で転送することはできない
- ワークグループのファイルサーバー間で転送はできない
- ドメイン参加しているファイルサーバーとワークグループのファイルサーバー間で転送は可能
- ドメイン → ワークグループ : DACLの転送不可
- ワークグループ → ドメイン : DACLの転送可
- ローカルユーザーのACEは移行後、手動で更新が必要
検証環境
検証環境は以下のとおりです。
AD DCについては以下記事の検証で使用したものを流用します。
ロケーションタイプがAmazon FSxだとFSxNのワークグループのSMBサーバーはDataSyncのロケーションとして設定することはできないことを確認
SMBサーバーとファイル共有の作成
SMBサーバーを作成します。
# ワークグループのSMBサーバーの作成 ::> cifs create -vserver svm -cifs-server smb-server -workgroup WORKGROUP Notice: SMB1 protocol version is obsolete and considered insecure. Therefore it is deprecated and disabled on this CIFS server. Support for SMB1 might be removed in a future release. If required, use the (privilege: advanced) "vserver cifs options modify -vserver svm -smb1-enabled true" to enable it. # ワークグループのSMBサーバーが作成されたことを確認 ::> cifs show Server Status Domain/Workgroup Authentication Vserver Name Admin Name Style ----------- --------------- --------- ---------------- -------------- svm SMB-SERVER up WORKGROUP workgroup
作成したSMBサーバー内にファイル共有を2つ作成します。
# ボリュームの確認 ::> volume show Vserver Volume Aggregate State Type Size Available Used% --------- ------------ ------------ ---------- ---- ---------- ---------- ----- svm svm_root aggr1 online RW 1GB 972.3MB 0% svm vol1 aggr1 online RW 1GB 972.5MB 0% svm vol2 aggr1 online RW 1GB 972.5MB 0% 3 entries were displayed. # ファイル共有の作成 ::> cifs share create -vserver svm -share-name share -path /vol1 ::> cifs share create -vserver svm -share-name share2 -path /vol2 # ファイル共有が作成されたことを確認 ::> 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 /vol1 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm share2 /vol2 oplocks - Everyone / Full Control browsable changenotify show-previous-versions 4 entries were displayed.
smb-user
というSMBローカルユーザーを作成します。
# SMBローカルユーザーの作成 ::> cifs users-and-groups local-user create -vserver svm -user-name smb-user -is-account-disabled false Enter the password: Confirm the password: # SMBローカルユーザーが作成されたことを確認 ::> cifs users-and-groups local-user show Vserver User Name Full Name Description ------------ --------------------------- -------------------- ------------- svm SMB-SERVER\Administrator Built-in administrator account svm SMB-SERVER\smb-user - - 2 entries were displayed. # share のパスである /vol1 のDACLの確認 ::> vserver security file-directory show -vserver svm -path /vol1 Vserver: svm File Path: /vol1 File Inode Number: 64 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x8004 Owner:BUILTIN\Administrators Group:BUILTIN\Administrators DACL - ACEs ALLOW-Everyone-0x1f01ff ALLOW-Everyone-0x10000000-OI|CI|IO
作成したファイル共有をマウントします。
# share のマウント > net use Z: \\svm-083d68f0296ab81e2.fs-0e067fd606d33b233.fsx.us-east-1.amazonaws.com\share The password is invalid for \\svm-083d68f0296ab81e2.fs-0e067fd606d33b233.fsx.us-east-1.amazonaws.com\share. Enter the user name for 'svm-083d68f0296ab81e2.fs-0e067fd606d33b233.fsx.us-east-1.amazonaws.com': SMB-SERVER\smb-user Enter the password for svm-083d68f0296ab81e2.fs-0e067fd606d33b233.fsx.us-east-1.amazonaws.com: The command completed successfully. # share2 のマウント > net use Y: \\svm-083d68f0296ab81e2.fs-0e067fd606d33b233.fsx.us-east-1.amazonaws.com\share2 The command completed successfully. # マウントできていることを確認 > Get-PSDrive -PSProvider FileSystem Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- C 14.97 15.03 FileSystem C:\ Users\Administrator Y 0.00 0.95 FileSystem \\svm-083d68f0296ab81e2.fs-0e067... Z 0.00 0.95 FileSystem \\svm-083d68f0296ab81e2.fs-0e067... # share 内にテストファイルを作成 > echo test > Z:\test.txt > ls Z:\ Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 10/15/2023 1:53 AM 14 test.txt
DataSyncによってDACLがどのように扱われるのか気になるので、マウントした領域に対してsmb-user
のFullControlを追加します。
Remotely setting permissions on the folder at the root of the share removes all inherited permissions from the root folder and all subfolders. To set permissions without removing the inherited permissions, click No and either change the permissions on a child folder or make the change while logged in locally. Do you want to continue?
とファイル共有のルートからACLの設定をしようとしているため忠告されますが、続行します。
権限の継承周りも確認したいので適当にフォルダとファイルも追加します。
> mkdir Z:\dir Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 10/15/2023 6:24 AM dir > echo test2 > Z:\dir\test2.txt�
DACL設定後、ONTAP CLIでsmb-user
に対する許可があることを確認します。
::> vserver security file-directory show -vserver svm -path /vol1 Vserver: svm File Path: /vol1 File Inode Number: 64 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x9504 Owner:BUILTIN\Administrators Group:BUILTIN\Administrators DACL - ACEs ALLOW-Everyone-0x1f01ff-OI|CI ALLOW-SMB-SERVER\smb-user-0x1f01ff-OI|CI ::> vserver security file-directory show -vserver svm -path /vol1/dir Vserver: svm File Path: /vol1/dir File Inode Number: 98 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 1 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x8404 Owner:BUILTIN\Administrators Group:CORP\Domain Users DACL - ACEs ALLOW-Everyone-0x1f01ff-OI|CI (Inherited) ALLOW-SMB-SERVER\smb-user-0x1200a9-OI|CI (Inherited)�
DataSyncのロケーションに設定
マネジメントコンソールからSVMの情報を確認します。
SMBサーバーはドメイン参加させていないので、SMBエンドポイントの情報はありません。
この状態でDataSyncのロケーションを作成します。
ロケーションタイプをAmazon FSx
とします。
SMB-SERVER\smb-user
というユーザー名の指定がよろしくないと1 validation error detected: Value 'SMB-SERVER\smb-user' at 'protocol.sMB.user' failed to satisfy constraint: Member must satisfy regular expression pattern: ^[^\x5B\x5D\\/:;|=,+*?]{1,104}$
というエラーで怒られました。
smb-server
に変更して再トライします。
次はInvalid FSx for ONTAP SVM, ARN:svm-083d68f0296ab81e2, reason: No SMB endpoint configured for FSx for ONTAP SVM.
とSMBのエンドポイントがSVMに設定されていないと怒られました。
やはり、ロケーションタイプがAmazon FSx
だとFSxNのワークグループのSMBサーバーはDataSyncのロケーションとして設定することはできませんね。DNSサーバーを指定するパラメーターがない以上、接続先のIPアドレスが不明であるため当然とも言えます。
DataSync Agentを使って転送する
DataSync Agentの作成
それではDataSync Agentを使って転送してみましょう。
下準備としてDataSync AgentのEC2インスタンスを作成します。
DataSync AgentのAMIを以下コマンドで検索します。表示されたAMIを使用してEC2インスタンスを作成します。
$ aws ssm get-parameter \ --name /aws/service/datasync/ami \ --region us-east-1 { "Parameter": { "Name": "/aws/service/datasync/ami", "Type": "String", "Value": "ami-00c2bc15c67daab10", "Version": 87, "LastModifiedDate": "2023-09-26T17:46:51.383000+00:00", "ARN": "arn:aws:ssm:us-east-1::parameter/aws/service/datasync/ami", "DataType": "text" } }
DataSync AgentのEC2インスタンス作成後、DataSyncのコンソールからDataSync Agentのアクティベーションを行います。エージェントのIPアドレスを指定してアクティベーションキーを取得します。今回DataSync Agentはパブリックサブネットに作成したのでパブリックIPアドレスです。
アクティベーションキーの取得が完了したらエージェントを作成する
をクリックします。
DataSync Agentの作成が完了しました。
ワークグループのSMBサーバー間で転送
DataSync Agentの作成が完了したので転送してみましょう。
まず、ワークグループのSMBサーバー間で転送しようとします。
ロケーションタイプでサーバーメッセージブロック(SMB)
を選択して、先ほど作成したDataSync Agentを介して、FSxNのワークグループのSMBサーバー上のshare
というファイル共有にアクセスできるように設定します。
問題なくロケーションの作成ができました。
同様にのshare2
というファイル共有のロケーションを作成します。
それでは、DataSyncのタスクを作成します。
送信元のロケーションにはshare
を選択します。
送信先のロケーションにはshare2
を...と思いましたが、share2
のロケーションが選択できません。
もしかすると、同じDataSync Agentを使用する転送はできないのでしょうか。
share2
用にDataSync Agentを作成します。
追加したDataSync Agentでshare2
のロケーションを設定します。
送信元ロケーションに設定できるか試してみます。
しかし、やはり送信元ロケーションに作成したロケーションを指定することはできませんでした。
送信先ロケーションのロケーションタイプをよくよく見てみるとTransfers from SMB can go to Amazon EFS, Amazon FSx, or Amazon S3.
と記載がありました。
実際新しいロケーションを作成する
を選択すると、指定できるロケーションタイプはEFSとFSx、S3しかありませんでした。
以上のことから、DataSync Agentを使用するロケーション間で転送することはできません。
つまりは、ワークグループのファイルサーバー間で転送はできないようです。
EC2インスタンス上で動作しているファイルサーバーからEC2インスタンス上で動作しているファイルサーバーへの移行のためにDataSyncを使用するということもできないですね。EC2インスタンス間のファイル転送はRoboCopyやrsyncを使うことになりそうです。
一時的にドメイン参加させて転送する
ドメイン参加しているSMBサーバーからワークグループのSMBサーバーに転送
ワークグループのSMBサーバー間ではDataSync Agentを介して転送できないことを確認しました。
それでは片方がドメイン参加している場合はどうでしょうか。
あまりユースケースとしてはないと思いますが、ドメイン参加しているSMBサーバーからワークグループのSMBサーバーに転送できるか検証します。
まず、既存のSVMサーバーをドメインに参加させます。
ドメイン参加の詳細な手順は以下記事をご覧ください。
なお、以下記事で紹介しているとおり、SVM内にSMBサーバーがある状態で、マネジメントコンソールからSMBサーバーをドメイン参加させることはできません。
設定時のログは以下のとおりです。
# DNSサーバーの設定が存在しないことを確認 ::> dns dynamic-update show This table is currently empty. # DNSサーバーの設定を追加 ::> dns create -vserver svm -domains corp.non-97.net -name-servers 10.0.0.139 Warning: Only one DNS server is configured. Configure more than one DNS server to avoid a single-point-of-failure. # DNSサーバーの設定が追加されたことを確認 ::> dns show Name Vserver Domains Servers --------------- ----------------------------------- ---------------- svm corp.non-97.net 10.0.0.139 FsxId0e067fd606d33b233::> FsxId0e067fd606d33b233::> dns dynamic-update show Vserver Is-Enabled Use-Secure Vserver FQDN TTL --------------- ---------- ---------- ------------------------ ------- svm false false - 24h # ドメイン参加時にゾーンにDNSレコードが登録されるように、DNSの動的更新を有効化 ::> dns dynamic-update modify -vserver svm -is-enabled true -use-secure true -vserver-fqdn corp.non-97.net # DNSの動的更新が有効化されていることを確認 ::> dns dynamic-update show Vserver Is-Enabled Use-Secure Vserver FQDN TTL --------------- ---------- ---------- ------------------------ ------- svm true true corp.non-97.net 24h # SMBサーバーをドメインに参加させる ::> cifs modify -vserver svm -cifs-server SMB-SERVER -domain corp.non-97.net -ou OU=FSxForONTAP,DC=corp,DC=non-97,DC=net -status-admin down In order to create an Active Directory machine account for the CIFS server, you must supply the name and password of a Windows account with sufficient privileges to add computers to the "OU=FSxForONTAP,DC=corp,DC=non-97,DC=net" container within the "CORP.NON-97.NET" domain. Enter the user name: FSxServiceAccount Enter the password: # ドメインに参加したことを確認 ::> cifs show -instance Vserver: svm CIFS Server NetBIOS Name: SMB-SERVER NetBIOS Domain/Workgroup Name: CORP Fully Qualified Domain Name: CORP.NON-97.NET Organizational Unit: OU=FSxForONTAP,DC=corp,DC=non-97,DC=net Default Site Used by LIFs Without Site Membership: Workgroup Name: - Authentication Style: domain CIFS Server Administrative Status: up CIFS Server Description: List of NetBIOS Aliases: -
ちなみに、ドメイン参加後も継続してファイル共有にアクセスすることは可能です。
> ls Z:\ Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 10/15/2023 1:53 AM 14 test.txt
続いて、マネジメントコンソールからSVMを追加します。その後、ONTAP CLIからワークグループのSMBサーバーを作成します。
::> vserver show Admin Operational Root Vserver Type Subtype State State Volume Aggregate ----------- ------- ---------- ---------- ----------- ---------- ---------- svm data default running running svm_root aggr1 svm2 data default running running svm2_root aggr1 2 entries were displayed. ::> vol show Vserver Volume Aggregate State Type Size Available Used% --------- ------------ ------------ ---------- ---- ---------- ---------- ----- svm svm_root aggr1 online RW 1GB 970.8MB 0% svm vol1 aggr1 online RW 1GB 972.4MB 0% svm vol2 aggr1 online RW 1GB 972.4MB 0% svm2 svm2_root aggr1 online RW 1GB 972.5MB 0% svm2 vol1_svm2 aggr1 online RW 1GB 972.5MB 0% 5 entries were displayed. ::> cifs create -vserver svm2 -cifs-server smb-server2 -workgroup WORKGROUP Notice: SMB1 protocol version is obsolete and considered insecure. Therefore it is deprecated and disabled on this CIFS server. Support for SMB1 might be removed in a future release. If required, use the (privilege: advanced) "vserver cifs options modify -vserver svm2 -smb1-enabled true" to enable it. ::> cifs show Server Status Domain/Workgroup Authentication Vserver Name Admin Name Style ----------- --------------- --------- ---------------- -------------- svm SMB-SERVER up CORP domain svm2 SMB-SERVER2 up WORKGROUP workgroup 2 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 /vol1 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm share2 /vol2 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm2 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm2 ipc$ / browsable - - svm2 share_svm2 /vol1_svm2 oplocks - Everyone / Full Control browsable changenotify show-previous-versions 7 entries were displayed.
追加したSVM上にsmb-server-svm2
というローカルユーザーを作成します。
::> cifs users-and-groups local-user create -vserver svm2 -user-name smb-user-svm2 -is-account-disabled false Enter the password: Confirm the password: ::> cifs users-and-groups local-user show Vserver User Name Full Name Description ------------ --------------------------- -------------------- ------------- svm SMB-SERVER\Administrator Built-in administrator account svm SMB-SERVER\smb-user - - svm2 SMB-SERVER2\Administrator Built-in administrator account svm2 SMB-SERVER2\smb-user-svm2 - - 4 entries were displayed.
ファイル共有share
のFSxのロケーションを作成します。なんとなくユーザーはドメインのAdministratorにしました。
ロケーションが作成されたことを確認します。
次に、追加したSVMのロケーションを作成します。こちらはDataSync Agentを介してアクセスするように設定します。
ロケーションが作成されたことを確認します。
作成したロケーションを使ってDataSyncタスクを作成します。
送信元ロケーションはFSxのロケーションを選択します。
送信先ロケーションは追加したSVMのロケーションを選択します。
DACLもコピーするように設定してあげます。
設定内容を確認します。
作成されたタスクを確認します。
DataSyncタスクを実行します。
すると、Transfer and verification completed. Selected files transferred except for files skipped due to errors. If no skipped files are listed in Cloud Watch Logs, please contact AWS Support for further assistance
というエラーメッセージが出力されています。
CloudWatch Logsを確認しましょう。ファイルは転送できていそうですが、ファイルの属性を設定しようとしたときにエラーになっています。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | timestamp | message | |---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1697351525375 | [INFO] Request to start task-000091a4be0d814d2. | | 1697351660717 | [INFO] Execution exec-0080c263756e8c73b started. | | 1697351661772 | [NOTICE] Created directory /dir | | 1697351663323 | [NOTICE] Transferred file /test.txt, 14 bytes | | 1697351663323 | [NOTICE] Transferred file /dir/test2.txt, 16 bytes | | 1697351663366 | [ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/"): Input/output error | | 1697351663380 | [ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/test.txt"): Input/output error | | 1697351663381 | [ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/dir/test2.txt"): Input/output error | | 1697351663893 | [NOTICE] Transferred directory metadata /dir | | 1697351663930 | [NOTICE] Transferred directory metadata / | | 1697351663936 | [ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/dir"): Input/output error | | 1697351663939 | [ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/"): Input/output error | | 1697351663975 | [ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/"): Input/output error | | 1697351663975 | [ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/dir"): Input/output error | | 1697351664541 | [NOTICE] Verification failed <> / | | 1697351664541 | [NOTICE] / srcMeta: type=D mode=0755 uid=65534 gid=65534 size=0 atime=1697351660/722367000 mtime=1697351069/863016000 extAttrsHash=23988707 | | 1697351664541 | [NOTICE] / dstMeta: type=D mode=0755 uid=65534 gid=65534 size=0 atime=1697351660/722367000 mtime=1697351069/863016000 extAttrsHash=3781021368 | | 1697351664541 | [NOTICE] Verification failed <> /dir/test2.txt | | 1697351664541 | [NOTICE] /dir/test2.txt srcMeta: type=R mode=0755 uid=65534 gid=65534 size=16 atime=1697351501/391360000 mtime=1697351501/391360000 extAttrsHash=1404258776 | | 1697351664541 | [NOTICE] srcHash: f9ba49f2e4a951f3619a1c3c8f43459b23c6142475d06ae05ab3b20b97a8f224 | | 1697351664541 | [NOTICE] /dir/test2.txt dstMeta: type=R mode=0755 uid=65534 gid=65534 size=16 atime=1697351501/391360000 mtime=1697351501/391360000 extAttrsHash=4001516125 | | 1697351664541 | [NOTICE] dstHash: f9ba49f2e4a951f3619a1c3c8f43459b23c6142475d06ae05ab3b20b97a8f224 | | 1697351664541 | [NOTICE] Verification failed <> /test.txt | | 1697351664541 | [NOTICE] /test.txt srcMeta: type=R mode=0755 uid=65534 gid=65534 size=14 atime=1697351010/403308000 mtime=1697334803/233573000 extAttrsHash=3499782064 | | 1697351664541 | [NOTICE] srcHash: f68e37dc9cabf2ee8b94d6a5d28ad04be246ccc2e82911f8f1ac390dcf0ee364 | | 1697351664541 | [NOTICE] /test.txt dstMeta: type=R mode=0755 uid=65534 gid=65534 size=14 atime=1697351010/403308000 mtime=1697334803/233573000 extAttrsHash=1839950901 | | 1697351664541 | [NOTICE] dstHash: f68e37dc9cabf2ee8b94d6a5d28ad04be246ccc2e82911f8f1ac390dcf0ee364 | | 1697351664588 | [INFO] Execution exec-0080c263756e8c73b finished with status Transfer and verification completed. Selected files transferred except for files skipped due to errors. If no skipped files are listed in Cloud Watch Logs, please contact AWS Support for further assistance. | -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ONTAP CLIからDACLを確認します。
smb-user
のACEがありませんね。
::> vserver security file-directory show -vserver svm2 -path /vol1_svm2 Vserver: svm2 File Path: /vol1_svm2 File Inode Number: 64 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x8004 Owner:BUILTIN\Administrators Group:BUILTIN\Administrators DACL - ACEs ALLOW-Everyone-0x1f01ff ALLOW-Everyone-0x10000000-OI|CI|IO ::> vserver security file-directory show -vserver svm2 -path /vol1_svm2/dir Vserver: svm2 File Path: /vol1_svm2/dir File Inode Number: 106 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 65534 UNIX Group Id: 65534 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x8004 Owner:SMB-SERVER2\smb-user-svm2 Group:SMB-SERVER2\None DACL - ACEs ALLOW-Everyone-0x1f01ff-(Inherited) ALLOW-Everyone-0x10000000-OI|CI|IO (Inherited)
ファイルが転送されているか確認するために、転送先のファイル共有share_svm2
を確認します。
> net use X: \\10.0.8.223\share_svm2 The password is invalid for \\10.0.8.223\share_svm2. Enter the user name for '10.0.8.223': smb-user-svm2 Enter the password for 10.0.8.223: The command completed successfully. > Get-PSDrive -PSProvider FileSystem Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- C 14.97 15.03 FileSystem C:\ Users\Administrator X 0.00 0.95 FileSystem \\10.0.8.223\share_svm2 Y 0.00 0.95 FileSystem \\svm-083d68f0296ab81e2.fs-0e067... Z 0.00 0.95 FileSystem \\svm-083d68f0296ab81e2.fs-0e067... > ls -R Z:\ Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 10/15/2023 6:31 AM dir -a---- 10/15/2023 1:53 AM 14 test.txt Directory: Z:\dir Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 10/15/2023 6:31 AM 16 test2.txt
ファイル自体は転送されていそうですね。
しかし、ACLを確認すると、やはりsmb-user
のACEは設定されていませんでした。
ワークグループのSMBサーバーからドメイン参加しているSMBサーバーに転送
次に、ワークグループのSMBサーバーからドメイン参加しているSMBサーバーに転送する場合も検証してみます。
share
内の全ファイルを削除しておきます。
また、share_svm2
内のルートでsmb-user-svm2
のFull Controlを追加します。
ワークグループからドメインに転送するタスクを作成して実行します。
こちらのタスクはエラーなく、正常に実行完了しました。
CloudWatch Logsに出力されたログを確認しても、特に気になるものは記録されていません。
----------------------------------------------------------------------------------------------------------------------------- | timestamp | message | |---------------|-----------------------------------------------------------------------------------------------------------| | 1697352595540 | [INFO] Request to start task-096be29e591c977ae. | | 1697352705552 | [INFO] Execution exec-0cd723f59ca460fad started. | | 1697352725649 | [INFO] Started logging in destination hostId: host-032c15731d6e8312f for Execution exec-0cd723f59ca460fad | | 1697352725750 | [INFO] Started logging in destination hostId: host-04554af996e7f0818 for Execution exec-0cd723f59ca460fad | | 1697352725786 | [INFO] Started logging in destination hostId: host-05222377366939165 for Execution exec-0cd723f59ca460fad | | 1697352725826 | [INFO] Started logging in destination hostId: host-0891499ba6b4088a7 for Execution exec-0cd723f59ca460fad | | 1697352727495 | [NOTICE] Created directory /dir | | 1697352728121 | [NOTICE] Transferred file /dir/test2.txt, 16 bytes | | 1697352728121 | [NOTICE] Transferred file /test.txt, 14 bytes | | 1697352728261 | [NOTICE] Transferred directory metadata /dir | | 1697352728262 | [NOTICE] Transferred directory metadata / | | 1697352728549 | [NOTICE] Verified directory / | | 1697352728549 | [NOTICE] Verified file /dir/test2.txt, 16 bytes | | 1697352728549 | [NOTICE] Verified file /test.txt, 14 bytes | | 1697352728620 | [INFO] Execution exec-0cd723f59ca460fad finished with status Success. | -----------------------------------------------------------------------------------------------------------------------------
ファイルが転送されていることを確認します。
> ls -R Z:\ Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 10/15/2023 6:52 AM .aws-datasync d----- 10/15/2023 6:31 AM dir -a---- 10/15/2023 1:53 AM 14 test.txt Directory: Z:\dir Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 10/15/2023 6:31 AM 16 test2.txt
転送されていますね。
エクスプローラーからACLを確認すると、smb-user-svm2
のACEも設定されていました。
ONTAP CLIからもDACLを確認します。
::> vserver security file-directory show -vserver svm -path /vol1 Vserver: svm File Path: /vol1 File Inode Number: 64 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x9404 Owner:BUILTIN\Administrators Group:BUILTIN\Administrators DACL - ACEs ALLOW-Everyone-0x1f01ff-OI|CI ALLOW-S-1-5-21-931618959-425482467-1761714529-1001-0x1200a9-OI|CI Vserver: svm (internal ID: 3) Lookup of CIFS account SID procedure succeeded [ 0 ms] Successfully connected to ip 10.0.0.139, port 445 using TCP [ 4] Successfully authenticated with DC ec2amaz-75jbqck.corp.non-97.net [ 7] Could not find Windows SID 'S-1-5-21-931618959-425482467-1761714529-1001' ::> vserver security file-directory show -vserver svm -path /vol1/dir Vserver: svm File Path: /vol1/dir File Inode Number: 101 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x8404 Owner:S-1-5-21-931618959-425482467-1761714529-1001 Group:CORP\Domain Users DACL - ACEs ALLOW-Everyone-0x1f01ff-OI|CI (Inherited) ALLOW-S-1-5-21-931618959-425482467-1761714529-1001-0x1200a9-OI|CI (Inherited) Vserver: svm (internal ID: 3) Lookup of CIFS account SID procedure succeeded [ 2 ms] Encountered NT error (NT_STATUS_PENDING) for SMB command Read [ 2] Using a cached connection to ec2amaz-75jbqck.corp.non-97.net [ 3] Could not find Windows SID 'S-1-5-21-931618959-425482467-1761714529-1001' Vserver: svm (internal ID: 3) Lookup of CIFS account SID procedure succeeded [ 0 ms] Using a cached connection to ec2amaz-75jbqck.corp.non-97.net [ 1] Could not find Windows SID 'S-1-5-21-931618959-425482467-1761714529-1001'
Everyone以外のACEもありますね。ただし、SVMが異なるのでSIDが表示されています。
ドメイン参加しているSMBサーバーからワークグループのSMBサーバーに転送 (2回目)
もう一度、ドメイン参加しているSMBサーバーからワークグループのSMBサーバーに転送してみます。
今回はEveryoneのFull Controlを削除した状態で行います。
転送先ではsmb-user-svm2
のFull Controlのみを付与します。
転送元ではsmb-user
とsmb-user-svm2
のFull Controlを付与します。
この状態でDataSyncタスクを実行すると、前回同様のエラーが出力されました。
実行時のログは以下のとおりです。ファイル共有のルートに権限を付与しようとしてエラーになっていそうです。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | timestamp | message | |---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1697364460735 | [INFO] Request to start task-000091a4be0d814d2. | | 1697364802603 | [INFO] Started logging in destination hostId: host-0710a1125b76465b1 for Execution exec-059ad0ba0c6ff96e9 | | 1697364802951 | [INFO] Execution exec-059ad0ba0c6ff96e9 started. | | 1697364808096 | [NOTICE] Created directory /dir | | 1697364808626 | [NOTICE] Transferred file /test.txt, 14 bytes | | 1697364808627 | [NOTICE] Transferred file /dir/test2.txt, 16 bytes | | 1697364808670 | [ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/"): Input/output error | | 1697364810721 | [NOTICE] Transferred directory metadata /dir | | 1697364810767 | [ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/"): Input/output error | | 1697364810769 | [NOTICE] Transferred directory metadata / | | 1697364810815 | [ERROR] Deferred error: WriteFileExtAttr2 failed to setextattrlist(filename="/"): Input/output error | | 1697364811134 | [NOTICE] Verified file /dir/test2.txt, 16 bytes | | 1697364811134 | [NOTICE] Verified file /test.txt, 14 bytes | | 1697364811134 | [NOTICE] Verification failed <> / | | 1697364811134 | [NOTICE] / srcMeta: type=D mode=0755 uid=65534 gid=65534 size=0 atime=1697364367/303310000 mtime=1697363478/33250000 extAttrsHash=971650054 | | 1697364811134 | [NOTICE] / dstMeta: type=D mode=0755 uid=65534 gid=65534 size=0 atime=1697364367/303310000 mtime=1697363478/33250000 extAttrsHash=3825305622 | | 1697364811405 | [INFO] Execution exec-059ad0ba0c6ff96e9 finished with status Transfer and verification completed. Selected files transferred except for files skipped due to errors. If no skipped files are listed in Cloud Watch Logs, please contact AWS Support for further assistance. | -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
転送先のshare-svm2
のルートのACLを確認すると、smb-user-svm2
以外のACEが存在しないことが分かります。
転送先を一時的にドメイン参加させるのがオススメ
Amazon FSx for NetApp ONTAPのワークグループのSMBサーバーをAWS DataSyncのロケーションとして設定することはできないことを紹介しました。
ワークグループからドメイン環境、ドメイン環境からワークグループへどちらもファイル自体は転送できますが、前者はACLの移行ができません。なお、後者もローカルユーザーのACEは再設定する必要があります。
では、どちらのパターンでも良いのか? というと、個人的に後者がオススメです。基本的に転送元 = 移行元で大幅な設定変更は行いたくないです。何かあった時の影響範囲を正確に把握するのにも時間がかかると思います。
転送先で不具合があったとしても、一度設定をクリアして再度設定し直すことでリカバリがしやすいかと思います。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!