FSx for NetApp ONTAP で iSCSI 接続している際、スナップショットの過剰取得等でボリュームの空き領域が無くなるとディスクがオフラインになることがある

FSx for NetApp ONTAP で iSCSI 接続したディスクがオフラインになる原因と対策について説明します。過剰なスナップショットや自動バックアップによりボリュームの空き領域が枯渇するとディスクがオフラインになるため、適切なストレージ運用が必要です。
2024.03.23

コーヒーが好きな emi です。

FSx for NetApp ONTAP(以降、FSxN と省略)で iSCSI 接続している際、スナップショットの過剰取得等でボリュームの空き領域が無くなるとディスクがオフラインになることがあります。
本記事では事象の詳細と対策を記載します。

先にまとめ

  • データ更新が多いワークロードで FSxN ボリュームのスナップショットを高頻度で取得したり、自動バックアップを有効にしたりすると、大量のスナップショットが蓄積される
    • その結果、ボリュームの空き領域が枯渇し、ボリュームがフル(満タン)になることがある
  • ボリュームの空き領域が無くなると iSCSI マウントしたディスクがオフラインになる
  • 一時対応としてはスナップショットと自動バックアップを停止しスナップショットとバックアップ削除を実施のうえ、ボリュームをオンラインにすることで復旧する
  • 恒久対応としては以下ストレージ運用を検討
    • データ移行などデータ更新が多く発生するタイミングではスナップショットの取得と自動バックアップを止めておく
    • データ更新が多いワークロードでは自動バックアップとスナップショットの取得頻度や保持期間を見直す
    • ボリュームのサイジングを見直す
    • スナップショットの自動削除設定をおこなう
    • スナップショットデータを CloudWatch メトリクス監視しアラートを発報させる
    • ボリュームの自動拡張設定をおこなう

通常時

以下のような構成で検証しました。

5GiB の FSxN ボリュームを作成し、EC2(Windows Server 2022)に iSCSI マウントしています。FSxN ボリュームは Windows Server 上で約 4GiB の E ドライブに見えています。

FSxN コンソール画面

FSxN ボリュームの詳細画面より「モニタリング」タブを開くと、ボリュームのメトリクスがグラフで確認できます。

LUN で切って iSCSI マウントしている部分はユーザーデータとして 80.32%(≒ 4GiB ≒ 4,311,957,504 Byte)に見えています。

Snapshot Reserve はスナップショットデータとして 1%(0.05GiB ≒ 52.1MiB ≒ 53,686,272 Byte)に見えています。
今回スナップショットが Snapshot Reserve 領域をあふれる(spill)様子を分かりやすくするために、以下ブログの要領で Snapshot Reserve を 1% に変更しています。

ボリュームの空き容量は使用可能なボリューム容量として 18.68%(≒ 0.94GiB ≒ 956MiB ≒ 1,002,758,144 Byte)に見えています。

ONTAP CLI で FSxN の中身を確認する

volume show-space コマンドで、ボリューム容量の内訳を確認します。

volume show-space で確認したボリュームの内訳(クリックで展開)
FsxId007d9e5b2e0fb32a8::> volume show-space -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1

                          Vserver: emiki-fsxn-svm
                      Volume Name: emiki_fsxn_vol1
                      Volume MSID: 2163401251
                      Volume DSID: 1026
                     Vserver UUID: 4f09acd2-e6b3-11ee-9ce5-bf560ed4c9fb
                   Aggregate Name: aggr1
                   Aggregate UUID: 8c27b0a0-e6b2-11ee-9ce5-bf560ed4c9fb
                         Hostname: FsxId007d9e5b2e0fb32a8-01
                        User Data: 4.02GB
                User Data Percent: 80%
                    Deduplication: 4KB
            Deduplication Percent: 0%
          Temporary Deduplication: -
  Temporary Deduplication Percent: -
              Filesystem Metadata: 236KB
      Filesystem Metadata Percent: 0%
              SnapMirror Metadata: -
      SnapMirror Metadata Percent: -
             Tape Backup Metadata: -
     Tape Backup Metadata Percent: -
                   Quota Metadata: -
           Quota Metadata Percent: -
                           Inodes: 20KB
                   Inodes Percent: 0%
                   Inodes Upgrade: -
           Inodes Upgrade Percent: -
                 Snapshot Reserve: 51.20MB
         Snapshot Reserve Percent: 1%
        Snapshot Reserve Unusable: -
