ONTAP 9.6以前からONTAP 9.7以降にアップデートする際に容量の問題が発生する可能性


ONTAP 9.5P5シミュレータ環境をONTAP 9.7にアップデートした場合には問題なかったのに、運用中のONTAP 9.5P10環境をアップデートしようとしたところ、firmwareアップロードの段階で「THe request body must have content type multipart/form-data with a field named file」というエラーとなった。

確認すると、ONTAP 9.5P10, ONTAP9.6~ONTAP 9.6P6で発生するというえらくピンポイントな仕様問題だった。(System Manager ONTAP 9.7 image upload fails with multipart/form-data error)

ファイルをアップロードする領域が2GBと設定されているが、ONTAP 9.7では2GBでは足らなくなったためエラーになる、という問題だった。

webのアップロード用パラメータを2GBから4GBに変更することで対処できるとのことで実施した。

まず、diagモードに切り替えて現在の設定確認

netappcluster::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

netappcluster::*> system services web file-uploads config show
Node              Size
----------------- ------------
netappcluster-01  2GB
netappcluster-02  2GB
2 entries were displayed.

netappcluster::*>

次に変更を実施

netappcluster::*> system services web file-uploads config modify -node * -size 4GB

Warning: Files already uploaded or are being uploaded will be lost. Starting a
         file upload before the resize operation is finished will cause the
         uploaded file to be unavailable.
Do you want to continue? {y|n}: y
[Job 14002] Job is queued: Web File Upload Resize Node Job.
[Job 14003] Job is queued: Web File Upload Resize Node Job.
2 entries were modified.

netappcluster::*> 

すぐに反映されないので、上記で出力されたジョブIDのステータスを確認する。


netappcluster::*> job show -id 14002
                            Owning
Job ID Name                 Vserver    Node           State
------ -------------------- ---------- -------------- ----------
14002  Web File Upload Resize Node Job netappcluster netappcluster-01 Success
       Description: Web File Upload Resize Node Job

netappcluster::*> job show -id 14003
                            Owning
Job ID Name                 Vserver    Node           State
------ -------------------- ---------- -------------- ----------
14003  Web File Upload Resize Node Job netappcluster netappcluster-02 Success
       Description: Web File Upload Resize Node Job

netappcluster::*>

「Success」が含まれていれば変更が完了している。(変更途中は Running )

ただ、変更が終わったあとの設定表記は4GBとならずに「0B」となるが、これで正常とのこと

netappcluster::*> system services web file-uploads config show
Node              Size
----------------- ------------
netappcluster-01  0B
netappcluster-02  0B
2 entries were displayed.

netappcluster::*>

KBには「system node systemshell -node * -command df -h /mroot/etc/upload」を実行して /mroot/etc/upload に割り当てられた容量を確認する、という記載がある。

ここで使っているsystemshellコマンドは最近のONTAP OSでは標準で使えない状態に変更されているため「Error: command failed: Error: Account currently locked. Contact the storage administrator to unlock it.」というエラーとなる場合がある。その場合は、ロックを解除する必要がある。手順については「NetApp ONTAPから他サーバに気軽にsshできる穴がふさがれてしまった」を参考のこと

で、ONTAP 9.13.1ぐらいになってくると状況によっては4GBより必要な可能性もあるようで、最近になって「System Manager fails to upload ONTAP image due to insufficient space」というKBが追加されていた。こちらは7GBに変更するとあるが、2023年11月時点ではこの問題が発生する状況が未公開となっているため、4GBのままで良さそうである。

CVE-2022-38023適用後 NetAppがActive Directoryに参加できない


いままでも「SMB2 Enabled for DC Connections設定に起因する接続できない問題」というのがあったが、先日話題になった「Active Directoryサーバのセキュリティ強化アップデート(CVE-2022-38023)に伴うONTAPファイルサーバへの影響」で、2023年7月以降のActive Directory環境ではONTAP をCIFSに新規作成しようとした場合にエラーがでる、という問題が出ていた。

Is AES Encryption Enabled設定」と「AES session key enabled for NetLogon channel設定」の2つの設定を変更する必要がある。

前者はONTAP 9.12.1から初期値変更、後者はONTAP 9.10.1から初期値変更となっているので、最近導入している場合は問題が発生しないのだが、以前のバージョンからアップデートしているような環境の場合は以前の値のままとなっているため注意が必要となっている。

