ONTAPで重複排除を行っているボリュームでSMB 3.0によるODXオフロード機能が働くと.copy_offload という隠しファイルがある、というので確認してみた。
まず、NFSで該当ボリュームをマウントしてls -laで見てみる
# ls -la /mnt/shares/
合計 12
drwxrwxrwx. 3 nobody nobody 4096 10月 12 16:05 .
drwxr-xr-x. 4 nobody nobody 4096 9月 12 10:44 ..
-rwxrwxrwx. 1 nobody nobody 12 10月 12 16:05 test.txt
drwxr-xr-x. 2 nobody nobody 4096 10月 12 16:03 testqtree
#
次にNetAppのdiagモードにあるlsコマンドで見てみる
ontap::*> system node run -node ontap-01 -command ls -a /vol/shares
64 .
64 ..
96 testqtree
97 test.txt
ontap::*>
重複排除が稼働していない状態では .copy_offload は存在していないということを確認した。
次に、CIFS側からtest2というディレクトリを作って、そこに同じファイルを別名でコピーしてしてみた。
NFSでマウントしてみてみる。
# ls -la /mnt/shares/
合計 16
drwxrwxrwx. 5 nobody nobody 4096 10月 12 16:20 .
drwxr-xr-x. 4 nobody nobody 4096 9月 12 10:44 ..
-rwxrwxrwx. 1 nobody nobody 12 10月 12 16:05 test.txt
drwxrwxrwx. 2 nobody nobody 4096 10月 12 16:20 test2
drwxr-xr-x. 2 nobody nobody 4096 10月 12 16:03 testqtree
#
一般的なクライアントアクセスでは存在を確認できない。
では、NetApp内部で確認するとどうなるのか?
ontap::*> system node run -node ontap-01 -command ls -a /vol/shares/
64 .
64 ..
96 testqtree
101 .copy_offload
97 test.txt
98 test2
ontap::*> system node run -node ontap-01 -command ls -al /vol/shares/
d-rwxrwxrwx 1026 64 5 4096 Wed Oct 12 07:20:48 UTC 2022 . 1662947040
d-rwxrwxrwx 1026 64 5 4096 Wed Oct 12 07:20:48 UTC 2022 .. 1662947040
d-rwxr-xr-x 1026 96 2 4096 Wed Oct 12 07:03:49 UTC 2022 testqtree 43900
---------- 0 101 0 0 Thu Jan 1 00:00:00 UTC 1970 .copy_offload 139686
arwxrwxrwx 1026 97 1 12 Wed Oct 12 07:05:28 UTC 2022 test.txt 52407
d-rwxrwxrwx 1026 98 2 4096 Wed Oct 12 07:20:54 UTC 2022 test2 136061
ontap::*>
「.copy_offload」というファイルなのかディレクトリなのかよくわからない何かが作成されていることを確認した。
ONTAP 9.9.1では通常のNFS/CIFSアクセスでは認識できないものであるので、通常利用時は特に気にする必要がないものであるようだ。
なお、NFSアクセスで.copy_offloadというファイルが作成できるかを確認してみたところ、作成がエラーとなったが「そのようなファイルやディレクトリはありません(No such file or directory)」という微妙なメッセージでの失敗だった。
# touch /mnt/shares/.copy_offload
touch: '/mnt/shares/.copy_offload' に touch できません: そのようなファイルやディレクトリはありません
# echo test > /mnt/shares/.copy_offload
-bash: /mnt/shares/.copy_offload: そのようなファイルやディレクトリはありません
# echo test > /mnt/shares/.copy_offload2
# ls -l /mnt/shares/.copy_offload*
-rw-r--r--. 1 nobody nobody 5 10月 12 16:45 /mnt/shares/.copy_offload2
# ls -la /mnt/shares/.copy_offload*
-rw-r--r--. 1 nobody nobody 5 10月 12 16:45 /mnt/shares/.copy_offload2
# export LANG=C
# echo test > /mnt/shares/.copy_offload
-bash: /mnt/shares/.copy_offload: No such file or directory
#