[Amazon FSx for NetApp ONTAP] ボリュームサイズの自動拡張・縮小を試してみた

ボリュームの自動拡張は便利だが、まずは監視を設定しよう
2023.05.17

ボリュームの使用率が閾値を超えたら自動で拡張して欲しいな

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

皆さんはAmazon FSx for NetApp ONTAP(以降FSx for ONTAP)のボリュームを自動拡張したいなと思ったことはありますか? 私はあります。

運用してしばらく経つと「ボリュームの使用率が気づいたら使用率が100%近くになっていた」なんてことがあったりします。

ボリューム使用率が90%以上となった場合に通知するように監視をしていても、急激に使用量が増えている場合はボリュームの拡張作業が間に合わずディスクフルとなる場面も考えられます。

そのような場合では自動でボリュームサイズが拡張されると嬉しかったりします。

FSx for ONTAPでは設定した閾値に応じてボリュームサイズを自動で拡張、縮小することができます。

AWS公式ドキュメントでも紹介されていますね。

FlexCacheの記事で少しだけ試したことはあるのですが、改めてに検証してみたので紹介します。

いきなりまとめ

  • ボリュームの使用率が閾値を超えた場合に自動でサイズを拡張・縮小することが可能
  • 2023/5/16時点では、デフォルトで自動拡張・縮小機能は無効化されている
    • マネジメントコンソールでもONTAP CLIでも同じ
  • 一回で自動拡張の閾値を超えてボリュームサイズがフルになるような書き込みをする場合、クライアントでエラーが発生する可能がある
    • 一度に大きいデータブロックを書き込むは場合は注意が必要
  • 閾値はスナップショット領域を除いたユーザーデータの使用率に対してかかる
  • 自動拡張・縮小はボリュームの使用率が、閾値で設定した使用率になるように拡張される
    • ユーザーデータサイズが100GBで閾値が85%の場合に110GB書き込むと、129.4GB(110GB / 0.85)まで拡張される
  • デフォルトの自動拡張の最大サイズはボリュームサイズの120%
  • デフォルトの自動縮小の最小サイズはボリュームサイズの100%
  • ボリュームサイズを変更すると自動縮小の最小サイズが変動する
    • 自動拡張の最大サイズは、新しいボリュームサイズが自動拡張の最大サイズ以上である場合、新しいボリュームサイズの120%が設定される
  • ボリュームサイズを手動で縮小しても自動拡張の最大サイズは変わらない
    • 現在のボリュームサイズのデフォルトの自動拡張の最大サイズ、自動縮小の最小サイズにするにはvolume autosize-resetを指定する (自動拡張・縮小も無効化となるため注意)
  • 検証した限り、自動拡張時のスループットの劣化は発生しない
  • 自動縮小単体で有効化することはできない
    • 自動拡張も併せて有効化する必要がある
  • 自動縮小の量は自動拡張の閾値と自動縮小の閾値の間でONTAPが自動で調整する

デフォルトの自動拡張・縮小設定の確認

マネジメントコンソールから作成したボリューム

まず、デフォルトの自動拡張・縮小設定の確認をします。

マネジメントコンソールから作成したボリュームと、ONTAP CLIから作成したボリュームの2パターン確認します。

マネジメントコンソールからvol_autosizeというボリュームを作成した後、ONTAP CLIからvolume showで自動拡張・縮小の設定を確認します。

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize
vserver volume       max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 1.20GB       1GB          85%                             50%                               off

デフォルトでは自動拡張・縮小機能は無効化されていますね。(autosize-modeoff)

また、自動拡張の閾値は85%で最大1.20GBまで拡張するようです。自動縮小の閾値は50%で、最小1GBまで縮小するようです。

ONTAP CLIから作成したボリューム

次にONTAP CLIから作成したボリュームを確認します。

::> volume create -vserver SVM -volume vol_autosize2 -aggregate aggr1 -size 1GB -state online -policy default -tiering-policy none
[Job 2083] Job succeeded: Successful

::> volume show -vserver SVM -volume vol_autosize2 -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize
vserver volume        max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------- ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize2 1.20GB       1GB          85%                             50%                               off

マネジメントコンソールから作成したボリュームの各種設定値と同じですね。

ONTAP CLIからボリューム作成時に自動拡張・縮小の機能を有効化したい場合はvolume createの引数に-autosize-mode {grow|grow_shrink}を設定することになります。