Snapshot Reserve Unusable Percent: -
                   Snapshot Spill: -
           Snapshot Spill Percent: -
             Performance Metadata: 40KB
     Performance Metadata Percent: 0%
                       Total Used: 4.07GB
               Total Used Percent: 81%
         Total Physical Used Size: 16.71MB
         Physical Used Percentage: 0%
                Logical Used Size: 4.07GB
             Logical Used Percent: 81%
                Logical Available: -

FsxId007d9e5b2e0fb32a8::>
  • User Data: 4.02GBUser Data Percent: 80%
    • ユーザーデータ 80%(LUN として確保した 80%)
  • Snapshot Reserve: 51.20MBSnapshot Reserve Percent: 1%
    • Snapshot Reserve が 1% に設定されている
  • Total Used: 4.07GBTotal Used Percent: 81%
    • 合計使用量が 81%
    • LUN として確保した 80% + Snapshot Reserve 1%
  • Total Physical Used Size: 16.71MBPhysical Used Percentage: 0%
    • 合計物理使用サイズが 0% 未満(≒ 16.71MB)
    • 実際に格納されているデータがごくわずか
  • Logical Used Size: 4.07GBLogical Used Percent: 81%
    • 論理的使用サイズが 81%
    • LUN として確保した 81% + Snapshot Reserve 1%

スナップショットが過剰取得されボリュームがフル(満タン)になると…

以下ブログの要領で、データ変更が激しいワークロードを再現します。

しばらくすると、マウントしていたディスク E が見えなくなってしまいました。

[コンピューターの管理] - [ディスクの管理] を確認すると、対象のディスクがオフラインになっています。

Windows Server のシステムログは以下のようなエラーが表示されます。

レベル ソース イベント ID 内容
警告 disk 51 ページング操作中にデバイス \Device\Harddisk2\DR2 上でエラーが検出されました。
エラー disk 150 ディスク 2 は、論理ブロック プロビジョニングの永続的なリソース枯渇状態に達しました。
警告 disk 147 ディスク 2 は、容量使用率のしきい値に達し、16777216 バイト使用しました。しきい値を超えた時点で、プールの残りの容量は 0 バイトでした。

FSxN コンソール画面

ユーザーデータ領域は 80.32% とほぼ変化はありませんが、スナップショットデータ領域は 19.67%(≒ 0.98GiB ≒ 1007MiB ≒ 1,056,071,680 Byte)と大幅に増加しています。空き容量はゼロです。

ONTAP CLI で FSxN の中身を確認する

volume show-space コマンドで、ボリューム容量の内訳を確認します。

volume show-space で確認したボリュームの内訳(クリックで展開)
FsxId007d9e5b2e0fb32a8::> volume show-space -vserver emiki-fsxn-svm -volume emiki_fsxn_vol1

                          Vserver: emiki-fsxn-svm
                      Volume Name: emiki_fsxn_vol1
                      Volume MSID: 2163401251
                      Volume DSID: 1026
                     Vserver UUID: 4f09acd2-e6b3-11ee-9ce5-bf560ed4c9fb
                   Aggregate Name: aggr1
                   Aggregate UUID: 8c27b0a0-e6b2-11ee-9ce5-bf560ed4c9fb
                         Hostname: FsxId007d9e5b2e0fb32a8-01
                        User Data: 4.02GB
                User Data Percent: 80%
                    Deduplication: 4KB
            Deduplication Percent: 0%
          Temporary Deduplication: -
  Temporary Deduplication Percent: -
              Filesystem Metadata: 760KB
      Filesystem Metadata Percent: 0%
              SnapMirror Metadata: -
      SnapMirror Metadata Percent: -
             Tape Backup Metadata: -
     Tape Backup Metadata Percent: -
                   Quota Metadata: -
           Quota Metadata Percent: -
                           Inodes: 20KB
                   Inodes Percent: 0%
                   Inodes Upgrade: -
           Inodes Upgrade Percent: -
                 Snapshot Reserve: 51.20MB
         Snapshot Reserve Percent: 1%
        Snapshot Reserve Unusable: -
