NetAppのコマンドをadvanced権限で実行する時に確認を出さない


NetAppのコマンド操作は、通常はadmin権限で行われる。

コマンドによってはadvanced権限やdiag権限を要求される。

切り替えるには「set advanced」もしくは「set -privilege advanced」と実行する

netapp::> set -privilege advanced

Warning: These advanced commands are potentially dangerous; use them only when directed to do so by NetApp
         personnel.
Do you want to continue? {y|n}: y

netapp::*>

切り替える際、通常は「Do you want to continue? {y|n}: 」という確認プロンプトが出る。

これを出ないようにする方法がある

setコマンドをオプション無しで実行してみる

netapp::> set
User Name:             admin
Profile Name:          admin
Privilege Level:       admin
Confirmation Messages: on
Show All Fields:       false
Show Field Separator:
Data Units:            auto
Pagination Rows:       24
Default Vserver:
Default Node:
Stop On Error:         false
Prompt Timestamp:
netapp::>

ここにある「Confirmation Messages: on」というのが確認プロンプトに関する設定となる。

これをoffにすることで確認が行われず切り替えることができるようになる。

netapp::> set -privilege advanced -confirmations off

netapp::*> set
User Name:             admin
Profile Name:          admin
Privilege Level:       advanced
Confirmation Messages: off
Show All Fields:       false
Show Field Separator:
Data Units:            auto
Pagination Rows:       24
Default Vserver:
Default Node:
Stop On Error:         false
Prompt Timestamp:

netapp::*>

一度「Confirmation Messages: off」と設定したものは同じセッションの間、維持されます。

さて、一括処理をしている時に、advanced権限が必要なコマンドがある場合、「set advanced」で切り替えた後、目的とするコマンドを実行、という処理が面倒な場合があります。

その場合「set -privilege advanced -confirmations off -rows 0;vserver cifs option show;set -privilege admin -confirmations on」というように「;」でコマンドを区切ることで、そのコマンド実行時のみadvanced権限で実行する、といったことを行えるようになります。

netapp::> set -privilege advanced -confirmations off -rows 0;vserver cifs option show;set -privilege admin -confirmations on


Vserver: svm0

                            Client Session Timeout: 900
                              Copy Offload Enabled: true
                                Default Unix Group: -
                                 Default Unix User: pcuser
                                   Guest Unix User: -
               Are Administrators mapped to 'root': true
           Is Advanced Sparse File Support Enabled: true
                  Is Fsctl File Level Trim Enabled: true
                  Direct-Copy Copy Offload Enabled: true
                           Export Policies Enabled: false
            Grant Unix Group Permissions to Others: false
                          Is Advertise DFS Enabled: false
     Is Client Duplicate Session Detection Enabled: true
               Is Client Version Reporting Enabled: true
                                    Is DAC Enabled: false
                      Is Fake Open Support Enabled: true
                         Is Hide Dot Files Enabled: false
                              Is Large MTU Enabled: true
                             Is Local Auth Enabled: true
                 Is Local Users and Groups Enabled: true
                           Is Multichannel Enabled: false
            Is NetBIOS over TCP (port 139) Enabled: true
               Is NBNS over UDP (port 137) Enabled: false
                               Is Referral Enabled: false
             Is Search Short Names Support Enabled: false
  Is Trusted Domain Enumeration And Search Enabled: true
                        Is UNIX Extensions Enabled: false
          Is Use Junction as Reparse Point Enabled: true
                               Max Multiplex Count: 255
          Max Connections per Multichannel Session: 32
                 Max LIFs per Multichannel Session: 256
              Max Same User Session Per Connection: 2500
                 Max Same Tree Connect Per Session: 5000
                      Max Opens Same File Per Tree: 1000
                          Max Watches Set Per Tree: 500
                   Is Path Component Cache Enabled: true
    NT ACLs on UNIX Security Style Volumes Enabled: true
                                  Read Grants Exec: disabled
                                  Read Only Delete: disabled
                  Reported File System Sector Size: 4096
                                Restrict Anonymous: no-restriction
                              Shadowcopy Dir Depth: 5
                                Shadowcopy Enabled: true
                                      SMB1 Enabled: false
                  Max Buffer Size for SMB1 Message: 65535
                                      SMB2 Enabled: true
                                      SMB3 Enabled: true
                                    SMB3.1 Enabled: true
            Map Null User to Windows User or Group: -
                                      WINS Servers: -
         Report Widelink as Reparse Point Versions: SMB1
                              Max Credits to Grant: 128