ボリュームの自動拡張の動作確認

ボリュームの自動拡張が無効化している場合

ボリュームの自動拡張の動作確認をします。

その前に、ボリュームの自動拡張が無効化されている場合の挙動を確認します。

まず、ボリュームをNFSでマウントします。

# マウントポイントの作成
$ sudo mkdir -p /mount/fsxn/vol_autosize

# ボリュームのマウント
$ sudo mount -t nfs svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize /mount/fsxn/vol_autosize/

# ボリュームがマウントされていることを確認
$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  973M  320K  973M   1% /mount/fsxn/vol_autosize

ボリュームの空き容量は973MBですね。このボリュームに1GiBのファイルを作成しようとします。

$ sudo dd if=/dev/urandom of=/mount/fsxn/vol_autosize/test-file-1 bs=256M count=4
dd: closing output file ‘/mount/fsxn/vol_autosize/test-file-1’: No space left on device

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  973M  973M   64K 100% /mount/fsxn/vol_autosize

「空いているスペースがないよ」と怒られました。

ボリュームの自動拡張を有効化した場合

それでは、volume modify でボリュームの自動拡張を有効化します。

::> volume modify -vserver SVM -volume vol_autosize -autosize-mode grow
Volume modify successful on volume vol_autosize of Vserver SVM.

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize
vserver volume       max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 1.20GB       1GB          85%                             50%                               grow

自動拡張が有効化されました。(autosize-modegrow)

ボリュームの自動拡張・縮小の設定変更はvolume autosizeでも行えます。

また、ボリュームの空き容量が少ない場合はボリュームサイズの拡張、もしくはSnapshotの削除が行われます。

どちらの処理を優先的に行うのかはspace-mgmt-try-firstを確認します。

By default, ONTAP tries to increase the size of the volume first. In most cases, the default configuration is preferable, because when a Snapshot copy is deleted, it cannot be restored. However, if you need to avoid growing the size of a volume whenever possible, you can configure ONTAP to delete Snapshot copies before increasing the size of the volume.

Steps

  1. If you want ONTAP to attempt to increase the size of the volume when it gets full, enable the autogrow capability for the volume by using the volume autosize command with grow mode.

    Remember that when the volume grows, it consumes more free space from its associated aggregate. If you are depending on the volume’s ability to grow whenever it needs to, you must monitor the free space in the associated aggregate and add more when needed.

  2. If you want ONTAP to delete Snapshot copies, FlexClone files, or FlexClone LUNs when the volume gets full, enable autodelete for those object types.

  3. If you enabled both the volume autogrow capability and one or more autodelete capabilities, select the first method that ONTAP should use to provide free space to a volume by using the volume modify command with the -space-mgmt-try-first option.

    To specify increasing the size of the volume first (the default), use volume_grow. To specify deleting Snapshot copies first, use snap_delete.

Configure volumes to automatically provide more space when they are full

::> volume show -vserver SVM -volume vol_autosize -fields space-mgmt-try-first
vserver volume       space-mgmt-try-first
------- ------------ --------------------
SVM     vol_autosize volume_grow

デフォルトではspace-mgmt-try-firstvolume_growなので、ボリュームサイズの拡張が優先されます。

ボリュームサイズの拡張を行っても十分な空き容量を確保できない場合はSnapshotが削除されます。

この状態で再度1GBのファイルを作成しようとします。

$ sudo dd if=/dev/urandom of=/mount/fsxn/vol_autosize/test-file-1 bs=256M count=4
dd: closing output file ‘/mount/fsxn/vol_autosize/test-file-1’: No space left on device

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  1.2G  1.1G  127M  90% /mount/fsxn/vol_autosize

$ ls -l /mount/fsxn/vol_autosize/
total 1052712
-rw-r--r-- 1 root root 1073741824 May 16 07:18 test-file-1

ボリュームサイズが1GBから1.2GBに拡張されましたね。

またNo space left on deviceと表示されましたが、1073741824 Byte / 1024 / 1024 /1024 = 1 GiBのファイルが作成されました。

ONTAP CLIからもボリュームサイズが拡張されたことを確認します。

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size   used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 1.20GB 1.00GB 1.20GB       1GB          85%                             50%                               grow

ボリュームサイズが拡張されていることを確認できました。自動拡張の最大値max-autosizeである1.20GBまで拡張しています。

