LUN のミスアライメントされた IO を特定する方法
環境
- ONTAP 9.x
- SAN
- FlexPod
手順
LUN を、ホストオペレーティングシステム別のストレージデバイスとして使用します
I/O アライメントを理解するには、ホストオペレーティングシステムで LUN がストレージデバイスとしてどのように使用されるかを理解することが重要です。
- ハードディスクでアドバタイズされる従来のブロックサイズは 512 バイトです。
- ネットアップ LUN は、互換性を確保するために、より小さい 512 バイトブロックを引き続きホストにアドバタイズしながら、データの格納に大きなブロックサイズを使用します。
- アドバタイズされたブロックは論理ブロックと呼ばれ、基盤となるストレージブロックは物理ブロックと呼ばれます。
- NetApp LUN は 4KB の物理ブロック単位でデータを格納し、これにより物理ブロックあたり 8 個の 512 バイトの論理ブロックが生成されます。
- ホストオペレーティングシステムは、任意の論理ブロックで読み取り( I/O )処理または書き込み( I/O )処理を開始できます。
- ただし、物理ブロックの先頭にない論理ブロックで I/O が開始されると、 I/O はミスアライメントされているとみなされます。
- I/O は、論理ブロックで始まる場合にのみアライメントされます。つまり、物理ブロックの最初の論理ブロックです。I/O は物理ブロックの境界にアライメントされます。
LUN の I/O アライメントを特定しています
- Data ONTAP には、 LUN へのミスアライメントされた I/O を自動的に識別するヒューリスティック検出メカニズムがあります。
- ヒューリスティックは、 I/O が開始される物理ブロック内の位置と I/O の長さを観察することによって作業をチェックします。
- ヒューリスティックな出力は、次のいずれかです。
- 不確定
- アライメント
- ミスアライメント
- 部分的書き込み
不確定な状態です | アライメントを決定するための十分な I/O を LUN が受信していない場合にのみ適用されます。 |
部分的書き込みの状態 |
4KB よりも小さい大半の I/O を受信する LUN を識別します。
|
- ► クリックすると、 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 タイプを選択してください。
注:
次に例を示します。 |
ブートLUN |
|
---|---|
データベースログ 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 に関するその他の考慮事項
- Linux ディストリビューションでは、データベース、ボリュームマネージャ、ファイルシステム用の raw デバイスなど、さまざまな方法で LUN を使用できます。
- raw デバイスまたはボリュームマネージャ内の物理ボリュームとして使用する場合、 LUN にパーティションを作成する必要はありません。
- ボリュームマネージャを使用せずに LUN を使用する場合は、 LUN をパーティショニングすることを推奨します。 1 つのパーティションにはアライメントされたオフセットで開始され、さらに 8 つの論理ブロックの倍数のセクターが含まれます。
- Linux のアライメントさ れたパーティションの作成の詳細については、ネットアップの LUN 、 VMDK 、 VHD 、およびその他の仮想ディスクコンテナで使用するために、アライメントされたパーティションを 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_efi
LUN ostype は、 EFI ディスクラベル(セクター 34 )の後の最初のパーティションのデフォルトの開始位置をオフセットするために使用されます。 - その他の構成では、 SVM 、 VxVM 、 ZFS 、および UFS が 990GB よりも小さいものなど、 Solaris LUN ostype を使用してください。
- ZFS が使用
sd.conf
ssd.conf
されている Solaris バージョン 10u8 以降では、 Solaris の LUN ostype を使用し、物理ブロックサイズ :4096 をホストのファイルに追加する必要があります( Solaris x86 の場合)。
ファイルの I/O アライメント
- ファイルの I/O アライメントは、 LUN とまったく同じように機能します。
- 一般に、ファイルの I/O のミスアライメントが発生するのは、仮想ディスクまたは NAS プロトコル経由でアクセスされるディスクイメージとして使用されるファイルです。
- そのため、仮想ディスクのパーティションをファイルブロック境界に合わせて調整し、最適な I/O スループットを実現することが重要です。