Check Share Permission for NetShareEnumAll Request: false


netapp::>

ちなみに通常のadmin権限で「vserver cifs option show」を実行した場合は下記の様な結果となります。

netapp::> vserver cifs option show

Vserver: svm0

  Client Session Timeout : 900
  Default Unix Group     : -
  Default Unix User      : pcuser
  Guest Unix User        : -
  Read Grants Exec       : disabled
  Read Only Delete       : disabled
  WINS Servers           : -
netapp::>

NetAppの設定内容をcsvファイルに出力したい


NetAppで現在設定されているCIFS共有情報を取得するため、「vserver cifs share show」を実行。

netapp::> vserver cifs share show
Vserver        Share         Path              Properties Comment  ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm0           c$            /                 oplocks    -        BUILTIN\Administrators / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
svm0           ipc$          /                 browsable  -        -
svm0           shares        /shares_dr        oplocks    -        Everyone / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
svm0           testqtee      /shares_dr/       oplocks    -        Everyone / Full Control
                             testqtree         browsable
                                               changenotify
                                               show-previous-versions
4 entries were displayed.

netapp::>

ちょっと再利用しにくい形式となっている

-fieldsオプションで上記で表示されている内容を列挙すればもうちょっと分かりやすくなるはず…

netapp::> vserver cifs share show -fields vserver,share-name,path,share-properties,acl
vserver share-name path share-properties                                      acl                               
------- ---------- ---- ----------------------------------------------------- ---------------------------------------
svm0    c$         /    oplocks,browsable,changenotify,show-previous-versions "BUILTIN\Administrators / Full Control"
svm0    ipc$       /    browsable                                             -                                 
svm0    shares     /shares_dr
                        oplocks,browsable,changenotify,show-previous-versions "Everyone / Full Control"         
svm0    testqtee   /shares_dr/testqtree
                        oplocks,browsable,changenotify,show-previous-versions "Everyone / Full Control"         
4 entries were displayed.
netapp::>

各要素の区切りが不定となっていてやはり使いにくい。

調べると「set」コマンドでいろいろ調整できることが分かった

netapp::> set
User Name:             admin
Profile Name:          admin
Privilege Level:       admin
Confirmation Messages: on
Show All Fields:       false
Show Field Separator:
Data Units:            auto
Pagination Rows:       24
Default Vserver:
Default Node:
Stop On Error:         false
Prompt Timestamp:
netapp::>

このオプション群の中でよく設定される項目は下記2個

・Pagination Rows: これを「0」と設定すると、出力が長い場合でも途中で止まらない
・Data Units:これがautoの場合、出力される単位がGB,TBで不定となる。「GB」と指定すると全てGB換算で表示されるようになる。

「Show Field Separator:」は標準では何も設定されていないので、ここに「,」を指定してみるため「set -showseparator “,”」と実行。

netapp::> set -showseparator ","

netapp::> set
User Name:             admin
Profile Name:          admin
Privilege Level:       admin
Confirmation Messages: on
Show All Fields:       false
Show Field Separator:  ,
Data Units:            auto
Pagination Rows:       24
Default Vserver:
Default Node:
Stop On Error:         false
Prompt Timestamp:

netapp::>

「vserver cifs share show」を実行してみると

netapp::> vserver cifs share show
Vserver        Share         Path              Properties Comment  ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm0           c$            /                 oplocks    -        BUILTIN\Administrators / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
svm0           ipc$          /                 browsable  -        -
svm0           shares        /shares_dr        oplocks    -        Everyone / Full Control
                                               browsable
                                               changenotify
                                               show-previous-versions