自動拡張の最大サイズまで書き込み

次に自動拡張の最大サイズまでの書き込みをしてみます。

$ sudo dd if=/dev/urandom of=/mount/fsxn/vol_autosize/test-file-2 bs=256M count=4
dd: closing output file ‘/mount/fsxn/vol_autosize/test-file-2’: No space left on device

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  1.2G  1.2G   64K 100% /mount/fsxn/vol_autosize

$ ls -l /mount/fsxn/vol_autosize/
total 1194008
-rw-r--r-- 1 root root 1073741824 May 16 07:18 test-file-1
-rw-r--r-- 1 root root  148307968 May 16 07:21 test-file-2

ボリュームの使用率が100%となり、ファイルを途中までしか書き込むことができませんでした。

自動拡張の最大サイズを変更

自動拡張の最大サイズを任意の値にすることも可能です。

volume modifyもしくはvolume autosize-maximum-sizeを指定します。

今回は試しに4GBに拡張します。

::> volume modify -vserver SVM -volume vol_autosize -max-autosize 4GB
Volume modify successful on volume vol_autosize of Vserver SVM.

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size   used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 1.42GB 1.14GB 4GB          1GB          85%                             50%                               grow

4GBに拡張されましたね。また、そのタイミングでボリュームサイズが1.2GBから1.42GBに拡張されています。

NFSクライアントからも確認します。

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  1.4G  1.2G  220M  85% /mount/fsxn/vol_autosize

ボリュームの使用率が85%になりました。どうやらボリュームの自動拡張の閾値autosize-grow-threshold-percentはユーザーデータ領域の使用率にかかってくるようですね。

この状態で、1GiBのファイルを書き込みしてみます。

$ sudo dd if=/dev/urandom of=/mount/fsxn/vol_autosize/test-file-2 bs=256M count=4
dd: closing output file ‘/mount/fsxn/vol_autosize/test-file-2’: No space left on device

$ ls -l /mount/fsxn/vol_autosize/
total 2105424
-rw-r--r-- 1 root root 1073741824 May 16 07:18 test-file-1
-rw-r--r-- 1 root root 1073741824 May 16 07:24 test-file-2

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  2.1G  2.1G   82M  97% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  2.4G  2.1G  388M  85% /mount/fsxn/vol_autosize

またNo space left on deviceと表示されましたが、1GiBのファイルが作成されました。先ほどは空き容量が220MBのところにbs=256Mで書き込んだためNo space left on deviceと表示されたのかもしれません。

ボリュームの使用率を確認すると、数秒時間が空いてから閾値である85%となっていたため、ボリュームの自動拡張のラグはありそうです。

ONTAP CLIから確認した結果は以下の通りです。特筆すべき点はないですね。

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size   used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 2.51GB 2.01GB 4GB          1GB          85%                             50%                               grow

次にbs=64M count=16にして1GiBのファイルを作成してみます。

$ sudo dd if=/dev/urandom of=/mount/fsxn/vol_autosize/test-file-3 bs=64M count=16
16+0 records in
16+0 records out
1073741824 bytes (1.1 GB) copied, 6.651 s, 161 MB/s

$ ls -l /mount/fsxn/vol_autosize/
total 3158136
-rw-r--r-- 1 root root 1073741824 May 16 07:18 test-file-1
-rw-r--r-- 1 root root 1073741824 May 16 07:24 test-file-2
-rw-r--r-- 1 root root 1073741824 May 16 07:28 test-file-3

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  3.4G  3.1G  326M  91% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  3.4G  3.1G  326M  91% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  3.4G  3.1G  325M  91% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  3.6G  3.1G  581M  85% /mount/fsxn/vol_autosize

今回はNo space left on deviceと表示されることなくファイルを作成することができました。また、今回もボリュームの拡張は若干のラグがあることが分かりました。

1度サイズが大きいブロックデータを書き込む場合は注意が必要ですね。

ONTAP CLIから確認した結果は以下の通りです。特筆すべき点はないですね。

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size   used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 3.77GB 3.01GB 4GB          1GB          85%                             50%                               grow

手動でボリュームサイズを変更した場合の自動拡張の最大サイズ、自動縮小の最小サイズ

次に、手動でボリュームサイズを変更した場合の自動拡張の最大サイズ、自動縮小の最小サイズの確認をします。