その1: Is AES Encryption Enabled 設定

以前からONTAPを使っていてアップデートしているような環境では、SMB内部接続での暗号化形式でAESを使わない、という設定になっているせいで、下記の様なエラーとなる。

netapp9101::> vserver cifs create -vserver svm3 -cifs-server svm3 -domain adosakana.local

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 "CN=Computers" container within the "ADOSAKANA.LOCAL" domain.

Enter the user name: administrator

Enter the password:

Error: Machine account creation procedure failed
  [    47] Loaded the preliminary configuration.
  [   130] Created a machine account in the domain
  [   130] SID to name translations of Domain Users and Admins
           completed successfully
  [   131] Successfully connected to ip 172.17.44.49, port 88 using
           TCP
  [   142] Successfully connected to ip 172.17.44.49, port 464 using
           TCP
  [   233] Kerberos password set for 'SVM3$@ADOSAKANA.LOCAL' succeeded
  [   233] Set initial account password
  [   244] Successfully connected to ip 172.17.44.49, port 445 using
           TCP
  [   276] Successfully connected to ip 172.17.44.49, port 88 using
           TCP
  [   311] Successfully authenticated with DC
           adserver.adosakana.local
  [   324] Unable to connect to NetLogon service on
           adserver.adosakana.local (Error:
           RESULT_ERROR_GENERAL_FAILURE)
**[   324] FAILURE: Unable to make a connection
**         (NetLogon:ADOSAKANA.LOCAL), result: 3
  [   324] Unable to make a NetLogon connection to
           adserver.adosakana.local using the new machine account
  [   346] Deleted existing account
           'CN=SVM3,CN=Computers,DC=adosakana,DC=local'

Error: command failed: Failed to create the Active Directory machine account "SVM3". Reason: general failure.

netapp9101::>

この問題はマニュアルの「Enable or disable AES encryption for Kerberos-based communication」に記載されているように「is-aes-encryption-enabled」設定をtrueに変更することで解決する。

netapp9101::> vserver cifs security modify -vserver svm3 -is-aes-encryption-enabled true
netapp9101::> vserver cifs security show -fields is-aes-encryption-enabled
vserver is-aes-encryption-enabled
------- -------------------------
Cluster -
Snapmirror-WAN
        -
netapp9101
        -
netapp9101-01
        -
svm0    true
svm2    false
svm3    true
7 entries were displayed.

netapp9101::>

その2: AES session key enabled for NetLogon channel 設定

上記を設定しても、下記の様なエラーとなった。

netapp9101::> vserver cifs create -vserver svm3 -cifs-server svm3 -domain vm2.adosakana.local

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 "CN=Computers" container within the
"ADOSAKANA.LOCAL" domain.

Enter the user name: administrator

Enter the password:

Error: Machine account creation procedure failed
  [    43] Loaded the preliminary configuration.
  [   133] Created a machine account in the domain
  [   133] SID to name translations of Domain Users and Admins
           completed successfully
  [   134] Successfully connected to ip 172.17.44.49, port 88 using
           TCP
  [   144] Successfully connected to ip 172.17.44.49, port 464 using
           TCP
  [   226] Kerberos password set for 'SVM3$@ADOSAKANA.LOCAL' succeeded
  [   226] Set initial account password
  [   253] Successfully connected to ip 172.17.44.49, port 445 using
           TCP
  [   284] Successfully connected to ip 172.17.44.49, port 88 using
           TCP
  [   316] Successfully authenticated with DC
           adserver.adosakana.local
  [   323] Encountered NT error (NT_STATUS_PENDING) for SMB command
           Read
  [   327] Unable to connect to NetLogon service on
           adserver.adosakana.local (Error:
           RESULT_ERROR_GENERAL_FAILURE)
**[   327] FAILURE: Unable to make a connection
**         (NetLogon:ADOSAKANA.LOCAL), result: 3
  [   327] Unable to make a NetLogon connection to
           adserver.adosakana.local using the new machine account
  [   344] Deleted existing account
           'CN=SVM3,CN=Computers,DC=ADOSAKANA,DC=local'

Error: command failed: Failed to create the Active Directory machine account "SVM3". Reason: general failure.

netapp9101::>

