Amazon FSx for NetApp ONTAPのデータ圧縮と重複排除の力を感じてみた

Storage Efficiency機能凄い
2022.06.16

Amazon FSx for NetApp ONTAPのデータ圧縮と重複排除が凄いらしい

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

まずは、これを見てくれ。

ワークロードの種類 圧縮のみ 重複排除のみ 圧縮および重複排除
汎用ファイル共有 50% 30% 65%
仮想サーバーとデスクトップ 55% 70% 70%
データベース 65~70% 0% 65~70%
エンジニアリングデータ 55% 30% 75%
地質地震データ 40% 3% 40%

これは、Amazon FSx for NetApp ONTAPP(以降、FSx for ONTAP)のFAQで紹介されているFSx for ONTAのデータ圧縮と重複排除による効果です。

とんでもない効果じゃないですか?

しかも、データ圧縮と重複排除を有効にしてもパフォーマンスに悪影響をほとんど与えないという凄い性能をしています。

Q: データの圧縮と重複排除はファイルシステムのパフォーマンスにどのように影響しますか?

A: ほとんどのワークロードでは、圧縮と重複排除を有効にしても、ファイルシステムのパフォーマンスに悪影響を与えることはありません。

実際、ほとんどのワークロードでは、圧縮によって全体的なパフォーマンスが向上します。RAM キャッシュからの高速な読み取りと書き込みを提供するために、FSx for ONTAP ファイルサーバーでは、ファイルサーバーとストレージディスク間で利用できるよりも高いレベルのネットワーク帯域幅がフロントエンドネットワークインターフェイスカード (NIC) に備わっています。データ圧縮によりほとんどのワークロードでファイルサーバーとストレージディスク間で送信されるデータ量が減少するため、データ圧縮を使用すると、ファイルシステム全体のスループットキャパシティーが増加します。ファイルシステムのフロントエンド NIC が飽和状態になると、データ圧縮に関連するスループットキャパシティーの増加は制限されます。データ圧縮を使用する場合のスループットパフォーマンスの詳細については、FSx for ONTAP のドキュメントを参照してください。

NetApp ONTAP ファイルシステム管理リソース – Amazon Web Services

ということで、実際にFSx for ONTAPのデータ圧縮と重複排除機能などのStorage Efficiency機能を試してみました。

データ圧縮の仕組み

まず、ONTAPのデータ圧縮の仕組みついて確認します。

ONTAPのデータ圧縮は全てのデータブロックをまとめて圧縮するのではなく、compression groupsというある程度のデータブロックの塊ごとに圧縮します。これにより圧縮/解凍時のパフォーマンスを向上させています。

圧縮のブロックサイズは適応圧縮(Adaptive compression)が8KBで、二次圧縮(Secondary compression)が32KBです。

圧縮の種類 影響 / 向いているワークロード
適応圧縮 ブロックサイズが小さいため解凍時の影響が少ない
ランダムリードの量が多く、高いパフォーマンスが要求されるシステムに適している
二次圧縮 ブロックサイズが大きいため圧縮効率が高い
データがシーケンシャルに書き込まれ、圧縮で多くのデータ量を削減することが要求される場合適している

参考:

また、圧縮のタイミングはインライン圧縮(Inline compression)とポストプロセス圧縮(Postprocess compression)の2種類あります。

圧縮のタイミング 影響
インライン圧縮 ディスクに書き込む前にメモリ内でデータを圧縮する
ボリュームへの書き込みI/Oの量は大幅に削減されるが、書き込み性能は低下する可能性がある
ポストプロセス圧縮 ディスクに書き込まれた後のデータを、重複排除と同じスケジュールで圧縮する

参考 : Compression

より詳細な仕組みを知りたいという方は、以下NetApp公式動画をご覧ください。

圧縮はプライマリストレージ、キャパシティプールストレージどちらも対象です。

キャパシティプールストレージは保存されたデータサイズによって課金されるので、単純に料金節約になりますね。

FSx fo ONTAPの料金は以下をご覧ください。

重複排除の仕組み

続いて、重複排除の仕組みについても確認します。

