vSAN6.7Update1新機能 UNMAPを設定してみよう

皆さま、こんにちは。
VMware担当の河野です。
前回に引き続きvSAN6.7Update1(以下vSAN6.7U1)で追加された新機能について紹介していきたいと思います。
今回は実際にUNMAPを設定してみましたので、是非ご覧ください!

■TRIM/UNMAPのサポート

vSAN6.7U1から、TRIM/UNMAPがサポートされました。
今回はその中でもHDDに対して有効な、UNMAPにフォーカスしてご紹介していきたいと思います。
UNMAPが有効となっている場合、OS上でデータが削除されると、自動でストレージに通知し、ストレージは削除されたデータが使用していたブロックのマッピングを開放することで、ストレージの物理容量を空けることができます。UNMAPが使用できない場合、OS上でファイルを削除しても、ストレージには通知されないため、不要なブロックが残ってしまいます。(図1)

図1 UNMAPの説明

図1 UNMAPの説明

今回のUNMAPサポートにより、従来のvSANでは手動実行および外部ストレージへのストレージvMotion、もしくはVMのパワーオフを必要としましたが、vSAN6.7U1以降では自動で実行してくれるようになります。

■UNMAPの設定手順

vSANでUNMAPを有効化または無効化する場合は、vSANクラスタ及びゲストOSで設定を行う必要がありますので、こちらの手順を紹介したいと思います。

手順の流れ

  1. vSANクラスタの設定
    • 1) vCenter ServerにSSHでアクセスする
    • 2) RVCに接続しUNMAPを有効/無効化する
  2. ゲストOSの設定
    • 1) Windows PowerShellでUNMAPを有効/無効化する
  3. 動作確認
    • 1) UNMAPの動作確認

補足 ▸vSANクラスタ
vSANクラスタの設定は、vCenter ServerにSSHでアクセスすることで使用可能な、RVCでの操作が必要になります。今回はTera Termを用いてvCenter ServerにSSHでアクセスを行います。
なお、vSAN6.7U1のUNMAPの標準設定は”有効”です。
※RVC(Ruby vSphere Console):vCenter Server上にあるCLIのツールのことで、GUIではできない高度な設定が行えます。
RVCについての詳しい資料はこちらになります。
https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/products/vsan/vmware-ruby-vsphere-console-command-reference-for-virtual-san.pdf