まず、ボリュームサイズを3.77GBから3.8GBに手動で拡張します。

::> volume modify -vserver SVM -volume vol_autosize -size 3.8GB
Volume modify successful on volume vol_autosize of Vserver SVM.

Based on the new volume size, the system automatically adjusted the volume autosize settings as follows:
The volume is set to shrink to a minimum of 3.80g when the volume-used space falls below 50%.

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size   used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 3.80GB 3.01GB 4GB          3.80GB       85%                             50%                               grow

自動拡張の最大サイズは変わりありませんが、自動縮小の最小サイズは設定した3.8GBとなりましたね。

次にボリュームサイズを3.8GBから3.9GBに手動で拡張します。

::> volume modify -vserver SVM -volume vol_autosize -size 3.9GB
Volume modify successful on volume vol_autosize of Vserver SVM.

Based on the new volume size, the system automatically adjusted the volume autosize settings as follows:
The volume is set to shrink to a minimum of 3.90g when the volume-used space falls below 50%.

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size   used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 3.90GB 3.01GB 4GB          3.90GB       85%                             50%                               grow

今回も自動拡張の最大サイズは変わりありませんが、自動縮小の最小サイズは設定した3.9GBとなりました。

次にボリュームサイズを3.9GBから4GBに手動で拡張します。

::> volume modify -vserver SVM -volume vol_autosize -size 4GB
Volume modify successful on volume vol_autosize of Vserver SVM.

Based on the new volume size, the system automatically adjusted the volume autosize settings as follows:
The volume is set to shrink to a minimum of 4g when the volume-used space falls below 50%.

:> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ---- ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 4GB  3.01GB 4GB          4GB          85%                             50%                               grow

またまた自動拡張の最大サイズは変わりありませんが、自動縮小の最小サイズは設定した4GBとなりました。

次にボリュームサイズを4GBから4.1GBに手動で拡張します。

:> volume modify -vserver SVM -volume vol_autosize -size 4.1GB
Volume modify successful on volume vol_autosize of Vserver SVM.

Based on the new volume size, the system automatically adjusted the volume autosize settings as follows:
The volume is set to grow to a maximum of 4.92g when the volume-used space is above 85%.

The volume is set to shrink to a minimum of 4.10g when the volume-used space falls below 50%.

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size   used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 4.10GB 3.01GB 4.92GB       4.10GB       85%                             50%                               grow

今回は自動拡張の最大サイズが4.92GBになり、自動縮小の最小サイズは設定した4GBとなりました。4.92GBは4.1GBの120%ですね。

次にボリュームサイズを4.1GBから3.77GBに手動で縮小します。

::> volume modify -vserver SVM -volume vol_autosize -size 3.77GB
Volume modify successful on volume vol_autosize of Vserver SVM.

Based on the new volume size, the system automatically adjusted the volume autosize settings as follows:
The volume is set to shrink to a minimum of 3.77g when the volume-used space falls below 50%.

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size   used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 3.77GB 3.01GB 4.92GB       3.77GB       85%                             50%                               grow

自動拡張の最大サイズは変わりありませんが、自動縮小の最小サイズは設定した3.77GBとなりました。

現在のボリュームサイズのデフォルトの自動拡張の最大サイズ、自動縮小の最小サイズにするにはvolume autosize -resetを実行します。

::> volume autosize -vserver SVM -volume vol_autosize -reset
vol autosize: Volume "SVM:vol_autosize" autosize settings updated.

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size   used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 3.77GB 3.01GB 4.52GB       3.77GB       85%                             50%                               off

自動拡張の最大サイズが3.77GBの120%である4.52GBになりました。

ただし、一緒にautosize-modeoffになっているため注意が必要ですね。

自動拡張時はスループットが劣化するか

次に自動拡張時にスループットが劣化するかを確認します。

まず、自動拡張の有効化と自動拡張の最大サイズを100TBに変更します。

::> volume modify -vserver SVM -volume vol_autosize -max-autosize 100TB -autosize-mode grow
Volume modify successful on volume vol_autosize of Vserver SVM.

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used
vserver volume       size   used   max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 3.77GB 3.01GB 100TB        3.77GB       85%                             50%                               grow

なお、FlexVolumeの最大サイズは100TBなので、自動拡張の最大サイズも100TBとなります。100TB以上の値を設定しようとすると以下のように怒られます。