ONTAPでは重複ブロックを破棄し、単一の共有ブロックへの参照に置き換えることにより、重複排除をおこなっています。重複しているかの判定には各データブロックのフィンガープリントを使用します。処理の流れは以下の通りです。

  1. 各データブロックについてハッシュ値を計算してフィンガープリントを生成する
  2. ボリューム内の各データブロックのフィンガープリントを比較する
  3. フィンガープリントが一致するデータブロックがあった場合、フィンガープリントが一致したデータブロック同士で1バイトずつ比較する
  4. 1バイト単位で比較した結果も一致した場合、重複したと判断しデータを削除する

参考 : 重複排除の仕組み

また、データ圧縮と重複排除の両方を有効にすると、最初にデータが圧縮されてから重複が排除されます。

より詳細な仕組みを知りたいという方は、以下NetApp公式動画をご覧ください。

やってみた

ボリュームの作成

それではStorage Efficiency機能の検証をやってみます。

まず、ボリュームを作成します。作成するボリュームはStorage Efficiencyを有効にしておきます。

# ボリュームのパラメーターを指定
$ volume_name=data_compression_deduplication_volume
$ junction_path='/fsx'
$ volume_size=102400

create_volume_input=$(cat <<EOM
{
    "VolumeType": "ONTAP",
    "Name": "$volume_name",
    "OntapConfiguration": {
        "JunctionPath": "$junction_path",
        "SecurityStyle": "UNIX",
        "SizeInMegabytes": $volume_size,
        "StorageEfficiencyEnabled": true,
        "StorageVirtualMachineId": "$svm_id",
        "TieringPolicy": {
            "CoolingPeriod": 31,
            "Name": "AUTO"
        }
    },
    "Tags": [
        {
            "Key": "Name",
            "Value": "$volume_name"
        }
    ]
}
EOM
)

# ボリュームの作成
$ create_volume_output=$(aws fsx create-volume \
    --cli-input-json "$create_volume_input"
)

# ボリュームがSVMに追加されたことを確認
$ aws fsx describe-volumes \
    --filters Name=storage-virtual-machine-id,Values="$svm_id"
{
    "Volumes": [
        {
            "CreationTime": "2022-06-15T08:54:28+00:00",
            "FileSystemId": "fs-0967312eff2f5f5e1",
            "Lifecycle": "CREATED",
            "Name": "data_compression_deduplication_svm_root",
            "OntapConfiguration": {
                "FlexCacheEndpointType": "NONE",
                "JunctionPath": "/",
                "SecurityStyle": "UNIX",
                "SizeInMegabytes": 1024,
                "StorageEfficiencyEnabled": false,
                "StorageVirtualMachineId": "svm-06ec1f61e7d20f4e5",
                "StorageVirtualMachineRoot": true,
                "TieringPolicy": {
                    "Name": "NONE"
                },
                "UUID": "c3adb96f-ec88-11ec-8cdc-17ae5aaf5494",
                "OntapVolumeType": "RW"
            },
            "ResourceARN": "arn:aws:fsx:ap-northeast-1:<AWSアカウントID>:volume/fs-0967312eff2f5f5e1/fsvol-07aaff9bbf81dd2e5",
            "VolumeId": "fsvol-07aaff9bbf81dd2e5",
            "VolumeType": "ONTAP"
        },
        {
            "CreationTime": "2022-06-16T01:39:27.992000+00:00",
            "FileSystemId": "fs-0967312eff2f5f5e1",
            "Lifecycle": "CREATED",
            "Name": "data_compression_deduplication_volume",
            "OntapConfiguration": {
                "FlexCacheEndpointType": "NONE",
                "JunctionPath": "/fsx",
                "SecurityStyle": "UNIX",
                "SizeInMegabytes": 102400,
                "StorageEfficiencyEnabled": true,
                "StorageVirtualMachineId": "svm-06ec1f61e7d20f4e5",
                "StorageVirtualMachineRoot": false,
                "TieringPolicy": {
                    "CoolingPeriod": 31,
                    "Name": "AUTO"
                },
                "UUID": "35eada07-ed15-11ec-8b1b-41bd7f3524dc",
                "OntapVolumeType": "RW"
            },
            "ResourceARN": "arn:aws:fsx:ap-northeast-1:<AWSアカウントID>:volume/fs-0967312eff2f5f5e1/fsvol-0bd4aa59b25350ff5",
            "VolumeId": "fsvol-0bd4aa59b25350ff5",
            "VolumeType": "ONTAP"
        }
    ]
}