この状況となった環境のActive Directoryサーバはsambaで作成しているため /usr/local/samba/var/log.samba を確認してみると下記のエラーがでていた。

[2023/10/20 14:48:22.301935,  0] ../../source4/rpc_server/netlogon/dcerpc_netlogon.c:281(dcesrv_netr_ServerAuthenticate3_check_downgrade)
  CVE-2022-38023: client_account[SVM3$] computer_name[SVM3] schannel_type[2] client_negotiate_flags[0x741ff] real_account[SVM3$] NT_STATUS_DOWNGRADE_DETECTED reject_des[0] reject_md5[1]
[2023/10/20 14:48:22.302215,  0] ../../source4/rpc_server/netlogon/dcerpc_netlogon.c:291(dcesrv_netr_ServerAuthenticate3_check_downgrade)
  CVE-2022-38023: Check if option 'server reject md5 schannel:SVM3$ = no' might be needed for a legacy client.
[2023/10/20 14:48:22.304539,  0] ../../source4/rpc_server/netlogon/dcerpc_netlogon.c:281(dcesrv_netr_ServerAuthenticate3_check_downgrade)
  CVE-2022-38023: client_account[SVM3$] computer_name[SVM3] schannel_type[2] client_negotiate_flags[0x701ff] real_account[SVM3$] NT_STATUS_DOWNGRADE_DETECTED reject_des[1] reject_md5[1]
[2023/10/20 14:48:22.304600,  0] ../../source4/rpc_server/netlogon/dcerpc_netlogon.c:291(dcesrv_netr_ServerAuthenticate3_check_downgrade)
  CVE-2022-38023: Check if option 'server reject md5 schannel:SVM3$ = no' might be needed for a legacy client.
[2023/10/20 14:48:22.304638,  0] ../../source4/rpc_server/netlogon/dcerpc_netlogon.c:298(dcesrv_netr_ServerAuthenticate3_check_downgrade)
  CVE-2022-38023: Check if option 'allow nt4 crypto:SVM3$ = yes' might be needed for a legacy client.

もしやkerneberosではなくNTLMで接続されてたりする?と lm-compatibility-level をkrb に設定しても同じ結果となった。

netapp9101::> vserver cifs security modify -vserver svm3 -lm-compatibility-level krb

netapp9101::> vserver cifs security show -fields lm-compatibility-level
vserver lm-compatibility-level
------- ----------------------
Cluster -
Snapmirror-WAN -
netapp9101 -
netapp9101-01 -
svm0    lm-ntlm-ntlmv2-krb
svm2    lm-ntlm-ntlmv2-krb
svm3    krb
7 entries were displayed.

netapp9101::>

さらに調べると「Configure Active Directory domain controller access overview」に、Netlogon にAESを使いたい場合は「aes-enabled-for-netlogon-channel」をtrueに設定する、と書いてあった

netapp9101::> vserver cifs security show -fields aes-enabled-for-netlogon-channel
vserver aes-enabled-for-netlogon-channel
------- --------------------------------
Cluster -
Snapmirror-WAN -
netapp9101 -
netapp9101-01 -
svm0    false
svm2    false
svm3    false
7 entries were displayed.

netapp9101::> vserver cifs security modify -vserver svm3 -aes-enabled-for-netlogon-channel true

netapp9101::> vserver cifs security show -fields aes-enabled-for-netlogon-channel
vserver aes-enabled-for-netlogon-channel
------- --------------------------------
Cluster -
Snapmirror-WAN -
netapp9101 -
netapp9101-01 -
svm0    false
svm2    false
svm3    true
7 entries were displayed.

netapp9101::>

設定変更後に再実行したところ、Active Directory参加に成功した。

netapp9101::> vserver cifs create -vserver svm3 -cifs-server svm3 -domain adosakana.local

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 "CN=Computers" container within the
"ADOSAKANA.LOCAL" domain.

Enter the user name: administrator

Enter the password:

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 svm3 -smb1-enabled true" to enable it.

netapp9101::>

↑のSMB1を有効にするかどうか、というところについては、複合機の出力先として指定されている、とか、LinuxサーバからCIFSでマウントしている、とか、Windowsワークグループからアクセスしている、という場合には有効にする、というような形となる。

NetApp ONTAPから他サーバに気軽にsshできる穴がふさがれてしまった


