[Amazon FSx for NetApp ONTAP] AWS DataSyncでワークグループのSMBサーバーをロケーションに設定することはできない件

転送先を一時的にドメイン参加させるのがオススメ
2023.10.15

FSxNのワークグループのSMBサーバーをDataSyncのロケーションに設定することはできない

こんにちは、のんピ(@non____97)です。

皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)のワークグループのSMBサーバーに対してDataSyncでデータ転送したいと思ったことはありますか? 私はあまりありません。

以下記事で紹介している通り、SMBサーバーがドメインに参加していない場合、ロケーションタイプがAmazon FSxだとDataSyncのロケーションとして設定することはできません。

これはドメイン参加しなければ、FSxNにSMBのエンドポイントが作成されない仕様であるためです。そのため、ワークグループのSMBサーバーの場合はDataSyncでSMBによる接続をすることができません。

対処方法として2点考えられます。

  1. DataSync Agentを使って転送する
  2. 一時的に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は移行後、手動で更新が必要

検証環境

検証環境は以下のとおりです。

AWS DataSyncでワークグループのSMBサーバーをロケーションに設定することはできない件検証環境構成図

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を追加します。

shareに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エンドポイントの情報はありません。

SVMの確認

この状態で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}$というエラーで怒られました。

validation error detected- Value

smb-serverに変更して再トライします。

次はInvalid FSx for ONTAP SVM, ARN:svm-083d68f0296ab81e2, reason: No SMB endpoint configured for FSx for ONTAP SVM.とSMBのエンドポイントがSVMに設定されていないと怒られました。

Invalid FSx for ONTAP SVM, ARN-svm-083d68f0296ab81e2, reason- No SMB endpoint configured for FSx for ONTAP 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の作成が完了しました。

作成したDataSync Agentの確認

ワークグループのSMBサーバー間で転送

DataSync Agentの作成が完了したので転送してみましょう。

まず、ワークグループのSMBサーバー間で転送しようとします。

ロケーションタイプでサーバーメッセージブロック(SMB)を選択して、先ほど作成したDataSync Agentを介して、FSxNのワークグループのSMBサーバー上のshareというファイル共有にアクセスできるように設定します。

shareのロケーションの作成

問題なくロケーションの作成ができました。

作成したshareのロケーション確認

同様にのshare2というファイル共有のロケーションを作成します。

share2のロケーションの作成

作成したshare2のロケーション確認

それでは、DataSyncのタスクを作成します。

送信元のロケーションにはshareを選択します。

送信元のロケーションを設定する

送信先のロケーションにはshare2を...と思いましたが、share2のロケーションが選択できません。

送信先ロケーションを設定する

もしかすると、同じDataSync Agentを使用する転送はできないのでしょうか。

share2用にDataSync Agentを作成します。

2台目のDataSync Agentを作成

追加したDataSync Agentでshare2のロケーションを設定します。

share2のロケーションを再作成

送信元ロケーションに設定できるか試してみます。

しかし、やはり送信元ロケーションに作成したロケーションを指定することはできませんでした。

追加したDataSync Agentでも送信先ロケーションを設定できない

送信先ロケーションのロケーションタイプをよくよく見てみるとTransfers from SMB can go to Amazon EFS, Amazon FSx, or Amazon S3.と記載がありました。

実際新しいロケーションを作成するを選択すると、指定できるロケーションタイプはEFSとFSx、S3しかありませんでした。

追加したDataSync Agentでも送信先ロケーションを設定できない2

以上のことから、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にしました。

FSxのロケーション作成

ロケーションが作成されたことを確認します。

FSxのロケーションが作成されたことを確認

次に、追加したSVMのロケーションを作成します。こちらはDataSync Agentを介してアクセスするように設定します。

追加したSVMのロケーションを作成

ロケーションが作成されたことを確認します。

追加したSVMのロケーションの確認

作成したロケーションを使ってDataSyncタスクを作成します。

送信元ロケーションはFSxのロケーションを選択します。

送信元ロケーションを設定する_2回目

送信先ロケーションは追加したSVMのロケーションを選択します。

送信元ロケーションを設定する_3回目

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というエラーメッセージが出力されています。

Transfer and verification completed

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-userの許可がない

ワークグループのSMBサーバーからドメイン参加しているSMBサーバーに転送

次に、ワークグループのSMBサーバーからドメイン参加しているSMBサーバーに転送する場合も検証してみます。

share内の全ファイルを削除しておきます。

また、share_svm2内のルートでsmb-user-svm2のFull Controlを追加します。

smb-user-svm2の許可を追加

ワークグループからドメインに転送するタスクを作成して実行します。

ワークグループからドメインに転送するタスクを作成して実行

こちらのタスクはエラーなく、正常に実行完了しました。

DataSyncが正常に実行できたことを確認

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も設定されていました。

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のみを付与します。

2回目転送前のshare_svm2のルートのDACL

転送元ではsmb-usersmb-user-svm2のFull Controlを付与します。

2回目転送前のshareのルートのDACL

この状態でDataSyncタスクを実行すると、前回同様のエラーが出力されました。

2回目タスク結果

実行時のログは以下のとおりです。ファイル共有のルートに権限を付与しようとしてエラーになっていそうです。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   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が存在しないことが分かります。

smb-user-svm2以外のACEが存在しない

転送先を一時的にドメイン参加させるのがオススメ

Amazon FSx for NetApp ONTAPのワークグループのSMBサーバーをAWS DataSyncのロケーションとして設定することはできないことを紹介しました。

ワークグループからドメイン環境、ドメイン環境からワークグループへどちらもファイル自体は転送できますが、前者はACLの移行ができません。なお、後者もローカルユーザーのACEは再設定する必要があります。

では、どちらのパターンでも良いのか? というと、個人的に後者がオススメです。基本的に転送元 = 移行元で大幅な設定変更は行いたくないです。何かあった時の影響範囲を正確に把握するのにも時間がかかると思います。

転送先で不具合があったとしても、一度設定をクリアして再度設定し直すことでリカバリがしやすいかと思います。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!