作成されたボリュームの情報を確認して、データ圧縮や重複排除が有効になっているか確認します。

::> volume efficiency show -volume data_compression_deduplication_volume -instance

                                     Vserver Name: data-compression-deduplication-svm
                                      Volume Name: data_compression_deduplication_volume
                                      Volume Path: /vol/data_compression_deduplication_volume
                                            State: Enabled
                                           Status: Idle
                                         Progress: Idle for 00:01:25
                                             Type: Regular
                                         Schedule: -
                           Efficiency Policy Name: auto
                           Blocks Skipped Sharing: 0
                             Last Operation State: Success
                     Last Success Operation Begin: Thu Jun 16 01:39:50 2022
                       Last Success Operation End: Thu Jun 16 01:39:50 2022
                             Last Operation Begin: Thu Jun 16 01:39:50 2022
                               Last Operation End: Thu Jun 16 01:39:50 2022
                              Last Operation Size: 0B
                             Last Operation Error: -
                                  Changelog Usage: 0%
                                Logical Data Size: 300KB
                               Logical Data Limit: 640TB
                             Logical Data Percent: 0%
                                       Queued Job: -
                     Stale Fingerprint Percentage: 0
                                      Compression: false
                               Inline Compression: true
                          Storage Efficiency Mode: efficient
                               Constituent Volume: false
                                    Inline Dedupe: true
                                  Data -: true
                Cross Volume Inline Deduplication: false
            Cross Volume Background Deduplication: false
                         Extended Compressed Data: true

確認すべき項目は以下の4項目です。

  • State : ポストプロセス重複排除
  • Compression : ポストプロセスデータ圧縮
  • Inline Compression : インラインデータ圧縮
  • Inline Dedupe : インライン重複排除

ポストプロセスデータ圧縮以外は有効になっていますね。

Storage Efficiency機能の効果確認

ゼロデータのバイナリファイル

それではStorage Efficiency機能の効果を確認します。

検証前のボリュームの使用量は300KBです。

::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used  percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ----- ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 95.00GB   95GB  300KB 0%           0B              0%                      0B                 0%                         0B                  0B                      0%

Amazon Linux 2のEC2インスタンスからNFSでボリュームをマウントします。

# マウントポイントの作成
$ sudo mkdir /fsx

# マウント
$ sudo mount -t nfs svm-06ec1f61e7d20f4e5.fs-0967312eff2f5f5e1.fsx.ap-northeast-1.amazonaws.com:/fsx /fsx

# ディスク使用量の確認
$ df -hT
Filesystem                                                                       Type      Size  Used Avail Use% Mounted on
devtmpfs                                                                         devtmpfs  462M     0  462M   0% /dev
tmpfs                                                                            tmpfs     470M     0  470M   0% /dev/shm
tmpfs                                                                            tmpfs     470M  512K  470M   1% /run
tmpfs                                                                            tmpfs     470M     0  470M   0% /sys/fs/cgroup
/dev/nvme0n1p1                                                                   xfs       8.0G  1.7G  6.4G  21% /
tmpfs                                                                            tmpfs      94M     0   94M   0% /run/user/0
svm-06ec1f61e7d20f4e5.fs-0967312eff2f5f5e1.fsx.ap-northeast-1.amazonaws.com:/fsx nfs4       95G  256K   95G   1% /fsx

それでは10GBのゼロデータのバイナリファイルを作成します。

# 10GBのゼロデータのバイナリファイルを作成
$ sudo dd if=/dev/zero of=/fsx/zero_block_file bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 80.4837 s, 133 MB/s

# ディスク使用量の確認
$ df -hT
Filesystem                                                                       Type      Size  Used Avail Use% Mounted on
devtmpfs                                                                         devtmpfs  462M     0  462M   0% /dev
tmpfs                                                                            tmpfs     470M     0  470M   0% /dev/shm
tmpfs                                                                            tmpfs     470M  456K  470M   1% /run
tmpfs                                                                            tmpfs     470M     0  470M   0% /sys/fs/cgroup
/dev/nvme0n1p1                                                                   xfs       8.0G  1.7G  6.4G  21% /
svm-06ec1f61e7d20f4e5.fs-0967312eff2f5f5e1.fsx.ap-northeast-1.amazonaws.com:/fsx nfs4       95G   41M   95G   1% /fsx
/dev/mapper/3600a09806c574231752b537848654672p1                                  ext4      2.0G  6.0M  1.8G   1% /lun/part1
/dev/mapper/3600a09806c574231752b537848654672p2                                  ext4      2.9G  9.1M  2.8G   1% /lun/part2