svm0           testqtee      /shares_dr/       oplocks    -        Everyone / Full Control
                             testqtree         browsable
                                               changenotify
                                               show-previous-versions
4 entries were displayed.

netapp::> vserver cifs share show -fields vserver,share-name,path,share-properties,acl
vserver,share-name,path,share-properties,acl,
Vserver,Share,Path,Share Properties,Share ACL,
svm0,c$,/,oplocks,browsable,changenotify,show-previous-versions,"BUILTIN\Administrators / Full Control",
svm0,ipc$,/,browsable,-,
svm0,shares,/shares_dr,oplocks,browsable,changenotify,show-previous-versions,"Everyone / Full Control",
svm0,testqtee,/shares_dr/testqtree,oplocks,browsable,changenotify,show-previous-versions,"Everyone / Full Control",

netapp::>

-fieldsオプションをつけている場合に、「,」区切りになっているように見える。

しかし・・・よく見てみるとおかしい

「Properties」の値は元々「oplocks,browsable,changenotify,show-previous-versions」だったのだが、showseparator設定後は、Properites内の「,」と、各値の区切りの「,」の見分けがつかない状態で出力されています。

果たしてどんな記号をseparatorとして設定すれば適切なのかぐぐってみるとNetApp communityの「Netapp cli output to csv or excel」に「!」を設定すれば?という記載を発見。

確かに!を設定内で使うことは少ないので、見分けはつきそうです。

netapp::> set -showseparator "!"

netapp::> set
User Name:             admin
Profile Name:          admin
Privilege Level:       admin
Confirmation Messages: on
Show All Fields:       false
Show Field Separator:  !
Data Units:            auto
Pagination Rows:       24
Default Vserver:
Default Node:
Stop On Error:         false
Prompt Timestamp:

netapp::>

「vserver cifs share show」の結果を確認してみます。

netapp::> vserver cifs share show -fields vserver,share-name,path,share-properties,acl
vserver!share-name!path!share-properties!acl!
Vserver!Share!Path!Share Properties!Share ACL!
svm0!c$!/!oplocks,browsable,changenotify,show-previous-versions!"BUILTIN\Administrators / Full Control"!
svm0!ipc$!/!browsable!-!
svm0!shares!/shares_dr!oplocks,browsable,changenotify,show-previous-versions!"Everyone / Full Control"!
svm0!testqtee!/shares_dr/testqtree!oplocks,browsable,changenotify,show-previous-versions!"Everyone / Full Control"!

netapp::>

これでなんとか見分けはつきそうです。

さて、setで表示される設定で「Show All Fields」という項目があります。

これをtrueと設定すると、filedsを指定しなくとも、全ての設定が表示されるようになります。

netapp::> set -showallfields true
::> vserver cifs share show
vserver!share-name!cifs-server!path!share-properties!symlink-properties!file-umask!dir-umask!comment!acl!attribute-cache-ttl!volume!offline-files!vscan-fileop-profile!max-connections-per-share!force-group-for-create!
Vserver!Share!CIFS Server NetBIOS Name!Path!Share Properties!Symlink Properties!File Mode Creation Mask!Directory Mode Creation Mask!Share Comment!Share ACL!File Attribute Cache Lifetime!Volume Name!Offline Files!Vscan File-Operations Profile!Maximum Tree Connections on Share!UNIX Group for File Create!
svm0!c$!SHARE56A!/!oplocks,browsable,changenotify,show-previous-versions!symlinks!-!-!-!"BUILTIN\Administrators / Full Control"!-!svm0_root!-!standard!4294967295!-!
svm0!ipc$!SHARE56A!/!browsable!-!-!-!-!-!-!svm0_root!-!standard!4294967295!-!
svm0!shares!SHARE56A!/shares_dr!oplocks,browsable,changenotify,show-previous-versions!symlinks!-!-!-!"Everyone / Full Control"!-!shares_dr!manual!standard!4294967295!-!
svm0!testqtee!SHARE56A!/shares_dr/testqtree!oplocks,browsable,changenotify,show-previous-versions!symlinks!-!-!-!"Everyone / Full Control"!-!shares_dr!manual!standard!4294967295!-!
netapp::>