▸ゲストOS
ゲストOSはWindows Server 2016を使用し、リモートデスクトップを用いて、Windows PowerShell上で設定を行います。
なお、Windows Server 2012以降のUNMAPの標準設定は”有効”です。
Linuxは別途下記設定が必要になります。
https://storagehub.vmware.com/t/vmware-vsan/vsan-space-efficiency-technologies/unmap-trim-space-reclamation-on-vsan-1/ それでは実際の手順を紹介していきます。

  1. vSANクラスタの設定
    1. vCenter ServerにSSHでアクセスする

      Tera Termを起動し、「ホスト」にvCenter ServerのIPアドレス、またはFQDNを入力します。サービスは「SSH」にチェックを入れ、「OK」ボタンをクリックします。

      vSANクラスタの設定1

      「ユーザー名」「パスフレーズ」をそれぞれ入力し「OK」ボタンをクリックします。

      vSANクラスタの設定2

      以下の画面になればvCenterへのアクセスは成功です。

      vSANクラスタの設定3

    2. RVCに接続しUNMAPを有効/無効化する
      以下のコマンドを順に実行していきます。
      #RVCに接続 #rvc “ユーザー名” @localhost > rvc administrator@vsphere.local@localhost
      Install the "ffi" gem for better tab completion.
      WARNING: Nokogiri was built against LibXML version 2.9.4, but has dynamically loaded 2.9.8
      password:
      #vSANクラスタに移動 0 /
      1 localhost/
      /localhost> ls 
      0 Datacenter (datacenter)
      /localhost> cd 0
      /localhost/Datacenter> ls 
      0 storage/
      1 computers [host]/
      2 networks [network]/
      3 datastores [datastore]/
      4 vms [vm]/
      /localhost/Datacenter> cd 1
      /localhost/Datacenter/computers> ls
      0 vSAN_1 (cluster): cpu 5 GHz, memory 23 GB
      「computers」の中身を確認し、設定を行うvSANクラスタの名前が見えているかを確認します。(今回なら赤枠の”vSAN_1”)

      続いて、以下のコマンドを実行しUNMAPを有効/無効化します。“vSANクラスタ名”に入るのは先ほど確認したクラスタ名となります。
      ▸UNMAPの有効化
      #vsan.unmap_support “vSANクラスタ名” -e > vsan.unmap_support vSAN_1 -e
      Unmap support is already disabled
      vSAN_1: success

      VMs need to be power cycled to apply the unmap setting
      ▸UNMAPの無効化
      # vsan.unmap_support “vSANクラスタ名” -d > vsan.unmap_support vSAN_1 -d
      Unmap support is already enabled
      vSAN_1: success

      VMs need to be power cycled to apply the unmap setting
      赤枠のように「“vSANクラスタ名”:success」と表示されれば、vSANクラスタのUNMAPの設定は成功です。


      以上で、vSANクラスタで行う設定は完了となります。

  2. ゲストOSの設定
    1. Windows PowerShellでUNMAPを有効/無効化する
      リモートデスクトップを用いてVMへアクセスします。ゲストOS上でWindows PowerShellを起動後、以下のコマンドを実行し、UNMAPの設定状況を確認します。
      #UNMAPの設定状況確認 > fsutil behavior query disabledeletenotify
      NTFS DisableDeleteNotify = 0
      ReFS DisableDeleteNotify は現在設定されていません
      有効化されている場合は「NTFS DisableDeleteNotify = 0」、
      無効化されている場合は「NTFS DisableDeleteNotify = 1」と表示されます。
      ※今回の検証環境ではReFSを利用していません。

      以下のコマンドを実行しUNMAPを有効/無効化します。
      ※OSにより書式が異なる可能性があるため、事前に「fsutil behavior set /?」で書式を確認してください。
      ▸UNMAPの有効化
      #UNMAPの有効化 > fsutil behavior set DisableDeleteNotify 0
      NTFS DisableDeleteNotify = 0
      赤枠のように「NTFS DisableDeleteNotify = 0」と表示されればUNMAPの有効化されています。
      ▸UNMAPの無効化
      #UNMAPの無効化 > fsutil behavior set DisableDeleteNotify 1
      NTFS DisableDeleteNotify = 1
      赤枠のように「NTFS DisableDeleteNotify = 1」と表示されればUNMAPの無効化されています。

      これでゲストOSでの設定も完了となります。

  3. 動作確認
    1. UNMAPの動作確認
      ゲストOS上でファイルの削除を行い、vSANデータストアの空き容量が増えるか確認をします。 Windows PowerShellで以下のコマンドを実行し、10GB(任意)のファイルを作成します。
      #ファイルの作成 #fsutil file createnew “ファイル名” “サイズ(Bite)” >fsutil file createnew test 10000000000
      次に10GBのファイルを作成した直後のvSANデータストアの容量をvCenter Serverで確認します。
      vSANデータストアの容量を確認するには、vSANクラスタを選択し、「監視」タブ→「vSAN」→「容量」をクリックします。
      空き容量は以下画像の赤枠で確認できます。現在は356GBです。
      UNMAPの動作確認1 ※反映には20-30分かかります。

      次に作成した10GBのファイルを完全に削除(Shift + Delete)し、vSANデータストアの容量を再度確認します。
      空き容量は以下の通り375GBになりました。
      UNMAPの動作確認2 ※反映には20-30分かかります。

      ファイルを削除したことでvSANデータストアの容量が増えたので、UNMAPが実行されていることがわかりました。
      ちなみに、空き容量が約20GBも増えた理由は、vSANでミラーリングを適用したVMだったためです。

      UNMAPのスループットもvCenter Serverで確認することが出来ます。
      ホストを選択し、「監視」タブ→「vSAN」→「パフォーマンス」→「バックエンド」をクリックすると、図で表示されます。
      赤枠のピークが今回の動作確認によるスループットです。
      想定以上にスループットが大きければ無効化を検討してみましょう。
      UNMAPの動作確認3 以上でUNMAPの設定は完了です。

いかがでしょうか。
やや専門的な内容になっていますが、手順に書かれているコマンドをコピー&ペーストするだけで簡単に設定できますので、vSANデータストアの容量やパフォーマンスをみて、UNMAPを活用してみてください。

本コラムが皆様の快適なvSANライフの助けになれば幸いです。

VMwareの記事




※閲覧にはiDATEN(韋駄天)へのログインが必要です。