# マウントポイントのディスク使用量の確認
$ du -sh /fsx/
11G     /fsx/

dfで使用量を確認すると41MBですが、duで使用量を確認すると11GB使われていることを確認できました。Storage Efficiency機能が働いていそうですね。

NetApp ONTAP CLIでも確認してみます。

::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used    percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------- ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 94.96GB   95GB  40.92MB 0%           10GB            100%                    10GB               100%                       0B                  0B                      0%

重複排除によって10GB削減していることが分かります。

ランダムデータのバイナリファイル

次に、ランダムデータのバイナリファイルで検証します。

ゼロデータのバイナリファイルを削除して、10GBのランダムデータのバイナリファイルを作成します。

# 10GBのゼロデータのバイナリファイルを削除
$ sudo rm -f /fsx/zero_block_file

# 10GBのランダムデータのバイナリファイルを作成
$ sudo dd if=/dev/urandom of=/fsx/random_block_file bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 81.9285 s, 131 MB/s

# ディスク使用量の確認
$ df -hT
Filesystem                                                                       Type      Size  Used Avail Use% Mounted on
devtmpfs                                                                         devtmpfs  462M     0  462M   0% /dev
tmpfs                                                                            tmpfs     470M     0  470M   0% /dev/shm
tmpfs                                                                            tmpfs     470M  456K  470M   1% /run
tmpfs                                                                            tmpfs     470M     0  470M   0% /sys/fs/cgroup
/dev/nvme0n1p1                                                                   xfs       8.0G  1.7G  6.4G  21% /
svm-06ec1f61e7d20f4e5.fs-0967312eff2f5f5e1.fsx.ap-northeast-1.amazonaws.com:/fsx nfs4       95G   11G   85G  11% /fsx
/dev/mapper/3600a09806c574231752b537848654672p1                                  ext4      2.0G  6.0M  1.8G   1% /lun/part1
/dev/mapper/3600a09806c574231752b537848654672p2                                  ext4      2.9G  9.1M  2.8G   1% /lun/part2

# マウントポイントのディスク使用量の各院n
$ du -sh /fsx/
11G     /fsx/

今回はdfで使用量を確認しても11GBでした。ランダムデータであるため、ゼロデータの時に動作していたように重複排除が働かなかったと推測します。

NetApp ONTAP CLIでも確認してみます。

::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used    percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------- ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 84.86GB   95GB  10.14GB 10%          0B              0%                      0B                 0%                         0B                  0B                      0%

データ圧縮、重複排除どちらも0%で書き込んだデータ量がそのまま使用量になっていました。

テキストファイル

テキストファイルでも試してみようと思います。

適当なDevelopersIOの記事をダウンロードしてきて、ダウンロードしたファイルをEC2インスタンス上で100個複製します。

# DevelopersIOの記事をダウンロード
$ url=https://dev.classmethod.jp/articles/amazon-fsx-for-netapp-ontap-file-system-maximum-storage-size-is-virtually-unlimited/
$ file_name=amazon-fsx-for-netapp-ontap-file-system-maximum-storage-size-is-virtually-unlimited.html

$ sudo curl "$url" -o /fsx/"$file_name"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  199k  100  199k    0     0   293k      0 --:--:-- --:--:-- --:--:--  293k

# ダウンロードしたファイルを100個複製
$ for i in `seq 1 100 `; do 
  sudo cp -p /fsx/"$file_name" /fsx/"$file_name$i"
done;

NetApp ONTAP CLIで確認してみます。

::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used    percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------- ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 94.89GB   95GB  114.9MB 0%           11.70MB         9%                      11.70MB            9%                         188KB               0B                      0%

重複排除により11.70MBのデータを削減したようです。

/etc

/etcでも試してみます。

