All FlashのNetAppでノード1側にディスクを片寄せする場合のメモ

All FlashのnetApp AFF C250は通常2つあるノードに対して均等にディスクが割り当てられている。

ONTAP公式ドキュメント:ルート/データパーティショニング

例えば15TB SSDを10本つんでいる場合、以下のようになる

各スロットにある15TB SSDは内部で、data1パーテーション(約7TB)、data2パーテーション(約7TB)、rootパーテーション(残り) に分割されるという、ADPv2というフォーマットになっている。

オレンジ色の部分のownerがノード1で、水色の部分のownerがノード2となる。

data1パーテーションとdata2パーテーションのownerをノード1に割り当てなおすと以下のような構成をとることが可能となり、ボリュームを拡大することができる。

owner変更してノード1側に集約しよう、という場合は、ノード2側に作成されているaggregateは壊す必要があるので注意

作業で使うコマンドについて

パーテーション変更を行う際に、owner状態などを確認する必要がある。

その際に使うコマンドには、通常権限(admin)で実行できるものと、diag権限で実行できるものがある。

各パーテーションのownerがどちらのノードなのか確認するコマンド

通常権限コマンド「storage disk show -partition-ownership」

通常コマンド「storage disk show -fields owner,type,root-owner,data1-owner,data2-owner」

diag権限コマンド「storage disk partition show」

パーテーションの割り当てを変更するときに、変更忘れがないか確認する場合は「storage disk partition show -partition *P2」パーテーションを指定してOwnerノードの表示を一括で確認するとよい

パーテーションのownerを変更するコマンド

パーテーションownerを変更するコマンドはdiag権限の「storage disk partition assign」で行う

「storage disk partition assign -partition *P2 -owner ノード1 -force」と実行すると有無も言わさず強制的にすべてのP2パーテーション(data2パーテーション)のownerをノード1に変更することができるが、事故を起こさないように事前に「storage disk partition show -partition *P2」を実行し、すべての”Container Type”が「spare」であることを確認した方がよい

すでにaggregateが作成されている場合

すでに両ノードでaggregateが作成されている場合、ownerをはく奪するノード側のaggregateを削除する必要がある。

なお、システム用のaggregate(標準ではaggr0_ノード名 で作成されている) は削除しないこと。

削除手順は「storage aggregate offline -aggregate aggr名」でオフラインにした後

「storage aggregate delete -aggregate aggr名」で削除する。


ADPv2のパーテーション配分について

15TB SSDが8本の場合、各ノードのrootパーテーション部分は4パーテーションを使用したRAID-DPとなりスペアはない状態となる。

各ノードが使うシステム用aggregateは140GB程度は確保されるのだが、ディスクの本数が少ない場合、rootパーテーションに割り当てられる容量が通常より増やされれていた。

data1data2rootrootのスペア
8本6.94TB6.94TB93.52GBなし
10本6.94TB6.94TB93.52GB1
12本6.96TB6.96TB62.35GB1
14本6.96TB6.96TB62.35GB1
16本~22本6.97TB6.97TB37.42GB1
24本6.97TB6.97TB37.42GB2

スペアディスクを分散する技術についてのメモ

RAIDで組んだ領域が2PBになると再構築に時間がかかりすぎるので、旧来の専用スペアディスクを用意するという仕組みをとらず、各物理ディスク内にスペア領域を用意し、全体にスペアを分散する、という技術を採用している。

ただ、これについて、RAIDの定義と違って一般的な用語がないため、各社の用語をチェックした

「Dynamic Drive Pool」が比較的共通で使われているような印象があるが、DDPという単語を使っていても実装について詳細をみると、各社差があるようにみえる。

NetApp SANtricity : Dynamic Drive Pool (DDP)
 OEM: 富士通 ETNERNUS ABシリーズ
 What Are Dynamic Disk Pools?

DELL Unity: Dynamic Pool (RAID5,RAID6,RAID1/0相当)
 Dell Unity:動的プールについて(マップされたRAID)(Dellによる修正可能)

DELL PowerVault: ADAPT (2本障害まで対応。12~128本構成)
 Dell PowerVault ME5シリーズ 管理者ガイド RAIDレベル

HPE MSA Gen6: MSA-DP+
 HPE MSA Gen6 Storage システム構成図
 ネットワールド HPE MSA Gen6

