ログイン
ユーザー名:

パスワード:


パスワード紛失

新規登録
メインメニュー
My Twitter
  • takahashiさんのエントリ配信
  • RSS
  • RDF
  • ATOM

ブログ - 2TB HDDのアライメントについて… 本当に速くなるの?

ヘッダーナビゲーション

2TB HDDのアライメントについて… 本当に速くなるの?2014/11/08 8:11 pm

2TBを超える容量のHDDについて、最近はAFT(Advanced Format Technology)という物理セクターが4Kbyteでフォーマットされている製品が多いです。
※まれに2TBのHDDで、従来の512byeでフォーマットされている製品もあります。

AFT仕様のHDDはパーティションを作成するときにアライメントに気をつけないとデータの読み書きが遅くなると言われていますが、どの程度違いがあるのか調べてみました。

【結論】
アライメントを合わせないと、やはり遅くなります。物理的なパフォーマンスはさほど変化しませんが、論理フォーマット後にファイルの作成・読み・削除といったメタデータに対するアクセスに関しては結構速度差が出ました。
              ------Sequential Create------ --------Random Create--------
              -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
 Alignment OK   187ms     164ms     886ms     275ms    6466ms    9149ms
 Alignment NG   484ms     183ms    1142ms     707ms    8316ms   15032ms
                x2.6      x1.1      x1.3      x2.6     x1.3      x1.6
上記データは、bonnie++をsleep 120を挟み連続で5回測定し、最大・最小値を外し残りの3データを平均したものです。特にアクセス速度に影響のあるLatency(=遅れ)に注目しました。
※数値が小さいほどアクセスが速いという事になります。

Linuxで2TB超のHDDを使うときにはアライメントは気をつけた方が良いです。
※設定方法は後述…
※特にmdadmを使ったソフトウェアRAIDでは、同時に複数のHDDにアクセスするので、アライメントが合っていないと激遅になります。

HDD上に作成されるテストデータはメモリー搭載量の2倍(メモリーキャッシュ効果を減らす為)で、今回のテストでは16GBとなっています。
※これはbonnie++のデフォルト仕様。
※使ったコマンドは…
bonnie++ -d /mnt/hoge -n 256:1024:1024:16 -u root
→ /mnt/hogeは、調べたいHDDがmountされているディレクトリーを指定して下さい。
Create files in sequential order : 規則性のあるファイル名順でファイル作成
Stat files in sequential order   : 規則性のあるファイル名順でファイル情報の取得
Delete files in sequential order : 規則性のあるファイル名順でファイル削除
Create files in random order     : ランダムなファイル名順でファイル作成
Stat files in random order       : ランダムなファイル名順でファイル情報の取得
Delete files in random order     : ランダムなファイル名順でファイル削除


■ここからは備忘録

2TB超のHDDのパーティション作成する場合、Linuxの場合はpartedを使います。

まずはmklabelでgptを指定します。
※従来のfdiskで作成したHDDは、ここがmsdosになっています。もし間違ってgptでフォーマットしたHDDは、msdosに書き換えるとfdiskで扱えるようになりますが、この場合既に書き込まれている情報は全て消えてしまうので注意して下さい。

次にmkpartでパーティションを作成します。

パーテション作成で重要なポイントは最初のパーティションのスタート位置です。
このスタート位置の指定には0%と指定します。単に0(ゼロ)と指定するとアライメントがずれます。エンド位置は%単位か、MB単位もしくはGB単位で指定します。
※HDD全体を単一パーティションに設定する場合には、スタートを0%、エンドは100%にすると良いです。

パーティションを作成したら、align-checkで必ずアライメントが正しいかどうか確認して下さい。
(parted) align-check
alignment type(min/opt)  [optimal]/minimal?
Partition number? 1
1 aligned
と表示されればOKです。

■パーティションの設定例

【例1】
(parted) print
Model: ATA ST2000DM001-1CH1 (scsi)
Disk /dev/sdc: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  20.0GB  20.0GB  ext4

(parted) align-check
alignment type(min/opt)  [optimal]/minimal?
Partition number? 1
1 aligned
これはアライメントがOKの例です。スタートが1049kBになっている所と、Sector size (logical/physical): 512B/4096Bに注目して下さい。

【例2】
(parted) print
Model: ATA MARSHAL MAL32000 (scsi)
Disk /dev/sdd: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  20.0GB  20.0GB  ext4

(parted) align-check
alignment type(min/opt)  [optimal]/minimal?
Partition number? 1
1 not aligned
このHDDも容量は2TBです。また、アライメントチェックはNGと表示されています。しかし、Sector size (logical/physical): 512B/512B、つまりlogical=physicalという事から、このHDDはAFT(Advanced Format Technology)を使っていないことが解ります。この場合、アライメントの不整合は発生しません。

■ご参考までに…
アライメントに関しては、ちょっと古いですがLinuxのkernelウォッチャーで有名な小崎さんが書いた記事が詳しいです。
ATAディスクの4Kセクタ問題とは?
http://www.atmarkit.co.jp/flinux/rensai/watch2010/watch03a.html

-- ◇ --

このエントリーの情報

トラックバックping送信用URLを取得する

このエントリーの記録

投稿された内容の著作権はコメントの投稿者に帰属します。

Calendar
ブログ カレンダー
« « 2016 7月 » »
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6
TS3
TS3 Minolin server TeamSpeak Viewer