/etcをマウントポイント配下に100個複製します。

# /etc をマウントポイント配下に100個複製
$ for i in `seq 1 100 `; do 
  sudo cp -rp /etc /fsx/etc"$i"
done;

# ディスク使用量の確認
$ df -hT -t nfs4
Filesystem                                                                       Type  Size  Used Avail Use% Mounted on
svm-06ec1f61e7d20f4e5.fs-0967312eff2f5f5e1.fsx.ap-northeast-1.amazonaws.com:/fsx nfs4   95G  914M   95G   1% /fsx

# マウントポイントのディスク使用量の確認
$ sudo du -sh /fsx/
3.1G    /fsx/

dfで使用量を確認すると914MBですが、duで使用量を確認すると3.1GB使われていることを確認できました。Storage Efficiency機能が働いていそうですね。

NetApp ONTAP CLIでも確認してみます。

::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used    percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------- ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 94.11GB   95GB  913.3MB 0%           2.25GB          72%                     2.25GB             72%                        21.61MB             0B                      0%

重複排除で2.25GBも削減しています。すごい。

Storage Efficiency機能の無効化

Storage Efficiency機能の無効化も試してみます。

AWSマネージメントコンソールやAWS CLIから操作してみても良いですが、なんとなくNetApp ONTAP CLIで無効化してみます。

# 現在の設定を確認
::> volume efficiency show -volume data_compression_deduplication_volume -instance

                                     Vserver Name: data-compression-deduplication-svm
                                      Volume Name: data_compression_deduplication_volume
                                      Volume Path: /vol/data_compression_deduplication_volume
                                            State: Enabled
                                           Status: Idle
                                         Progress: Idle for 01:19:03
                                             Type: Regular
                                         Schedule: -
                           Efficiency Policy Name: auto
                           Blocks Skipped Sharing: 0
                             Last Operation State: Success
                     Last Success Operation Begin: Thu Jun 16 03:01:22 2022
                       Last Success Operation End: Thu Jun 16 03:02:59 2022
                             Last Operation Begin: Thu Jun 16 03:01:22 2022
                               Last Operation End: Thu Jun 16 03:02:59 2022
                              Last Operation Size: 10.27GB
                             Last Operation Error: -
                                  Changelog Usage: 0%
                                Logical Data Size: 85.33MB
                               Logical Data Limit: 640TB
                             Logical Data Percent: 0%
                                       Queued Job: -
                     Stale Fingerprint Percentage: 11955
                                      Compression: false
                               Inline Compression: true
                          Storage Efficiency Mode: efficient
                               Constituent Volume: false
                                    Inline Dedupe: true
                                  Data Compaction: true
                Cross Volume Inline Deduplication: false
            Cross Volume Background Deduplication: false
                         Extended Compressed Data: true

# Storage Efficiency機能を無効化
::> volume efficiency off -vserver data-compression-deduplication-svm -volume data_compression_deduplication_volume
Efficiency for volume "data_compression_deduplication_volume" of Vserver "data-compression-deduplication-svm" is disabled.

# 無効化されたことを確認
::> volume efficiency show -volume data_compression_deduplication_volume -instance

                                     Vserver Name: data-compression-deduplication-svm
                                      Volume Name: data_compression_deduplication_volume
                                      Volume Path: /vol/data_compression_deduplication_volume
                                            State: Disabled
                                           Status: Idle
                                         Progress: Idle for 01:19:28
                                             Type: Regular
                                         Schedule: -
                           Efficiency Policy Name: auto
                           Blocks Skipped Sharing: 0
                             Last Operation State: Success
                     Last Success Operation Begin: Thu Jun 16 03:01:22 2022
                       Last Success Operation End: Thu Jun 16 03:02:59 2022
                             Last Operation Begin: Thu Jun 16 03:01:22 2022
                               Last Operation End: Thu Jun 16 03:02:59 2022
                              Last Operation Size: 10.27GB
                             Last Operation Error: -
                                  Changelog Usage: 0%
                                Logical Data Size: 85.36MB
                               Logical Data Limit: 640TB
                             Logical Data Percent: 0%
                                       Queued Job: -
                     Stale Fingerprint Percentage: 11950
                                      Compression: false
                               Inline Compression: false
                          Storage Efficiency Mode: efficient
                               Constituent Volume: false
                                    Inline Dedupe: false
                                  Data Compaction: false
                Cross Volume Inline Deduplication: false
            Cross Volume Background Deduplication: false
                         Extended Compressed Data: true

