メインコンテンツまでスキップ

LUN のミスアライメントされた IO を特定する方法

Views:
271
Visibility:
Public
Votes:
0
Category:
ontap-9
Specialty:
san
Last Updated:

環境

  • ONTAP 9.x
  • SAN
  • FlexPod

手順

LUN を、ホストオペレーティングシステム別のストレージデバイスとして使用します

I/O アライメントを理解するには、ホストオペレーティングシステムで LUN がストレージデバイスとしてどのように使用されるかを理解することが重要です。

  • ハードディスクでアドバタイズされる従来のブロックサイズは 512 バイトです。
  • ネットアップ LUN は、互換性を確保するために、より小さい 512 バイトブロックを引き続きホストにアドバタイズしながら、データの格納に大きなブロックサイズを使用します。
  • アドバタイズされたブロックは論理ブロックと呼ばれ、基盤となるストレージブロックは物理ブロックと呼ばれます。
  • NetApp LUN は 4KB の物理ブロック単位でデータを格納し、これにより物理ブロックあたり 8 個の 512 バイトの論理ブロックが生成されます。

logical_blocks _1.png

  • ホストオペレーティングシステムは、任意の論理ブロックで読み取り( I/O )処理または書き込み( I/O )処理を開始できます。
  • ただし、物理ブロックの先頭にない論理ブロックで I/O が開始されると、 I/O はミスアライメントされているとみなされます。