ただ、これを常に設定してしまうとdfコマンドなどでも詳細表示となってしまうため、使用には注意が必要です。

netapp::> df
vserver!volume!aggregate!fs-type!filesys-name!total-space!total-hybrid-cache-size!used-space!percent-used-space!available-space!reserved-space!total-space-bin1!used-space-bin1!available-space-bin1!inodes-used!percent-inodes-used!inodes-free!total-saved!percent-total-saved!dedupe-saved!percent-dedupe-saved!compression-saved!percent-compression-saved!mounted-on!bin1-name!
Vserver Name!Volume Name!Aggregate Name!Snapshot or Active File System!Volume File System Name!Total Space!Total Size of SSD Tier of a Flash Pool!Used Space!Percentage of Used Space!Available Space!Reserved Space!Total Space in First Bin!Used Space in First Bin!Available Space in First Bin!Inodes Used!Percentage of Inodes Used!Inodes Available!Total Space Saved!Percentage Total Space Saved!Space Saved by Deduplication!Percentage Saved by Deduplication!Space Saved by Compression!Percentage Saved by Compression!Mount Path of the File System!Composite Aggr Name for First Bin!
svm0!shares_dr!""!active!/vol/shares_dr/!22072528!-!25512!0%!22047016!0!-!-!-!174!0%!655104!21716!46%!21716!46%!0!0%!/shares_dr!-!
svm0!shares_dr!""!snapshot!/vol/shares_dr/.snapshot!0!-!6876!0%!0!0!-!-!-!0!0%!0!0!0%!0!0%!0!0%!/shares_dr/.snapshot!-!
svm0!svm0_root!""!active!/vol/svm0_root/!19456!-!1828!9%!17628!0!-!-!-!102!18%!464!0!0%!0!0%!0!0%!/!-!
svm0!svm0_root!""!snapshot!/vol/svm0_root/.snapshot!1024!-!2348!229%!0!0!-!-!-!0!0%!0!0!0%!0!0%!0!0%!//.snapshot!-!
netapp-01!vol0!""!active!/vol/vol0/!7081552!-!2331900!32%!4749652!0!-!-!-!36502!16%!184784!0!0%!0!0%!0!0%!---!-!
netapp-01!vol0!""!snapshot!/vol/vol0/.snapshot!372712!-!0!0%!372712!0!-!-!-!0!0%!0!0!0%!0!0%!0!0%!---!-!

netapp::>

必要が無くなったら「set -showallfields false」を実行して解除します。

NetApp ONTAPのサポート期間とサポートバージョンの確認


NetApp ONTAPのサポート期間(End of support / EOS)を確認するときにどこを見ればいいか忘れてしまうのでメモ

基本的には 「Software Version Support 」でサポート期間を確認する

ただし、このページ、日本語表示だと情報が古くONTAP 9.9.1までしか掲載されていない(2022/11/02現在)

「English」に変更するとONTAP 9.11.1についても確認出来る。

また、別のページに「SU2: Minimum Recommended ONTAP releases on the NetApp Support Site」という形で各ONTAP OSバージョンでも、最低要求するパッチバージョンの指定、というのがされている。

2022/10/24付け更新で、ONTAP 9.7~9.11.1については下記の様に定義されている。

  • For ONTAP 9.11x, the minimum recommended version is 9.11.1P3.
  • For ONTAP 9.10x, the minimum recommended version is 9.10.1P8.
  • For ONTAP 9.9x, the minimum recommended version is 9.9.1P12.
  • For ONTAP 9.8x, the minimum recommended version is 9.8P14.
  • For ONTAP 9.7x, the minimum recommended version is 9.7P20.