以下全てが無効化されました。

  • State : ポストプロセス重複排除
  • Compression : ポストプロセスデータ圧縮
  • Inline Compression : インラインデータ圧縮
  • Inline Dedupe : インライン重複排除

この状態でゼロデータのバイナリファイルを書き込みしてみます。

# 10GBのゼロデータのバイナリファイルを作成
$ sudo dd if=/dev/zero of=/fsx/zero_block_file bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 80.3205 s, 134 MB/s

# ディスク使用量の確認
$ df -hT -t nfs4
Filesystem                                                                       Type  Size  Used Avail Use% Mounted on
svm-06ec1f61e7d20f4e5.fs-0967312eff2f5f5e1.fsx.ap-northeast-1.amazonaws.com:/fsx nfs4   95G   11G   85G  11% /fsx

# マウントポイントのディスク使用量の確認
$ du -sh /fsx/
11G     /fsx/

dfで使用量を確認しても11GBでした。以前は動作しているた重複排除が動いていないようですね。

NetApp ONTAP CLIでも確認してみます。

::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used    percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------- ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 84.87GB   95GB  10.12GB 10%          0B              0%                      0B                 0%                         0B                  0B                      0%

データ圧縮、重複排除どちらも0%で書き込んだデータ量がそのまま使用量になっていました。

Storage Efficiency機能の有効化

最後にStorage Efficiency機能を有効化します。

# Storage Efficiency機能を有効化
::> volume efficiency on -vserver data-compression-deduplication-svm -volume data_compression_deduplication_volume
Efficiency for volume "data_compression_deduplication_volume" of Vserver "data-compression-deduplication-svm" is enabled.

# 有効化されたことを確認
::> volume efficiency show -volume data_compression_deduplication_volume -instance

                                     Vserver Name: data-compression-deduplication-svm
                                      Volume Name: data_compression_deduplication_volume
                                      Volume Path: /vol/data_compression_deduplication_volume
                                            State: Enabled
                                           Status: Idle
                                         Progress: Idle for 01:25:05
                                             Type: Regular
                                         Schedule: -
                           Efficiency Policy Name: auto
                           Blocks Skipped Sharing: 0
                             Last Operation State: Success
                     Last Success Operation Begin: Thu Jun 16 03:01:22 2022
                       Last Success Operation End: Thu Jun 16 03:02:59 2022
                             Last Operation Begin: Thu Jun 16 03:01:22 2022
                               Last Operation End: Thu Jun 16 03:02:59 2022
                              Last Operation Size: 10.27GB
                             Last Operation Error: -
                                  Changelog Usage: 0%
                                Logical Data Size: 10.12GB
                               Logical Data Limit: 640TB
                             Logical Data Percent: 0%
                                       Queued Job: -
                     Stale Fingerprint Percentage: 0
                                      Compression: false
                               Inline Compression: false
                          Storage Efficiency Mode: efficient
                               Constituent Volume: false
                                    Inline Dedupe: false
                                  Data Compaction: false
                Cross Volume Inline Deduplication: false
            Cross Volume Background Deduplication: false
                         Extended Compressed Data: true

Stateのみ有効になりました。これにより、ポストプロセスで重複排除が動作するはずです。

重複排除が動作しているか確認するため、現在のボリュームの使用量を確認してみます。

::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used    percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------- ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 84.87GB   95GB  10.12GB 10%          0B              0%                      0B                 0%                         0B                  0B                      0%

重複排除が0%のままですね。volume efficiency startで保存済みのデータについてStorage Efficiency操作を再実行します。

# 保存済みのデータについてStorage Efficiency操作を再実行
::> volume efficiency start -vserver data-compression-deduplication-svm -volume data_compression_deduplication_volume -scan-old-data true

Warning: This operation scans all of the data in volume "data_compression_deduplication_volume" of Vserver "data-compression-deduplication-svm". It might take a significant time, and degrade performance during that time.
Do you want to continue? {y|n}: y
The efficiency operation for volume "data_compression_deduplication_volume" of Vserver "data-compression-deduplication-svm" has started.