Snapshot Reserve Unusable Percent: -
                   Snapshot Spill: 955.9MB
           Snapshot Spill Percent: 19%
             Performance Metadata: -
     Performance Metadata Percent: -
                       Total Used: 5GB
               Total Used Percent: 100%
         Total Physical Used Size: 1GB
         Physical Used Percentage: 20%
                Logical Used Size: 5GB
             Logical Used Percent: 100%
                Logical Available: -

FsxId007d9e5b2e0fb32a8::>
  • Snapshot Spill: 955.9MBSnapshot Spill Percent: 19%
    • スナップショットが Snapshot Reserve をあふれ出している(spill)
    • あふれたスナップショットは 19%
  • Total Used: 5GBTotal Used Percent: 100%
    • 合計使用量が 100%
    • LUN として確保した 80% + Snapshot Spill Percent
  • Total Physical Used Size: 1GBPhysical Used Percentage: 20%
    • 合計物理使用サイズが 20%(≒ 1GB)
    • 実際に格納されているデータはユーザーデータがごくわずかと、スナップショットの約 1GiB
  • Logical Used Size: 5GBLogical Used Percent: 100%
    • 論理的使用サイズが 100%
    • LUN として確保した 80% + Snapshot Spill Percent

volume snapshot autodelete show コマンドで、スナップショットの一覧を表示します。

volume snapshot show で確認したスナップショット一覧(クリックで展開)
FsxId007d9e5b2e0fb32a8::> volume snapshot show -volume emiki_fsxn_vol1
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
emiki-fsxn-svm
         emiki_fsxn_vol1
                  emiki_5min.2024-03-20_1240              7.90MB     0%   32%
                  emiki_5min.2024-03-20_1245              8.85MB     0%   34%
                  emiki_5min.2024-03-20_1250              9.21MB     0%   35%
                  emiki_5min.2024-03-20_1255              9.45MB     0%   36%
                  emiki_5min.2024-03-20_1300              9.49MB     0%   36%
                       :
                    (中略)
                       :
                  emiki_5min.2024-03-20_1745             14.71MB     0%   46%
                  emiki_5min.2024-03-20_1750             12.27MB     0%   42%
                  emiki_5min.2024-03-20_1755             12.34MB     0%   42%
                  emiki_5min.2024-03-20_1800             17.55MB     0%   51%
                  emiki_5min.2024-03-20_1805             11.52MB     0%   40%
                  emiki_5min.2024-03-20_1810             18.23MB     0%   52%
                  emiki_5min.2024-03-20_1815             13.72MB     0%   45%
                  emiki_5min.2024-03-20_1820             16.32MB     0%   49%
                  emiki_5min.2024-03-20_1825             10.39MB     0%   38%
                  emiki_5min.2024-03-20_1830             17.99MB     0%   51%
                  emiki_5min.2024-03-20_1835             13.76MB     0%   45%
                  emiki_5min.2024-03-20_1840             15.19MB     0%   47%
                  emiki_5min.2024-03-20_1845             16.47MB     0%   49%
                  emiki_5min.2024-03-20_1850             11.95MB     0%   41%
                  emiki_5min.2024-03-20_1855             16.98MB     0%   50%
                  emiki_5min.2024-03-20_1900             17.05MB     0%   50%
                  emiki_5min.2024-03-20_1905             17.72MB     0%   51%
                  emiki_5min.2024-03-20_1910             10.49MB     0%   38%
                  emiki_5min.2024-03-20_1915             11.14MB     0%   39%
                  emiki_5min.2024-03-20_1920             11.22MB     0%   40%
                  emiki_5min.2024-03-20_1925              4.88MB     0%   22%
                  emiki_5min.2024-03-20_1930               140KB     0%    1%
                  emiki_5min.2024-03-20_1935               140KB     0%    1%
                  emiki_5min.2024-03-20_1940               580KB     0%    3%
                  emiki_5min.2024-03-20_1945               144KB     0%    1%
