チャンクサイズ
「チャンクサイズ」は、データの読み書きを行う単位のことです。アレイの種類によっては、この「チャックサイズ」単位でデータの読み書きを行います。
ストリップサイズやストライプサイズと表現されることもあります。
チャンクサイズでデータの分割を行うアレイの種類
チャンクサイズでデータの分割を行い、データの読み書きを行うアレイの種類は以下のとおりです。- RAID 0
- RAID 4
- RAID 5
- RAID 6
- RAID10
チャンクとチャンクデータ
チャンクサイズで区切られた各データは、「チャンクデータ」と表現します。広義に「チャンク」と表現されることもあります。
「チャンク」は、「チャンクサイズ」で区切られた入れ物や箱をイメージすると良いでしょう。
データの分割例
HDD3台で構成した「RAID 0」アレイがあるとします。チャンクサイズは512KiBとします。
このアレイに2MiBのファイルを保存する場合、4つのデータに分割されます。(2MiB / 512KiB)
この時、分割されたデータは、以下のようにHDDに保存されます。
分割された1つ目のデータは、1番目のHDDに保存されます。
分割された2つ目のデータは、2番目のHDDに保存されます。
分割された3つ目のデータは、3番目のHDDに保存されます。
分割された4つ目のデータは、1番目のHDDに保存されます。
チャンクサイズが与える影響
チャンクサイズは、データの読み書きのパフォーマンスに影響を与えます。論理ボリュームの使い方やハードウェア環境に依存するため、環境により最適なチャンクサイズは異なります。
最適なチャンクサイズを導き出すには、実際にアレイを作成しベンチマークを作成する必要があります。
一般的に、サイズの大きなファイルの読み書きに対しては、大きめのチャンクサイズを指定したほうがパフォーマンスが出やすくなります。
一方、サイズの小さなファイルの読み書きに対しては、小さめのチャンクサイズを指定したほうがパフォーマンスが出やすくなります。
チャンクサイズの指定について
「mdadm」ではアレイ作成時にチャンクサイズを指定することができます。チャンクサイズのデフォルト値
チャンクサイズの指定を省略した場合は、512KiBが指定されます。指定できるチャンクサイズ(RAID 0)
「RAID 0」でチャンクサイズを指定する場合、チャンクサイズは「4KiB」の倍数である必要があります。指定できるチャンクサイズ(RAID 4/5/6/10)
「RAID 4/5/6/10」でチャンクサイズを指定する場合、チャンクサイズは「4KiB」の倍数かつ、「2の累乗」である必要があります。推奨及び基準となるチャンクサイズ
環境により最適なチャンクサイズは異なるため、一概に「このサイズが最適である」と言い切ることはできません。しかしそれでは最適なチャンクサイズを調べる際、どのチャンクサイズから調べれば効率が良いのか分かりません。
またその調査も時間がかかるため、突き詰めて最適化するつもりがないのであれば、何かしら推奨される値が欲しいところです。
「MDドライバー」では、以下のチャンクサイズを推奨しています。
最適なチャンクサイズを調べる際、以下の値を基準に調査すると良いでしょう。
突き詰めて最適化するつもりがないのであれば、以下の値をチャンクサイズに指定すると良いでしょう。
RAID 0/10
「RAID 0/10」アレイを作成するなら、チャンクサイズは32KiBを基準にすると良いでしょう。パフォーマンスのチェックを行うなら、この基準値からチャンクサイズを増加させてパフォーマンスのチェックを行うと良いでしょう。
RAID 4/5/6
「RAID 4/5/6」アレイを作成するなら、チャンクサイズは128KiBを基準にすると良いでしょう。パフォーマンスのチェックを行うなら、この基準値からチャンクサイズを増加させてパフォーマンスのチェックを行うと良いでしょう。