NetApp ONTAP 9.xに長らく存在していた diagアカウントをロックしていても、lsなどのコマンドを実行できる、という技があった。

ontap98::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

ontap98::*> systemshell -node localhost -command ls /
  (system node systemshell)
BUILD                           mroot_late
COMPAT.TXT                      mroot_late.tgz
COPYRIGHT                       netapp_nodar_build_check
INSTALL                         nfsroot
README.TXT                      ontap
VERSION                         ovl
bin                             partner
boot                            platform
cap.xml                         proc
cfcard                          root
clus                            sbin
dev                             sim
etc                             sldiag
fw                              tmp
kmip                            usr
lib                             var
libexec                         varfs.tgz
mnt                             vs_conf_files.tgz
mroot                           webjail
mroot.tgz

ontap98::*>

ONTAP 9.10.1でも使えていたのだが、Active Directory暗号化問題パッチを適用したONTAP 9.10.1P12で試したところ、実行できなくなっていた。

netapp9101::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

netapp9101::*> systemshell -node localhost -command ls /
  (system node systemshell)

Error: command failed: Error: Account currently locked. Contact the storage
       administrator to unlock it.

netapp9101::*>

え!?と調べたら ONTAP 9.12.1リリースのころからのパッチバージョンから使えなくなっていた模様。

diagアカウントがロックされている場合は、systemshellを禁止します

以降のバージョンが対象
9.7P22
9.8P15
9.9.1P13
9.10.1P9
9.11.1P5.
9.12.1.
9.13.0
9.13.1.

ということで、いまのONTAPだとdiag モードのロックを解除しないと実行できなくなっていました。

公式の解除手順 SystemShell diagユーザアカウントのロックを解除する方法

上記手順だと、diagユーザアカウントにパスワードを設定していますが、「systemshell -node localhost -command コマンド」で実行する場合はパスワード設定は必須ではありません。

現在のdiagユーザのロック状況を確認「security login show -username diag」(バージョンによっては security login show -user-or-group-name diag)

netapp9101::> security login show -username diag

Vserver: netapp9101
                                                                 Second
User/Group                 Authentication                 Acct   Authentication
Name           Application Method        Role Name        Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
diag           console     password      admin            yes    none

netapp9101::>

「Acct Locked: yes」だとロックされている

「security login unlock -username diag」を実行して、ロック解除する

netapp9101::> security login unlock -username diag

netapp9101::> security login show -username diag

Vserver: netapp9101
                                                                 Second
User/Group                 Authentication                 Acct   Authentication
Name           Application Method        Role Name        Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
diag           console     password      admin            no     none

netapp9101::>

ロック解除したあとであれば従来通り実行できた

netapp9101::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

netapp9101::*> systemshell -node localhost -command ls /
  (system node systemshell)
BUILD                           mroot_late
COMPAT.TXT                      mroot_late.tgz
COPYRIGHT                       netapp_nodar_build_check
INSTALL                         nfsroot
README.TXT                      ontap
VERSION                         ovl
bin                             partner
boot                            platform
cap.xml                         proc
cfcard                          root
clus                            sbin
dev                             sim
etc                             sldiag
fw                              tmp
kmip                            usr
lib                             var
libexec                         varfs.tgz
mnt                             vs_conf_files.tgz
mroot                           webjail
mroot.tgz

netapp9101::*>

なお、ONTAP OSの標準値が変わっていますので、利用が終わったら「security login lock -username diag」を実行してロック状態を戻しておきましょう

netapp9101::*> set admin

netapp9101::> security login lock -username diag

netapp9101::> security login show -username diag

Vserver: netapp9101
                                                                 Second
User/Group                 Authentication                 Acct   Authentication
Name           Application Method        Role Name        Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
diag           console     password      admin            yes    none

netapp9101::>

NetAppのボリュームの言語設定についてのメモ


NetAppのボリュームには言語設定があり、設定内容に応じて使える日本語文字列が異なる。

2023年8月時点での最も対応できる範囲が広い設定は4バイトのUTF-8エンコード形式をサポートしている「utf8mb4」となる。

ドキュメント: マルチバイトを含むファイル名、ディレクトリ名、 qtree 名の ONTAP での処理

utf8mb4はONTAP 9.5以降で使える設定で、Windows側でファイル名に「サロゲート文字と補助文字」を含む文字をNetApp内に保存しようとする場合は、ボリュームがutf8mb4でなければ保存できない