::> volume modify -vserver SVM -volume vol_autosize -max-autosize 1000TB

Error: command failed: Volume maximum autosize must be smaller than or equal to the maximum volume size of 100TB.

この状態で既に存在するファイルを上書きするように書き込んでみます。

$ sudo dd if=/dev/urandom of=/mount/fsxn/vol_autosize/test-file-3 bs=64M count=16
16+0 records in
16+0 records out
1073741824 bytes (1.1 GB) copied, 7.10938 s, 151 MB/s

書き込み速度は151MBpsでした。

一度ファイルを削除してからファイルを追加した場合の速度も計測します。

$ sudo rm -rf /mount/fsxn/vol_autosize/test-file-3

$ sudo dd if=/dev/urandom of=/mount/fsxn/vol_autosize/test-file-3 bs=64M count=16
16+0 records in
16+0 records out
1073741824 bytes (1.1 GB) copied, 7.07514 s, 152 MB/s

こちらは152MBpsでした。

おおよそ150MBpsが基準になりそうですね。

それでは、ボリュームサイズを超過するファイルを作成して、自動拡張させてみます。

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  3.6G  3.1G  582M  85% /mount/fsxn/vol_autosize

$ sudo dd if=/dev/urandom of=/mount/fsxn/vol_autosize/test-file-4 bs=64M count=16
16+0 records in
16+0 records out
1073741824 bytes (1.1 GB) copied, 6.62252 s, 162 MB/s

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  4.8G  4.1G  775M  85% /mount/fsxn/vol_autosize

162MBpsとスループットの劣化は見られないですね。

もう一度試してみましょう。

$ sudo dd if=/dev/urandom of=/mount/fsxn/vol_autosize/test-file-5 bs=64M count=16
16+0 records in
16+0 records out
1073741824 bytes (1.1 GB) copied, 6.95208 s, 154 MB/s

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  6.0G  5.1G  968M  85% /mount/fsxn/vol_autosize

154MBpsでした。

その後も3回ほど繰り返し検証しましたが、いずれも150MBpsから160MBps程度のスループットでした。

このことから自動拡張時のスループットの劣化は発生しなさそうです。

ボリュームの自動縮小の動作確認

次にボリュームの自動縮小の動作確認をします。

まず、自動縮小を有効化します。

併せて自動縮小の閾値をデフォルトの50%から70%に変更します。

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used, percent-used
vserver volume       size    used   percent-used max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------- ------ ------------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 10.05GB 8.03GB 84%          100TB        3.77GB       85%                             50%                               grow

::> volume modify -vserver SVM -volume vol_autosize -autosize-mode grow_shrink -autosize-shrink-threshold-percent 70
Volume modify successful on volume vol_autosize of Vserver SVM.

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used, percent-used
vserver volume       size    used   percent-used max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------- ------ ------------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 10.05GB 8.03GB 84%          100TB        3.77GB       85%                             70%                               grow_shrink

この状態で1GiBのファイルを削除します。

# ボリューム上のファイル一覧
$ ls -l /mount/fsxn/vol_autosize/
total 8421692
-rw-r--r-- 1 root root 1073741824 May 16 07:18 test-file-1
-rw-r--r-- 1 root root 1073741824 May 16 07:24 test-file-2
-rw-r--r-- 1 root root 1073741824 May 17 01:15 test-file-3
-rw-r--r-- 1 root root 1073741824 May 17 01:06 test-file-4
-rw-r--r-- 1 root root 1073741824 May 17 01:06 test-file-5
-rw-r--r-- 1 root root 1073741824 May 17 01:09 test-file-6
-rw-r--r-- 1 root root 2147483648 May 17 01:23 test-file-7

# 1GiBのファイルを削除
$ sudo rm -f /mount/fsxn/vol_autosize/test-file-1

# ファイル削除後のボリュームの使用率を確認
$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  9.6G  7.1G  2.5G  75% /mount/fsxn/vol_autosize

閾値である70未満となっていないため、ボリュームの自動縮小は行われませんでした。

さらに1GiBファイルを削除します。

$ sudo rm -f /mount/fsxn/vol_autosize/test-file-2

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  7.5G  6.3G  1.2G  85% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  7.5G  6.1G  1.5G  81% /mount/fsxn/vol_autosize