Unaligned IO.png (未整列の IO.png

  • I/O は、論理ブロックで始まる場合にのみアライメントされます。つまり、物理ブロックの最初の論理ブロックです。I/O は物理ブロックの境界にアライメントされます。

IO.png のアライメント

LUN の I/O アライメントを特定しています 
  • Data ONTAP には、 LUN へのミスアライメントされた I/O を自動的に識別するヒューリスティック検出メカニズムがあります。
  • ヒューリスティックは、 I/O が開始される物理ブロック内の位置と I/O の長さを観察することによって作業をチェックします。
  • ヒューリスティックな出力は、次のいずれかです。
    • 不確定
    • アライメント
    • ミスアライメント
    • 部分的書き込み
不確定な状態です アライメントを決定するための十分な I/O を LUN が受信していない場合にのみ適用されます。
部分的書き込みの状態

4KB よりも小さい大半の I/O を受信する LUN を識別します。

  • 通常、この状態の環境 LUN はデータベーストランザクションまたは REDO ログで使用されます。
  • この状態は問題を示すものではなく、ミスアライメント状態とは別の状況に使用されます。
  • ワークロードが変化 lun stats –z した場合は、コマンドを実行してアライメントのヒューリスティックをリセットする必要があります。 
クリックすると、 I/O がミスアライメントとして示されている例が表示されます
  • 読み取り / 書き込みアライメントヒストグラムは、物理ブロック内の 8 つの位置のそれぞれで開始される I/O の割合を記録します。  
  • ここでは、読み取り I/O と書き込み I/O の 100% が 8 番目の位置から開始していることを示しています。これはヒストグラムバケットとも呼ばれます。

*> lun alignment show /vol/luns/my_lun
   Multiprotocol type: linux
   Alignment: misaligned
   Write alignment histogram percentage: 0, 0, 0, 0, 0, 0, 0, 100
   Read alignment histogram percentage: 0, 0, 0, 0, 0, 0, 0, 100
   Partial writes percentage: 0
   Partial reads percentage: 0 

►クリックすると、 LUN が正しく揃っていることを示す次の例が表示されます。
  • 読み取り / 書き込みアライメントヒストグラムは、 I/O の 100% が最初の位置から始まり、物理ブロック境界にアライメントされています。

*> lun alignment show /vol/luns/my_lun
     Multiprotocol type: windows
     Alignment: aligned
     Write alignment histogram percentage: 100, 0, 0, 0, 0, 0, 0, 0
     Read alignment histogram percentage: 100, 0, 0, 0, 0, 0, 0, 0
     Partial writes percentage: 0
     Partial reads percentage: 0

► LUNへの部分的な書き込み状態を示す最後の例を表示するには、ここをクリック します
  • ここでは、 Partial Writes フィールドと Partial Reads フィールドで、全体的な I/O に占める割合を確認できます。
  • 部分的な書き込みと読み取りの正確な量は、 I/O を実行するアプリケーションと、そのアプリケーションのワークロードの性質によって異なります。
  • パーセンテージは 100 までは加算されない場合があります。これは想定されており、ヒューリスティック計算を持つ問題を示しているわけではありません。 

*> lun alignment show /vol/luns/my_lun
     Multiprotocol type: linux
     Alignment: partial-writes
     Write alignment histogram percentage: 0, 0, 0, 0, 0, 0, 0, 0
     Read alignment histogram percentage: 1, 6, 1, 3, 0, 4, 6, 6
     Partial writes percentage: 0
     Partial reads percentage: 68

LUN の I/O アライメントの要因を考慮してください 
  • ホストオペレーティングシステムでの LUN の使用方法は、 OS タイプ、パーティション方式、ファイルシステム、およびアプリケーションによって大きく異なります。
  • 大半の要因としては、ホスト OS のパーティション方式が主な要因となり、ファイルシステムやアプリケーション / データベースの影響を受けることもあります。
  • 大まかな基準として、ホストオペレーティングシステムと OS タイプに最も近い Data ONTAP LUN の OS タイプを選択してください。

注:

  • Data ONTAPでは、適切にアライメントされたLUNにおけるI/Oのミスアライメントが報告されることがあります。
  • LUN が正しくプロビジョニングされていて、パーティションテーブルが適正であることに確信があれば、このようなミスアライメントの警告は無視してかまいません。

次に例を示します。

 

ブートLUN

  • これらはさまざまなログおよびその他の小さい書き込みのターゲットです。
  • 小さな書き込みは部分的な書き込みと同様に行われ、その結果、ミスアライメント I/O とみなされます。無視しても問題ありません。
  • ほとんどのブート LUN には、部分的な書き込みがいくつか設定されます。そのため、 LUN のジオメトリと LUN のタイプが正しくなくても、のミスアライメントが検出されることがあります。
  • LUN のジオメトリが正しいことがわかっている場合は、ミスアライメントを無視してください。

 

データベースログ LUN

  • Oracle ( REDO ログ)や Microsoft の SQL Server (トランザクションログ)など、データベースアプリケーションのログの場所として使用される LUN では、アライメントヒストグラムにアラインされていない書き込み I/O がランダムに分散されていることがあります。
  • これは、このタイプの I/O の正常な動作です
  • LUN が DB ログの場所として使用されていることがわかっていて、正しい LUN タイプとオフセットが使用されている場合は、それ以上の対処は不要であると判断できます。

の表に、追加のガイダンスを示します。

状況によっては、カスタムパーティションテーブルが必要になることがあります。

  • 一部の Data ONTAP LUN OS タイプでは、プレフィックスと呼ばれるオフセットを使用して、関連付けられたホストオペレーティングシステムで使用されるデフォルトのパーティションスキームをアライメントできます。
  • プレフィックス値が 0 より大きい LUN の場合、カスタムパーティションによってミスアライメントされた I/O が作成されることがあります 

LUNのostype

プレフィックス(バイト数)

プレフィックス(セクター数)

オペレーティング システム

windows

32,256

63

Windows 2000、Windows Server 2003(MBRフォーマット)

windows_gpt

17,408

34

Windows Server 2003(GPTフォーマット)

windows_2008

0

0

Windows Server 2008以降

hyper_v

0

0

Windows 2008 Hyper-V ABD 以降

linux

0

0

すべての Linux ディストリビューション *

xen

0

0

Citrix XenServer

vmware

0

0

VMware ESX*

solaris

1MB

2048

Solaris *

solaris_efi

17,408

34

Solaris *

hpux

0

0

HP-UX

aix

0

0

AIX

* は、その他の考慮事項が必要であることを示します。下記の追加情報を参照してください。

* ONTAP 9.8以降では、NVMeへの移行を容易にするために、すべてのLUNタイプでプレフィックスとサフィックスが0になります。  9.8より前に作成したLUNは引き続きサポートされますが、NVMeネームスペースには移行できません。 

追加情報

Linux に関するその他の考慮事項 
VMware ESX / ESXi に関するその他の考慮事項

一般 に、 VMware LUN に I/O がアライメントされないのは、ディスクのゲスト OS のパーティショニングによって VMDK のアライメントの問題が発生したためです。

Solaris に関するその他の考慮事項 
  • Solaris には、さまざまなファイルシステムやボリュームマネージャなど、 LUN のさまざまな使用方法が用意されています。
  • Solaris には特別なパーティション分割は必要ありませんが、 solaris LUN または solaris_efi LUN ostype を使用するタイミングを把握しておくことが重要です。
  • Solaris_EFI LUN ostype は、 UFS でフォーマットされる 990GB を超える LUN にのみ使用してください。solaris_efiLUN ostype は、 EFI ディスクラベル(セクター 34 )の後の最初のパーティションのデフォルトの開始位置をオフセットするために使用されます。
  • その他の構成では、 SVM 、 VxVM 、 ZFS 、および UFS が 990GB よりも小さいものなど、 Solaris LUN ostype を使用してください。
  • ZFS が使用sd.confssd.confされている Solaris バージョン 10u8 以降では、 Solaris の LUN ostype を使用し、物理ブロックサイズ :4096 をホストのファイルに追加する必要があります( Solaris x86 の場合)。
ファイルの I/O アライメント 
  • ファイルの I/O アライメントは、 LUN とまったく同じように機能します。
  • 一般に、ファイルの I/O のミスアライメントが発生するのは、仮想ディスクまたは NAS プロトコル経由でアクセスされるディスクイメージとして使用されるファイルです。
  • そのため、仮想ディスクのパーティションをファイルブロック境界に合わせて調整し、最適な I/O スループットを実現することが重要です。

 

Scan to view the article on your device