なお、ONTP9.7P1以降では、UTF-8系言語をutf8mb4に変更できるようになっているとのこと(Can the volume language be changed after creation in ONTAP?)

問題は旧来から存在している言語設定である。

ONTAP 8.3.2(7-mode)にある日本語系設定
 ja (Japanese euc-j+)
 ja_v1 (Japanese euc-j)
 ja_JP.PCK (Japanese PCK(sjis)*)
 ja_JP.932 (Japanese cp932*)
 ja_JP.PCK_v2 (Japanese PCK(sjis))

ONTAP 9.10.1にある日本語系設定
 ja
 ja_JP.PCK
 ja.UTF-8
 ja_v1
 ja_v1.UTF-8
 ja_JP.PCK.UTF-8
 ja_JP.932
 ja_JP.932.UTF-8
 ja_JP.PCK_v2
 ja_JP.PCK_v2.UTF-8

問題はドキュメントにここらへんの説明が見当たらないこと

volume create」にある-languageオプションの解説は「Language code」としかなく、標準ではvserverのlanguageと同じとあるので「vserver create」を参照してもたいしたことは書いていない

[-language <Language code>] – Default Volume Language Code
This optionally specifies the default language encoding setting for the Vserver and its volumes. The recommended format is to append .UTF-8 for the language encoding values. For example, for the en_US language, the recommended format is en_US.UTF-8 . The default setting is C.UTF-8 .

NetApp KBに What is the difference between ja_JP.PCK.UTF-8 and ja_JP.PCK_v2.UTF-8? があるのだが

ja_JP.PCK uses cp932_v1.ntt and eucj_v1.ntt.
ja_JP.PCK_v2 uses cp932_v1.ntt and sjis_v2.ntt.

・・・いや説明になってないのでは?という記述のみ

ONTAP 8.3時代のドキュメントの「言語オプション一覧」もたいした記述は無い

ja_v1日本語(euc-j)
ja_v1.UTF-8日本語(euc-j)(UTF-8)
ja_jp.pck_v2日本語PCK(sjis)
ja_JP.PCK_v2.UTF-8日本語PCK(sjis)(UTF-8)

おそらくPCKはSolarisにおける「PC漢字コード」が由来と想定される。

Solaris 2.6 では、従来の日本語 EUC に加えて PCK (シフト JIS あるいは MS 漢字コード) で日本語を扱う環境を新たに提供します。PCK は、Microsoft が Windows3.1 で規定したマイクロソフト標準キャラクタセットと同等の文字集合およびエンコーディングを提供するものです。また、PCK は、従来の Solaris リリースで MS 漢字コード (または シフト JIS) と呼ばれていたものに、ユーザー定義文字やベンダー定義文字を加えたもので、JIS X 0201、JIS X 0208 の 1-84 区 (13 区除く) までに関しては従来のものと互換性があります。

これがベースであるとすれば、PCKはWindows 3.1ベースのもので、PCK_v2はWindows それ以降対応。ONTAP 7.2などで既にPCK_v2は存在していたので、Windows2000ぐらいをベースにしていると想定される。

詳細を探すとSolaris 8のマニュアル PCK(5) に記載があった。

(内容については省略)

同じくONTAP 7.2ぐらいでja_v1, ja_JP.UTF-8 が登場していた。

cp932/932はMicrosoftコードページ932 と呼ばれるWindows 3.1J用にマイクロソフトとNECが定義したShift JISの独自拡張となる。

定義的に考えると、cp932とpckは同一ということになるのだが、先に出てきたWhat is the difference between ja_JP.PCK.UTF-8 and ja_JP.PCK_v2.UTF-8? によると、NetAppのPCKには、cp932範囲の他にも含まれているものがある、ということになる。

で・・・

これ以上の情報が見つからないのである

困ったもんだ

NetApp 切り替え時 メモ書き


ボリューム言語切り替えは面倒

NetAppのボリューム言語をja_JP.PCKからutf8mb4に変えたいな、と思うとsnapmirrorでのボリューム以降ではなくて、rsyncやrobocopyなどを使ってコピーする必要がある。

例えば、robocopyでやるなら以下の様なバッチファイルを動かしてコピーする