PureStorage: RAID-3D (2本障害まで対応)
 レポート ESG Lab Validation Pure Storage FlashArray-

RJ45シリアルとUSBケーブル

RJ45<=>RS-232Cの変換コネクタは配線が1つではなく、断線してないのに使えない場合がある。

この仕様違いは2024年現在でもあり、RJ45<=>USBシリアル のケーブルにも配列が異なるものが存在している

それらがどういう違いなのか、というメモ書き

Cisco:ケーブルのピン割り当て
ヤマハ: RJ-45コンソールケーブル YRC-RJ45C

で・・・RJ45側のシリアル配列を調べると、大きく分けて「Cisco/Sun互換」と「それ以外」ということになる。

最近のYAMAHA RTXもCisco互換となる

また、最近はUSBシリアルに直接RJ45コネクタがついている、というタイプも販売されている

千石電商での販売例は以下となる

SSA SU2-ULC100G 1780円 PL2303チップ
WaveShare USB-TO-RJ45-Console-Cable 1680円 FT232RLチップ

aliexpressにもいろいろ出ていて、おもに下記3種類があり、PL2303とCH340採用のやつはだいたい似たような価格となっており500円前後。FL232(FTDI)系だと1400円を超したりする。

PL2303チップ採用タイプ
CH340チップ採用タイプ
FL232RLチップ採用タイプ

とりあえず、ドキュメントや製品ページに書いてある配線について下記にまとめた。

送受信の表記が逆になっているものもあるが、出典に書いてある通りの記述にしてある。

RJ45ピンCisco/Sun互換USBシリアル
PL2303chip
USBシリアル
CH340chip
システムサコム機器コンソールサーバ千石で売ってる変換ケーブル1千石で売ってる変換ケーブル2
1RTSCTSCTSRTSRTSCTSCTS
2DTRDSRDSRGNDDSRDSRDTR
3TxDRxDRxDTxDRxDRxDTxD
4GNDGNDGNDRxDGNDGNDGND
5GNDGNDDCDGNDDCDDCDGND
6RxDTxDTxDGNDTxDTxDRxD
7DSRDTRDTRGNDDTRDTRDSR
8CTSRTSRTSCTSRTSRTSRTS
出典出典出典出典出典出典出典

NetApp ONTAPファイルサーバ置き換え後にいらないsnapshotを削除する

NetApp ONTAPファイルサーバを置き換える際、snapmirrorでボリューム転送して行う、というのがよくある。

で、置き換えた後、新旧NetAppを結ぶsnapmirrorで使用していたvolume snapshotについては自動削除されないので、それを特定して削除する、という必要があるので、その手法のメモ書き。

1 いまあるsnapshotの確認

「volume snapshot show -volume ボリューム名」で該当するボリューム内にあるsnapshotを確認

snapmirrorで作成されたsnapshotは「snapmirror.<UUID>_ID.日時」で作成されている。

2 snapmirrorで使用しているsnapshotの確認

「snapmirror show -destination-volume ボリューム名 -field exported-snapshot」でsnapmirrorが使用しているsnapshot名が表示される

つまり、1で確認したsnapmirrorと名前がついているsnapshotで、exported-snapshotに表示されないものが不要なものとなる。

3 snapshotの依存を確認

通常ONTAPのCLIでは-fields で表示させたい項目を入力する場合、タブ補完機能があるのだが、そこに表示されない裏オプション的なものがある。

それが、snapshotの依存が存在するかを表示する「dependency」である。(タブ補完がきかないので、すべて手動で入力する必要がある)

「volume snapshot show -volume ボリューム名 -fields dependency」を実行して確認する

表示される値は以下の意味がある。

空欄: 依存関係なし
snapmirror: snapmirrorの送り側
busy: snapmirrorの受け側

2で不要なsnapshotは確定しているが、そのsnapshotに対して「snapmirror」も「busy」もついてない、ということを確認する

4 snapshotの削除

不要なsnapshotを削除する

「volume snapshot delete -volume ボリューム名 -snapshot snapshot名」で削除する。

ちゃんとsnapmirror関係の削除処理が行われていれば削除しますかy/nの確認をしたのちに削除が行える。

なんらかの事情でロックがかかっている状態となっていて、それでも削除したい場合は、「set adv」でadvanced権限に移行し

