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

アライメントされていない I/O とは

Views:
45
Visibility:
Public
Votes:
0
Category:
data-ontap-8
Specialty:
core
Last Updated:

すべてのとおり  

に適用されます

  • clustered Data ONTAP 8
  • SAN
  • FlexPod
  • Data ONTAP 7 以前

回答

I/O アライメントについて説明するには、まず、ホストオペレーティングシステムが LUN をストレージデバイスとして使用する方法を説明する必要がありますか。LUN とハードディスクは、ブロックとしてストレージを提供します。ブロックは、バイト単位で表されるストレージのアドレス指定可能な単位です。ハードディスクによってアドバタイズされる従来のブロックサイズは 512 バイトです。Advanced Format ドライブや NetApp LUN などの新しいハードディスクでは、互換性を維持するために、 512 バイトの小さいブロックをホストにアドバタイズしながら、データの格納に大きなブロックサイズが使用されます。アドバタイズされたブロックは論理ブロックと呼ばれ、基盤となるストレージブロックは物理ブロックと呼ばれます。NetApp LUN は、 4 KB の物理ブロックにデータを格納し、物理ブロックあたり 512 バイトの論理ブロックを 8 つ生成します。

logical_blocks _1.png

ホスト OS は、任意の論理ブロックで読み取りまたは書き込み( 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 の長さを監視して、作業をチェックします。Heuristic の出力は、不確定、整列、ミスアライメント、部分書き込みのいずれかになります。不確定状態は、アライメントを決定するための十分な I/O を LUN が受信していない場合にのみ適用されます。継続的に使用されている LUN の場合、この状態は短時間存続し、ヒューリスティックによって他のいずれかの状態が識別されます。部分書き込み状態は、 4 KB 未満の I/O の大部分を受信する LUN を示します。通常、この状態はデータベーストランザクションログまたは REDO ログで使用される LUN に適用されます。この状態は問題を示すものではありません。この状態は、ミスアライメント状態から分離するために使用されます。ワークロードが変更lun stats –z されると、コマンドを実行してアライメントヒューリスティックをリセットする必要が生じる場合があります。 

次の例は、ヒューリスティックによって I/O がミスアライメントであると識別された LUN を示しています。読み取りと書き込みのアライメントヒストグラムは、物理ブロック内の 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 

次の例は、ヒューリスティックによって I/O がアライメントされていると識別された 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 の部分的な書き込み状態を示しています。ここでは、 [ 部分書き込み ] フィールドと [ 部分読み取り ] フィールドに、合計 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 

7-Mode ノードの場合:

lun show -v all

/vol/Luns/Luns 2.0t (2198989880250) (r/w, online, mapped)
Comment: "Z: drive"
Serial#: xxxxxxxxxxxx
Share: none
Space Reservation: enabled
Multiprotocol Type: windows_2008
Maps: xxxxx=0
Occupied Size: 1.8t (2000000000000)
Creation Time: Tue Oct 14 00:00:00 EST 2014
Alignment: misaligned
Cluster Shared Volume Information: 0x0
Space_alloc: disabled
report-physical-size: enabled

LUN の I/O アライメントに関連する要因 

ホスト OS が LUN を使用する方法は、 OS のタイプ、パーティション方式、ファイルシステム、アプリケーションによって大きく異なります。I/O のミスアライメントが発生しているほとんどの状況では、主要な原因はホスト OS で採用されているパーティション方式であり、ファイルシステムやデータベースなどのアプリケーションにも影響されます。経験則として、ホストのオペレーティングシステムと OS のタイプに最も近い Data ONTAP LUN OS タイプを選択する必要があります。次の表に、追加のガイダンスを示します。状況によっては、カスタムパーティションテーブルが必要になることがあります。一部の Data ONTAP LUN OS タイプでは、プレフィックスと呼ばれるオフセットを使用して、関連付けられたホストオペレーティングシステムで使用されるデフォルトのパーティションスキームをアライメントできます。プレフィックス値が 0 より大きい LUN の場合、カスタムパーティションによってミスアライメントされた I/O が作成されることがあります 

: 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 の種類とオフセットが使用されていることが確認されている場合は、それ以上の修正措置は必要ありません。

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

* 追加の検討が必要な場合があることを示します。以下の情報を参照してください。 

Linux に関するその他の考慮事項 

Linux ディストリビューションでは、データベース、ボリュームマネージャ、ファイルシステムの raw デバイスとして LUN を使用するなど、さまざまな方法が用意されています。raw デバイスとして使用する場合や、ボリュームマネージャで物理ボリュームとして使用する場合は、 LUN 上にパーティションを作成する必要はありません。LUN をボリュームマネージャなしで使用する場合は、アライメントされたオフセットで始まる 1 つのパーティション( 8 つの論理ブロックの偶数の倍数)を持つように LUN をパーティション分割することをお勧めします。Linux のアライメントされたパーティションの作成の詳細については、『 How to Create Aligned Partitions in Linux for Use with NetApp LUN, VMDK , VHD and Other Virtual Disk Containers 』を参照してください。  

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

通常、 VMware LUN タイプでは、ディスクのゲスト OS のパーティショニングによって生じる VMDK アライメントの問題が原因で、アライメントされていない I/O が発生します。

Solaris に関するその他の考慮事項 

Solaris では、さまざまなファイルシステムやボリュームマネージャなど、 LUN をさまざまな方法で使用できます。Solaris では特別なパーティショニングは必要ありませんが、 Solaris または Solaris_EFI LUN ostype を使用するタイミングを把握することが重要です。Solaris_EFI LUN ostype は、 UFS でフォーマットされる 990GB を超える LUN にのみ使用してください。solaris_efiLUN ostype は、 EFI ディスクラベル(セクター 34 )の後の最初のパーティションのデフォルトの開始位置をオフセットするために使用されます。Solaris LUN ostype は、他のすべての構成で使用する必要があります。これには、 990GB 未満の SVM 、 VxVM 、 ZFS 、および UFS が含まれます。ZFS が使用sd.confssd.confされている Solaris バージョン 10u8 以降では、 Solaris の LUN ostype を使用し、物理ブロックサイズ :4096 をホストのファイルに追加する必要があります( Solaris x86 の場合)。

ファイルの I/O アライメント 

ファイルの I/O アライメントは、 LUN とまったく同じように機能します。通常、ファイルの I/O がミスアライメントされるのは、 NAS プロトコルを介してアクセスされる仮想ディスクまたはディスクイメージとして使用されるファイルです。そのため、仮想ディスクのパーティションをファイルブロック境界に合わせて調整し、最適な I/O スループットを実現することが重要です。

追加情報

N/A

 

 

 

  • この記事は役に立ちましたか?