@echo off
set TIME2=%TIME: =0%
set LOGDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%-%TIME2:~0,2%%TIME2:~3,2%
robocopy \\netappfs\shares1  \\netappfsnew\shares1 /mir /copyall /R:0 /W:0 /LOG+:D:\LOGS\netappfs-shares1-%LOGDATE%.txt
robocopy \\netappfs\document \\netappfsnew\document /mir /copyall /R:0 /W:0 /LOG+:D:\LOGS\netappfs-document-%LOGDATE%.txt

D:\LOGS に実行ログを吐き出すが、バッチファイルの実行開始時間を元にしたファイル名となるので、ログ確認がしやすい

失敗した切り替え手順

IPアドレスが確保出来なかったということなので、旧NetAppのサービス用IP と 新NetAppの仮接続用IPしかない、ということなので

旧NetAppのネットワークケーブル抜いてから
新NetApp側のIPアドレスを切り替えてAD参加
旧NetApp側のIPアドレスを新NetAppについてた仮接続用IPに切り替え
旧NetAppのネットワークケーブルを接続して、AD参加

ということをやればいいかなーと以下の手順で実施した。

が・・・これだと旧NetAppがnetappfsとして参加していた情報の方が勝つらしく、12の段階で旧サーバがnetappfsだとしてAD上のアクセス情報を持っていこうとしているっぽく、問題が発生した。

このため新NetAppをもう1度Active Directoryに参加させるという対処を行う羽目になった。

  1. 旧NetAppが ADに netappfs で参加している
  2. 新NetAppが ADに netappfsnew で参加してデータ移行
    新::> vserver cifs create -vserver netappfs -cifs-server netappfsnew
  3. 切り替え日
  4. 旧NetAppのADをdown
     旧::> vserver cifs modify -vserver netappfs -state-admin down
  5. 新NetAppのADをdown
     新::> vserver cifs modify -vserver netappfs -state-admin down
  6. 旧NetAppのネットワークケーブルを外す
     (旧NetAppのIPアドレスは変更していない)
  7. 新NetAppでIPを引き継ぎ
    新::> network interface modify -vserver netappfs -lif ~ -address サービス用IP
  8. 新NetAppをnetappfsとしてAD参加
     新::> vserver cifs modify -vserver netappfs -cifs-server netappfs
  9. 新NetAppにクライアントからアクセスできるか確認
     問題ないことを確認
  10. ケーブルを外した状態で旧NetAppのIPを変更
    旧::> network interface modify -vserver netappfs -lif ~ -address 別IP1
  11. 旧NetAppのネットワークケーブルをつなぐ
  12. 旧NetAppをAD再参加
     旧::> vserver cifs modify -vserver netappfs -cifs-server netappfs-old
      → クライアントから新NetApp(netappfs)にアクセスできなくなる
       新NetAppで「vserver cifs check」コマンドを実行すると
       「down SecD Error: no server available」といったエラーが出ている
  13. 新NetAppのAD登録名を一時的に別のものに参加したあと、正式名で再参加
     新::> vserver cifs modify -vserver netappfs -state-admin down
     新::> vserver cifs modify -vserver netappfs -cifs-server netappfstmp
     新::> vserver cifs modify -vserver netappfs -state-admin down
     新::> vserver cifs modify -vserver netappfs -cifs-server netappfs
      → クライアントから新NetApp(netappfs)にアクセスできるようになる

同じではないが、OUがちゃんと変更されていない場合の再変更手順「Organizational Unit (OU) is not updated in ONTAP after Active Directory object move」を見ると「vserver cifs stop -vserver netappfs」で止めたあと、もう1回「vserver cifs modify -vserver netappfs -cifs-server netappfs -ou OU=NewOU」と実行する、という風になっていた

いつもの切り替え手順

いつもは旧NetAppのサービス用IP と 新NetAppの仮接続用IP、旧NetAppの仮接続用IPの3つを用意してもらって切り替えている

1. 旧NetAppが ADに netappfs で参加している
2. 新NetAppが ADに netappfsnew で参加してデータ移行
  新::> vserver cifs create -vserver netappfs -cifs-server netappfsnew
3. 切り替え日
4. 旧NetAppのADをdown
 旧::> vserver cifs modify  -vserver netappfs -state-admin down
5. ケーブルを外した状態で旧NetAppのIPを変更
  旧::> network interface modify -vserver netappfs -lif ~ -address 旧NetAppの仮接続用IP