86 entries were displayed.

FsxId007d9e5b2e0fb32a8::>

2024/03/20(水) 12:40 UTC(2024/03/20(水) 21:40 JST)に取得し始めたスナップショットが、2024/03/20(水) 19:45 UTC(2024/03/21(木) 04:45 JST)で止まっています。
実はこのログを確認したのが日本時間 2024/03/21(木) 09:57 なので、5 時間ほど前にスナップショットの取得が止まってしまっているということが分かりました。

event log show で ONTAP ネイティブのログ(EMS ログ)を確認します。

event log show -severity <=DEBUG で確認した EMS ログ一覧(クリックで展開)
FsxId007d9e5b2e0fb32a8::> event log show -severity <=DEBUG
Time                Node             Severity      Event
------------------- ---------------- ------------- ---------------------------
3/20/2024 17:55:39  FsxId007d9e5b2e0fb32a8-01
                                     ERROR         monitor.volume.nearlyFull: Volume emiki_fsxn_vol1@vserver:4f09acd2-e6b3-11ee-9ce5-bf560ed4c9fb is nearly full (using or reserving 95% of space and 0% of inodes).
3/20/2024 12:24:51  FsxId007d9e5b2e0fb32a8-02
                                     NOTICE        iscsi.notice: ISCSI: New session from initiator iqn.1991-05.com.microsoft:ec2amaz-qhefppr at IP addr 10.0.10.135
3/20/2024 12:24:50  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        iscsi.notice: ISCSI: New session from initiator iqn.1991-05.com.microsoft:ec2amaz-qhefppr at IP addr 10.0.10.135
3/20/2024 12:21:20  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        LUN.space.resv.not.honored: Space reservations in volume emiki_fsxn_vol1 (DSID 1026) are not honored, either because the volume space guarantee is set to 'none' or it is disabled due to lack of space in its containing aggregate.
3/20/2024 12:21:20  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        LUN.nvfail.option.on: The nvfail option for the volume emiki_fsxn_vol1 (DSID 1026) has been turned on. The volume contains LUN or NVMe namespaces and it is recommended that this option be kept on for such volumes.
3/20/2024 12:18:34  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        passwd.changed: passwd for user 'fsxadmin' changed.
3/20/2024 12:14:52  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        Nblade.graceEnd: NFS server grace state has ended for Vserver "emiki-fsxn-svm", LIF ID "1028", LIF IP address "10.0.20.149".
3/20/2024 12:14:50  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        arw.volume.state: Anti-ransomware state was changed to "disabled" on volume "emiki_fsxn_vol1" (UUID: "72e41a9c-e6b3-11ee-9ce5-bf560ed4c9fb") in Vserver "emiki-fsxn-svm" (UUID: "4f09acd2-e6b3-11ee-9ce5-bf560ed4c9fb").
3/20/2024 12:14:05  FsxId007d9e5b2e0fb32a8-01
                                     INFORMATIONAL Nblade.nfsCredCacheFlushed: When the administrator modifies the "extended-groups-limit" option or "auth-sys-extended-groups" option using the "vserver nfs modify" command, the entire credential cache is flushed that holds credentials on connections that use mixed-mode security style volumes or RPCSEC_GSS authentication or extended groups over AUTH_SYS. This makes subsequent operations on such connections slower for a short while, until the credential cache is repopulated. The value of "auth-sys-extended-groups" option is 0 (1:enabled, 0:disabled). The value of "extended-groups-limit" option is 32.
3/20/2024 12:14:05  FsxId007d9e5b2e0fb32a8-02
                                     INFORMATIONAL Nblade.nfsCredCacheFlushed: When the administrator modifies the "extended-groups-limit" option or "auth-sys-extended-groups" option using the "vserver nfs modify" command, the entire credential cache is flushed that holds credentials on connections that use mixed-mode security style volumes or RPCSEC_GSS authentication or extended groups over AUTH_SYS. This makes subsequent operations on such connections slower for a short while, until the credential cache is repopulated. The value of "auth-sys-extended-groups" option is 0 (1:enabled, 0:disabled). The value of "extended-groups-limit" option is 32.