「volume snapshot delete -volume ボリューム名 -snapshot snapshot名 -force true -ignore-owners true」オプションで強制削除する

NetApp ONTAPのevent動作確認手法

syslogやsnmpにイベントを飛ばせる設定(EMS設定の概要)ができるのだが、設定した後の動作確認をどうするかを確認した

一般論的には「How to generate EMS Events manually for testing purposes」(日本語訳版)なのだが、サンプルとして書かれているコマンドを入力した場合の動作がいまいちである。

ontap9131::> set diag

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

ontap9131::*> event generate -node ontap9131-01 -message-name monitor.volume.nearlyFull  -values Volume testshare@vsevrer:2d770626-xxxx-11ef-8a02-d039ea59xxxx is neary full is nearly full

ontap9131::*>

これでsyslogサーバには以下のログが届いた

May 23 15:29:01 rsyslogsevrer.adosakana.local [ontap9131-01: monitor.volume.nearlyFull:error]: Volume testshare@vsevrer:2d770626-xxxx-11ef-8a02-d039ea59xxxxisneary is nearly full (using or reserving full% of space and is% of inodes).

なんか出力内容が微妙

さがすともうちょっとまともなコマンド例が出てきた

Events not sent to syslog server due to network routes」(日本語訳版)

ontap9131::> set diag

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

ontap9131::*> event generate -message-name monitor.volume.nearlyFull -values TEST,TEST,TEST,TEST,TEST,TEST

ontap9131::*>

これで届いたログは以下

May 23 15:18:32 rsyslogsevrer.adosakana.local [ontap9131-01: monitor.volume.nearlyFull:error]: TEST TESTTESTTEST is nearly full (using or reserving TEST% of space and TEST% of inodes).

ノード指定しなくても出力されてますね

何回かテストしてみたところ、未指定時は -01ノードの方から出力されており、-02ノードからノード指定しないとログが出ませんでした

あとはテストログの内容を現物に似せるため、まずは実際のエラーを出してみます

May 23 16:30:55 rsyslog.adosakana.local  [ontap9131-01: wafl.vol.autoSize.done:notice]: Volume autosize: Automatic grow of volume 'testshare@vserver:2d770626-xxxx-11ef-8a02-d039ea59xxxx' by 421MB is complete.
May 23 16:30:55 rsyslog.adosakana.local [ontap9131-01: monitor.volume.full:ALERT]: Volume "testshare@vserver:2d770626-xxxx-11ef-8a02-d039ea59xxxx" is full (using or reserving 99% of space and 0% of inodes).

それっぽい出力内容を調整すると下記な感じなんだけど「”」の入れ方がわからない・・・

ontap9131::*> event generate -message-name monitor.volume.nearlyFull -values Volume ,volume名,@SVM名,UUID,xx,yy

ontap9131::*>
May 23 16:40:24 rsyslog.adosakana.net [ontap9131-01: monitor.volume.nearlyFull:error]: Volume volume名@SVM名UUID is nearly full (using or reserving xx% of space and yy% of inodes).

2024/06/11追記

ONTAP EMS referencemonitor.volume.nearlyFull に詳細が書いてあった。

Parameters
object_type (STRING): Identifier for the type of object to which this event applies (aggregate or volume).
name (STRING): Name of this object.
app (STRING): Application UUID.
vserver_uuid (STRING): Universal Unique ID (UUID) of the object’s Vserver, if the object is a volume. Otherwise, this string is empty.
percent_full_blocks (STRING): Used capacity of the space of the object, as a percent.
percent_full_inodes (STRING): Used capacity of inodes of the object, as a percent.

ほかのメッセージでテストする場合は、このEMS referenceの内容を確認すればよい、ということも分かった


メモ

エラーイベントを送る場合(イベントフィルタ:default-trap-events で見れる)

event generate -message-name monitor.volume.nearlyFull -values Volume ,volume名,@SVM名,UUID,xx,yy

アラートイベントを送る場合(イベントフィルタ:important-events で見れる)

event generate -message-name monitor.volume.full -values Volume ,volume名,@SVM名,UUID,xx,yy

直近15分以内のイベントログを見る

event log show -time >=15m

2024年5月23日17:00~17:20までのイベントログを見る

event log show -time "5/23/2024 17:00:00".."5/23/2024 17:20:00"