6. 旧NetAppをAD再参加
 旧::> vserver cifs modify  -vserver netappfs -cifs-server netappfs-old
7. 新NetAppのADをdown
 新::> vserver cifs modify  -vserver netappfs -state-admin down
8. 新NetAppでIPを引き継ぎ
  新::> network interface modify -vserver netappfs -lif ~ -address サービス用IP
9. 新NetAppをnetappfsとしてAD参加
 新::> vserver cifs modify  -vserver netappfs -cifs-server netappfs
10. 新NetAppにクライアントからアクセスできるか確認
 問題ないことを確認

メモ

secd logにログが出ているらしい?

/mroot/etc/log/mlog/secd.log というパス? (Overview of ONTAP Logs)

SVMのマシンアカウントのパスワードを再設定する「vserver cifs domain password reset」を実行することで解消する?


2023/11/23追加

Windowsサーバ→NetAppのrobocopy実行時にいくつか問題がある

(1) audit/監査設定周り

Windowsサーバ上で監査設定をちゃんと使っている場合、NetApp ONTAP側で使える監査機能との差異によって監査設定が期待通りにコピーできずにrobocopyがエラーになる。

具体的には「/copyall」もしくは「/copy:DATSOU」ではエラーとなる

robocopy D:\share\ \\netapp\share\ /COPYALL /MIR /B /EFSRAW /R:1 /W:1 /NP
<略>
	          古い		   3.0 g	SW_DVD5_Windows_Svr_DC_EE_SE_Web_2008_R2_64Bit_Japanese_w_SP1_MLF_X17-22600.ISO
2023/11/01 xx:xx:xx エラー 31 (0x0000001F) NTFS セキュリティをコピー先ファイルにコピーしています D:\share\ISO\SW_DVD5_Windows_Svr_DC_EE_SE_Web_2008_R2_64Bit_Japanese_w_SP1_MLF_X17-22600.ISO
システムに接続されたデバイスが機能していません。
<略>
2023/11/01 xx:xx:xx エラー 32 (0x00000020) ファイルをコピーしています	F:\COMMON\document\testdocument.docx
プロセスはファイルにアクセスできません。別のプロセスが使用中です。
エラー: 再試行が制限回数を超えました。
<略>

(オマケ:Notepad++でrobocopyのログ確認する時は、「^(.+新しいディレクトリ).+\r\n」「^(.+新しいファイル).+\r」「^(.+更新済み).+\r\n」の3つを「」(置き換え文字列を何も指定しない)に置き換えると問題となっているファイルを探しやすい。英語の場合はNew Dir,Newer,New File,Modified)

How to move files to a NetApp CIFS server using Robocopy to retain Windows ACLs

Does robocopy need to use /copy:datso option if the source has Windows Mandatory Level permission? (対象がcloud volumes ONTAPと書いてあるが、一般のONTAPも対象)

Robocopy unable to set all ACLs on a file (The SACL includes a Mandatory Label which is not supported by ONTAP)

対象方法は「/copy:DATSO」でコピーする、とある

(2) 毎回modifyになるという事象

タイムスタンプまわりの挙動がWindowsサーバとONTAPとで違うらしく、それが差分と認識されることがあるようだ。

ただ、情報の更新だけが行われているようで、ファイルの実体コピーは行われていない模様


robocopyのログで出る「*EXTRA File」は、コピー先にしか存在しないファイル

代表的なrobocopyエラーコードと対処一覧

エラー 2 (0x00000002)→指定したフォルダが存在しない
エラー 5 (0x00000005)→アクセス権がない。robocopyに/Bオプションを付ける
エラー 31 (0x0000001F)→コピー先に元と同じNTFSセキュリティ設定が行えない(OS制約などの可能性)
エラー 32 (0x00000020)→ファイルがアプリケーションからロックされているのでアプリを閉じる
エラー 64 (0x00000040)→指定した共有にアクセスできない
エラー 87 (0x00000057)→指定した共有にアクセスするためのユーザ名/パスワード指定が誤っている
エラー 112(0x00000070)→コピー先容量が足らない

参考:SEの道標【robocopy】のログの見方、エラーコード一覧〜不一致、EXTRAS〜
robocopyのエラーコードはWin32のエラーコードそのままなので上記以外については 「Win32 Error Codes」を参照