3/20/2024 12:13:59  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        Nblade.graceBegin: NFS server grace state has begun for Vserver "emiki-fsxn-svm", LIF ID "1028", LIP IP address "10.0.20.149".
3/20/2024 12:13:58  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        Nblade.recoveryBegin: NFS server lock recovery has begun for Vserver "emiki-fsxn-svm", LIFID "1028", LIF IP address "10.0.20.149".
3/20/2024 12:13:51  FsxId007d9e5b2e0fb32a8-02
                                     NOTICE        arw.vserver.state: Anti-ransomware was changed to "disabled" on Vserver "emiki-fsxn-svm" (UUID: "4f09acd2-e6b3-11ee-9ce5-bf560ed4c9fb").
3/20/2024 12:11:55  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        snaplock.sys.compclock.set: The compliance clock time of the system has been set to Wed Mar 20 12:11:55 UTC 2024. Reason: initialized by administrator.
3/20/2024 12:11:55  FsxId007d9e5b2e0fb32a8-02
                                     NOTICE        snaplock.sys.compclock.set: The compliance clock time of the system has been set to Wed Mar 20 12:11:55 UTC 2024. Reason: initialized by administrator.
3/20/2024 12:11:53  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        passwd.changed: passwd for user 'fsx-oncall' changed.
3/20/2024 12:09:16  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        passwd.changed: passwd for user 'fsxadmin' changed.
3/20/2024 12:05:28  FsxId007d9e5b2e0fb32a8-02
                                     NOTICE        scsiblade.online: This node has completed initialization of the SAN configuration cache. FCP and iSCSI traffic are enabled on this node.
3/20/2024 12:04:59  FsxId007d9e5b2e0fb32a8-02
                                     INFORMATIONAL secd.rpc.server.ready: SecD is ready to serve all RPCs.
3/20/2024 12:04:38  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        scsiblade.online: This node has completed initialization of the SAN configuration cache. FCP and iSCSI traffic are enabled on this node.
3/20/2024 12:04:23  FsxId007d9e5b2e0fb32a8-01
                                     INFORMATIONAL secd.rpc.server.ready: SecD is ready to serve all RPCs.
3/20/2024 12:03:55  FsxId007d9e5b2e0fb32a8-01
                                     NOTICE        passwd.changed: passwd for user 'admin' changed.
3/20/2024 12:03:54  FsxId007d9e5b2e0fb32a8-02
                                     NOTICE        passwd.changed: passwd for user 'admin' changed.
3/20/2024 12:01:03  FsxId007d9e5b2e0fb32a8-02
                                     NOTICE        iscsi.session.stateChanged: iSCSI session state is changed to Connected for the target iqn.2012-06.com.bsdctl:target0 (type: partner2, address: 198.19.1.150:65200).
3/20/2024 12:01:03  FsxId007d9e5b2e0fb32a8-02
                                     NOTICE        iscsi.session.stateChanged: iSCSI session state is changed to Connected for the target iqn.2012-06.com.bsdctl:target0 (type: partner, address: 198.19.1.150:65200).
3/20/2024 12:01:00  FsxId007d9e5b2e0fb32a8-02
                                     NOTICE        iscsi.session.stateChanged: iSCSI session state is changed to Connected for the target iqn.2012-05.local:mailbox.target.r1mOZ (type: mailbox, address: 198.19.0.158).
3/20/2024 12:00:59  FsxId007d9e5b2e0fb32a8-02
                                     NOTICE        iscsi.session.stateChanged: iSCSI session state is changed to Connected for the target iqn.2012-06.com.bsdctl:target0 (type: local, address: 127.0.0.1:65199).
27 entries were displayed.

FsxId007d9e5b2e0fb32a8::>

2024/3/20 17:55:39 UTC(2024/3/21 02:55 JST)に、ボリュームがほぼ満タン(スペースの 95% と inode の 0% を使用または予約状態)であることを示すエラーイベントが出力されています。