ファイルを削除すると、ボリュームサイズが2GBほど縮小されました。一瞬ボリュームの使用率が85%になったため、ボリュームの自動拡張の閾値も影響ありそうですね。

もう一度1GiBのファイルを削除します。

$ sudo rm -f /mount/fsxn/vol_autosize/test-file-3

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  7.5G  6.1G  1.5G  81% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  7.5G  5.3G  2.3G  71% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  6.1G  5.2G  984M  85% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  6.1G  5.1G  1.1G  83% /mount/fsxn/vol_autosize

ボリュームサイズが1.4GBほど縮小されました。また一瞬ボリュームの使用率が85%になっていますね。

NetApp公式ドキュメントを確認すると、縮小動作は自動制御とありますが、やはり気になります。

自動縮小は、変化するスペース需要に対応するために自動拡張と組み合わせて使用することができ、単独で使用することはできません。自動縮小を有効にした場合、自動拡張と自動縮小の処理が無限に繰り返されないように縮小動作が ONTAP で自動的に制御されます。

ボリュームのサイズを自動的に拡張および縮小するように設定します

自動拡張の閾値を99%に変更してから自動縮小の動作確認をしてみます。

まず、自動拡張の閾値を99%に変更します。

::> volume modify -vserver SVM -volume vol_autosize -autosize-grow-threshold-percent 99
Volume modify successful on volume vol_autosize of Vserver SVM.

::> volume show -vserver SVM -volume vol_autosize -fields autosize-grow-threshold-percent, autosize-shrink-threshold-percent, autosize-mode, max-autosize, min-autosize, size, used, percent-used
vserver volume       size   used   percent-used max-autosize min-autosize autosize-grow-threshold-percent autosize-shrink-threshold-percent autosize-mode
------- ------------ ------ ------ ------------ ------------ ------------ ------------------------------- --------------------------------- -------------
SVM     vol_autosize 6.38GB 5.02GB 82%          100TB        3.77GB       99%                             70%                               grow_shrink

この状態で1GiBのファイルを削除します。

$ sudo rm -f /mount/fsxn/vol_autosize/test-file-4

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  6.1G  5.1G  1.1G  83% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  4.3G  4.2G   87M  99% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  4.3G  4.2G  161M  97% /mount/fsxn/vol_autosize

$ df -hT -t nfs4
Filesystem                                                                           Type  Size  Used Avail Use% Mounted on
svm-0404cd705c847e961.fs-05f72eb8f8d03c709.fsx.us-east-1.amazonaws.com:/vol_autosize nfs4  4.3G  4.1G  254M  95% /mount/fsxn/vol_autosize

ボリュームサイズが1.8GB程自動縮小されました。一瞬ボリュームの使用率が99%になっていることから自動拡張の閾値の影響を受けていることが分かります。

ボリュームの自動拡張は便利だが、まずは監視を設定しよう

Amazon FSx for NetApp ONTAPのボリュームサイズの自動拡張・縮小を試してみました。

自動で良きように拡張・縮小してくれるので非常に便利ですね。

ただし、自動で拡張されるのは最大サイズの設定値までなので過信はしてはいけません。個人的には「急激な書き込みに耐えられるようにする補助的なもの」と認識しています。

自動拡張を有効化した場合でもボリュームの使用率の監視を行い、ボリュームの自動拡張が行われたことやボリュームの最大サイズまでの余裕を確認することが重要です。

「じゃあ最大サイズを100TBにすれば良いのでは? 100TBのボリュームがあれば多分事足りる。」と思われるかもしれません。本当に100TB必要であれば良いですが、無条件ではお勧めしません。

いくらボリュームが100TB書き込めるといっても、FSx for ONTAPのSSDの空き容量は別途気にする必要があります。SSDのサイズは一度拡張すると縮小することができません。そのため、SSDの拡張は慎重に行うべきです。

SSDのサイジングは以下記事でも紹介しています。

そこで、クライアントに対してどのようにファイルシステムのサイズを見せるのかがポイントです。もし無制限に書き込みを許可するように伝えると、本当に無制限に書き込むような運用をされると思います。

そのような運用を開始した後に、SSD不足から不要なファイルを削除するとなった場合、エンドユーザーに書き込まれたデータを削除するように融通するのはかなり大変です。

事前にコストを鑑みて、ボリュームサイズやqtreeでクォーターを設定すると良いと考えます。

qtreeについては以下記事をご覧ください。

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

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