実はこのページ、したの方が重要で、「Download」のリンク集からアクセスできない古いONTAP OSのパッチがダウンロードできるリンクがある。

Clustered Data ONTAP 8.3.2P12Clustered Data ONTAP 8.2.4P6がダウンロードできる。

7-modeのData ONTAP 8.2.5P5もダウンロードできる。

NetAppのボリューム上に.copy_offloadという隠しファイル?ディレクトリ?がある


ONTAPで重複排除を行っているボリュームでSMB 3.0によるODXオフロード機能が働くと.copy_offload という隠しファイルがある、というので確認してみた。

まず、NFSで該当ボリュームをマウントしてls -laで見てみる

# ls -la /mnt/shares/
合計 12
drwxrwxrwx. 3 nobody nobody 4096 10月 12 16:05 .
drwxr-xr-x. 4 nobody nobody 4096  9月 12 10:44 ..
-rwxrwxrwx. 1 nobody nobody   12 10月 12 16:05 test.txt
drwxr-xr-x. 2 nobody nobody 4096 10月 12 16:03 testqtree
#

次にNetAppのdiagモードにあるlsコマンドで見てみる

ontap::*> system node run -node ontap-01 -command ls -a /vol/shares
        64 .
        64 ..
        96 testqtree
        97 test.txt
ontap::*>

重複排除が稼働していない状態では .copy_offload は存在していないということを確認した。

次に、CIFS側からtest2というディレクトリを作って、そこに同じファイルを別名でコピーしてしてみた。

NFSでマウントしてみてみる。

# ls -la /mnt/shares/
合計 16
drwxrwxrwx. 5 nobody nobody 4096 10月 12 16:20 .
drwxr-xr-x. 4 nobody nobody 4096  9月 12 10:44 ..
-rwxrwxrwx. 1 nobody nobody   12 10月 12 16:05 test.txt
drwxrwxrwx. 2 nobody nobody 4096 10月 12 16:20 test2
drwxr-xr-x. 2 nobody nobody 4096 10月 12 16:03 testqtree
#

一般的なクライアントアクセスでは存在を確認できない。

では、NetApp内部で確認するとどうなるのか?

ontap::*> system node run -node ontap-01 -command ls -a /vol/shares/
        64 .
        64 ..
        96 testqtree
       101 .copy_offload
        97 test.txt
        98 test2
ontap::*> system node run -node ontap-01 -command ls -al /vol/shares/
d-rwxrwxrwx       1026         64      5             4096       Wed Oct 12 07:20:48 UTC 2022     .  1662947040
d-rwxrwxrwx       1026         64      5             4096       Wed Oct 12 07:20:48 UTC 2022     ..  1662947040
d-rwxr-xr-x       1026         96      2             4096       Wed Oct 12 07:03:49 UTC 2022     testqtree       43900
 ----------          0        101      0                0       Thu Jan  1 00:00:00 UTC 1970     .copy_offload      139686
 arwxrwxrwx       1026         97      1               12       Wed Oct 12 07:05:28 UTC 2022     test.txt       52407
d-rwxrwxrwx       1026         98      2             4096       Wed Oct 12 07:20:54 UTC 2022     test2      136061

ontap::*>

「.copy_offload」というファイルなのかディレクトリなのかよくわからない何かが作成されていることを確認した。

ONTAP 9.9.1では通常のNFS/CIFSアクセスでは認識できないものであるので、通常利用時は特に気にする必要がないものであるようだ。

なお、NFSアクセスで.copy_offloadというファイルが作成できるかを確認してみたところ、作成がエラーとなったが「そのようなファイルやディレクトリはありません(No such file or directory)」という微妙なメッセージでの失敗だった。