このログを確認したのが日本時間 2024/03/21(木) 09:57 なので、約 7 時間前の AM 2:55 JST 頃にボリュームが 95% まで使用されていたことが分かります。

今回 ONTAP CLI で取得できる詳細なログを掲載していますが、FSxN ボリュームの詳細画面「モニタリング」タブで使用可能なボリューム容量の折れ線グラフを確認いただくと、徐々にボリュームの空き容量が減っていきゼロに近づいていくのがより分かりやすく確認できます。

イメージ図

今回の事象を図に表すと以下です。

  • LUN として確保した領域(ユーザーデータ)の内部はデータが激しく変更されたが、ユーザーからはまだ空き容量があるように見える
  • 大きなスナップショットがたくさん取得され、Snapshot Reserve として確保した領域をスナップショットがあふれ出た(spill)
  • あふれ出たスナップショットがボリュームの空き容量を圧迫し、ボリュームがフル(満タン)になった

対策

一時対応

一時対応として、以下の対応を実施すればボリュームは復旧します。

  • スナップショット取得と自動バックアップを止め、不要なスナップショットとバックアップを削除する
  • ボリュームを再びオンラインにする

スナップショット取得と自動バックアップを止め、不要なスナップショットとバックアップを削除する

今回の検証では自動バックアップを取得していなかったので自動バックアップの削除対応については割愛させていただきます。スナップショット取得の停止とスナップショットの削除方法は以下ブログを参照ください。

スナップショットデータ 1%、使用可能なボリューム容量 18.66% に戻りました。

ボリュームを再びオンラインにする

[コンピューターの管理] - [ディスクの管理] より、オフラインになっていたディスクをオンラインに変更します。

ボリューム E として再び使用できる状態に戻ります。

Windows Server のシステムログは以下のような情報ログが表示されます。

レベル ソース イベント ID 内容
情報 Mtfs (Microsoft-Windows-Ntfs) 98 ボリューム E: (\Device\HarddiskVolume7) 正常です。必要な操作はありません。

恒久対応

恒久対応としては以下の対応を検討してください。

  • データ移行などデータ更新が多く発生するタイミングではスナップショットの取得と自動バックアップを止めておく
  • データ更新が多いワークロードでは自動バックアップとスナップショットの取得頻度や保持期間を見直す
  • ボリュームのサイジングを見直す
    • ボリューム容量を増やす、Snapshot Reserve を多く設定する、SSD ストレージ容量を増やすなどの対策をとってください。
  • スナップショットの自動削除設定をおこなう
    • 以下ブログを参照ください。

  • スナップショットデータを CloudWatch メトリクス監視しアラートを発報させる
    • 今回のように iSCSI マウントのために LUN を切っている環境では自動でユーザーデータが増えることはありません(ユーザーが明示的に LUN をリサイズする必要がある)。
    • そのためユーザーが明示的に増やさなくても容量に応じて増加してくるスナップショットデータを CloudWatch メトリクス監視しアラートを発報させると良いです。
    • ボリュームの空き容量(使用可能なボリューム容量)を監視しても良いですが、CloudWatch アラームはアラームメトリクスあたりで課金が発生します。大量のボリュームが存在するような環境では複数のメトリクスを組み合わせるより、直接その値を示しているメトリクスを使う方がコストメリットがあります。
  • ボリュームの自動拡張設定をおこなう
    • ボリュームサイズの自動拡張設定も可能ですが、一回で自動拡張の閾値を超えてボリュームサイズがフルになるようなスナップショットの書き込みが行われる場合はエラーが発生する可能性があります。

おわりに

FSxN は ONTAP ならではの機能が多く、ストレージ運用で考慮すべき点が多くあります。運用時にこんなことを考えるかな、というのをイメージ図にしてみました。

最初から完璧な設定をするのは難しいので、運用しながら最適な設定値を見つけるようにすることがおすすめです。本記事がどなたかのお役に立てば幸いです。

参考

FSx for ONTAP EMS イベントのモニタリング - FSx for ONTAP

スナップショットの使用 - FSx for ONTAP

Manage the Snapshot copy reserve ONTAP 9