# ボリュームの使用量を確認
# 1回目
::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used   percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------ ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 87.83GB   95GB  7.17GB 7%           3.14GB          30%                     3.14GB             30%                        0B                  0B                      0%


# 2回目
::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used   percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------ ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 92.97GB   95GB  2.03GB 2%           8.37GB          80%                     8.37GB             80%                        0B                  0B                      0%


# 3回目
::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used   percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------ ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 93.22GB   95GB  1.78GB 1%           8.70GB          83%                     8.70GB             83%                        0B                  0B                      0%

# 4回目
::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used   percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------ ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 93.98GB   95GB  1.02GB 1%           9.36GB          90%                     9.36GB             90%                        0B                  0B                      0%


# 5回目
::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used    percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------- ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 94.26GB   95GB  756.8MB 0%           9.69GB          93%                     9.69GB             93%                        0B                  0B                      0%


# 6回目
::> volume show -volume data_compression_deduplication_volume -fields total, used, available, percent-used, sis-space-saved, sis-space-saved-percent, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared, compression-space-saved, compression-space-saved-percent
vserver                            volume                                available total used    percent-used sis-space-saved sis-space-saved-percent dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared compression-space-saved compression-space-saved-percent
---------------------------------- ------------------------------------- --------- ----- ------- ------------ --------------- ----------------------- ------------------ -------------------------- ------------------- ----------------------- -------------------------------
data-compression-deduplication-svm data_compression_deduplication_volume 94.87GB   95GB  129.9MB 0%           10GB            99%                     10GB               99%                        0B                  0B                      0%

保存済みのデータについてStorage Efficiency操作を再実行すると、ボリュームの使用量を確認する度に徐々に重複排除によって重複データが削除されていく様子が分かりました。

最後にデータ圧縮やインライン重複排除も有効化しましょう

# データ圧縮とインライン重複排除
::> volume efficiency modify -vserver data-compression-deduplication-svm -volume data_compression_deduplication_volume -compression true -inline-compression true -inline-dedupe true

# 現在の設定を確認
::> volume efficiency show -volume data_compression_deduplication_volume -instance

                                     Vserver Name: data-compression-deduplication-svm
                                      Volume Name: data_compression_deduplication_volume
                                      Volume Path: /vol/data_compression_deduplication_volume
                                            State: Enabled
                                           Status: Idle
                                         Progress: Idle for 02:17:01
                                             Type: Regular
                                         Schedule: -
                           Efficiency Policy Name: auto
                           Blocks Skipped Sharing: 0
                             Last Operation State: Success
                     Last Success Operation Begin: Thu Jun 16 04:40:11 2022
                       Last Success Operation End: Thu Jun 16 04:40:24 2022
                             Last Operation Begin: Thu Jun 16 04:40:11 2022
                               Last Operation End: Thu Jun 16 04:40:24 2022
                              Last Operation Size: 0B
                             Last Operation Error: -
                                  Changelog Usage: 0%
                                Logical Data Size: 10.13GB
                               Logical Data Limit: 640TB
                             Logical Data Percent: 0%
                                       Queued Job: -
                     Stale Fingerprint Percentage: 0
                                      Compression: false
                               Inline Compression: true
                          Storage Efficiency Mode: efficient
                               Constituent Volume: false
                                    Inline Dedupe: true
                                  Data Compaction: true
                Cross Volume Inline Deduplication: false
            Cross Volume Background Deduplication: false
                         Extended Compressed Data: true

::>

インラインデータ圧縮(Inline Compression)とインライン重複排除(Inline Dedupe)は有効化されましたが、ポストプロセスデータ圧縮(Compression)は無効のままでした。FSx for ONTAPではポストプロセスデータ圧縮は有効にすることはできないかも知れないですね。

Storage Efficiency機能凄い

FSx for NetApp ONTAPのデータ圧縮と重複排除の力を感じてみました。

ドキュメントで紹介されている通り、簡単にデータ保存量を削減することができるありがたい機能でした。後でStorage Efficiency操作を行うことも可能なので、Storage Efficiency機能を無効でデプロイした後、やっぱり有効化したいといった時も助かりますね。

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

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