# touch /mnt/shares/.copy_offload
touch: '/mnt/shares/.copy_offload' に touch できません: そのようなファイルやディレクトリはありません
# echo test > /mnt/shares/.copy_offload
-bash: /mnt/shares/.copy_offload: そのようなファイルやディレクトリはありません
# echo test > /mnt/shares/.copy_offload2
# ls -l /mnt/shares/.copy_offload*
-rw-r--r--. 1 nobody nobody 5 10月 12 16:45 /mnt/shares/.copy_offload2
# ls -la /mnt/shares/.copy_offload*
-rw-r--r--. 1 nobody nobody 5 10月 12 16:45 /mnt/shares/.copy_offload2
# export LANG=C
# echo test > /mnt/shares/.copy_offload
-bash: /mnt/shares/.copy_offload: No such file or directory
#

ONTAPシミュレータを9.7から9.10.1にアップデートしようとしたらIllegal instructionとwaiting until daemon ktlsd starts upで失敗した


ONTAP 9.7からONTAP 9.10.1へのアップデートを行おうとした場合の手順を確認してみたところ、ドキュメントによれば、ダイレクトマルチホップアップデートを行うとある。

具体的にどう操作すればいいのか確認するために、vSphere仮想環境上にONTAPシミュレータ 9.7のOVAファイルを展開して実験することにした。

手順としては、管理Webの[クラスタ]-[概要]の「ONTAPの更新」にて、イメージの追加から「ONTAP 9.8のアップデートファイル」と「ONTAP 9.10.1のアップデートファイル」の2種類を追加する。

読み込みが終わったら「9.10.1」の方を選択して「更新」を実行

あとは終わるまでユーザができることはなにも無い。

まずはONTAP 9.7からONTAP 9.8へのアップデートが実行される

しばらくすると、ノードが再起動してONTAP 9.8で起動してくる。そして、ONTAP 9.10.1へのアップデートが始まる

終わるとONTAP 9.10.1で起動している、ということとなる。

が・・・ここまで来るのにいくつか問題が発生した。

vol0容量問題

vol0の容量が10GBだと途中で失敗した。とりあえず15GBで実施し、成功した。

ONTAP 9.8とONTAP 9.10.1のイメージを2つ処理するには不足していた模様。

ONTAPシミュレータ構築時にディスク構成を変えておくことを推奨する→「NetApp ONTAPシミュレータのディスク構成を変更する

作成済みの場合は、ディスクを追加する、という手順でも良い→「ONTAP 9.7シミュレータのシステムボリュームを拡張する

システムメモリ問題

ONTAPシミュレータ仮想マシンに割り当てるメモリはONTAP 9.10.1シミュレータでも6GBなので、メモリ6GBならいけるのかなー、と思ってたんですが失敗した際のメッセージの1つに「WAFL is running low on memory, with 14MB remaining.」というものが見られた。

このため、アップグレード処理にメモリ容量が6GBでは足らないのでは?という疑惑があったため、10GBに増やして実施した。

Illegal instruction問題

ONTAP 9.7からONTAP 9.8へのアップデートは問題なく完了し、ONTAP 9.10.1へのアップデートが行われようとするタイミングで「Illegal instruction」というエラーが表示された。

そのあと「Waiting until daemon ktlsd starts up.」というメッセージが無限に出力され続けた。

こちらについてはNetApp KBに「ONTAP Select Node fails to boot 9.9.1 due to “Illegal instruction”」というものが載っている。

ONTAP シミュレータ 9.7 でONTAP 9.10.1にアップデートしようとしてIllegal instructionが表示される、というのは微妙に関係していて、vSphere仮想マシンのHWバージョンの問題だった。

ONTAP シミュレータHWバージョン説明書きHWバージョン
8.3.2ESX/ESXi 4.x 仮想マシン7
9.1ESX/ESXi 4.x 仮想マシン7
9.7ESX/ESXi 4.x 仮想マシン7
9.8ESXi 5.5 仮想マシン10
9.10.1ESXi 5.5 仮想マシン10
9.11.1ESXi 5.5 仮想マシン10

上記の様にONTAP 9.8から使用する仮想マシンHWバージョンが変更になっている。

ONTAP シミュレータ9.7仮想マシンの仮想マシンHWを10に変更したところ、Illegal instruction無しにアップデート動作が実行できるようになった。