日記/2010-07-30/BigSector ドライブを試す
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
] [
リンク元
]
開始行:
* BigSector ドライブを試す [#n2455dcc]
遅ればせながら,Western Digital の BigSector ドライブを試...
型番は WD20EARS,2TB のドライブである.
** BigSector とは [#i4983559]
従来の HDD は読み書きの最小単位(セクタ)が 512 バイトで...
が,BigSector ドライブではこの最小単位が 4KB ( = 4096 バ...
** 参考資料 [#raa3655d]
#af_amazon(4789833216,right)
BigSector についてもっと詳しく知りたい方は [http://www.bi...
PC/AT のパーティションテーブル(いわゆる MBR)については→...
#clear
** 互換性 [#z63079e0]
現状では,BigSector ドライブは,電源投入後は「エミュレー...
つまり,HDD 内部の回路やファームウェアで,外見上は 512 バ...
つまり,PC 側から 512 バイト/セクタのつもりで発行された...
あくまでもエミュレーションなので,HDD 上の物理的なセクタ...
というわけで,レガシーなシステムで使用しても直ちに「動作...
が,後に述べる理由により,パフォーマンスが低下する.
** セクタ番号の対応 [#u6ceca05]
おそらくは下表のような対応になっているものと思われる.
|512バイト/セクタ|4KB/セクタ|h
|0|0|
|1|~|
|2|~|
|3|~|
|4|~|
|5|~|
|6|~|
|7|~|
|8|1|
|9|~|
|10|~|
|…|~|
** 512バイト/セクタエミュレーションでのアクセス [#t79d0e...
512 バイト/セクタのエミュレーション時に例えば
> セクタ番号 0 から 8 セクタの読み込み
をする場合,HDD 内部では
+ 物理番号 0 のセクタを読み込み
+ これを 8 セクタ分の応答として返す
という動作をすればいい.
ところが
> セクタ番号 1 から 8 セクタの読み込み
となると
+ 物理番号 0 と 1 のセクタを読み込み
+ 対応する 8 セクタ分の応答を返す
という動作になる.
同じセクタ数の読み出しなのに,後者では2物理セクタの読み...
これは
> 8 で割り切れないセクタ番号で始まるアクセス
なのが原因なのは明らかだろう.
書き込みの場合は,もっと深刻である.
> セクタ番号 1 から 8 セクタの書き込み
の場合は
+ 物理セクタ 0, 1 を読み出し
+ 物理セクタ 0 の後ろ 7 論理セクタ分と物理セクタ 1 の最初...
+ 物理セクタ 0, 1 を書き戻す
となる.
いわゆる read-modify-write と呼ばれる動作になり,パフォー...
** CHS パラメータの呪い [#na963a05]
HDD には「シリンダ数」「ヘッド数」「セクタ数」というパラ...
HDD 上にはこのパラメータに沿ってセクタが配置されている,...
現代の HDD の CHS パラメータは
:シリンダ|たくさん
:ヘッド|255
:セクタ|63
というパラメータとなっている.
ヘッドが 255 もあれば,ディスク(プラッタ)は 128 枚も入...
つまり,
> HDD のコントローラとファームウェアがホラを吹いている
のである.
ところで,パーティションを切る場合,Windows XP 以前だとデ...
が,上記の CHS パラメータではセクタ/トラックは 63 となっ...
第一パーティションは 64 セクタ目,セクタ番号 63 から切ら...
パーティション先頭が 8 で割り切れないセクタ番号なので,パ...
困ったもんだ.
** 実験 [#jed6559e]
*** Windows XP でパーティションを切り,フォーマット [#r96...
Windows で HDD をフォーマットし,パーティションテーブルを...
第1パーテション部分は以下のようになっている.
000001b0 00 ...
000001c0 01 00 07 fe ff ff 3f 00 00 00 82 74 e0 e8 ...
パーティション開始のセクタ番号は 0x0000003f = 63 となって...
この状態でベンチマークを取ってみる.
#ref(bigsector_normal.PNG,center,50%)
*** Linux 上で強制的にセクタを整列 [#qe3efe01]
parted コマンドでパーティションを切り直す.
# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of com...
(parted) unit s ///// 表示をセクタ数単位で ...
(parted) print ...
Model: WDC WD20 WD-WMAZA0000674 (scsi)
Disk /dev/sdb: 3907029168s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File s...
1 63s 3907024064s 3907024002s primary ntfs /...
(parted) rm 1 ///// パーティションを削除
(parted) mkpart //// パーティションを切る
Partition type? primary/extended? primary ///// 基本パ...
File system type? [ext2]? ntfs ///// パーティションID...
Start? 64 ///// 開始セクタ番号
End? 3907029167 ///// 終了セクタ番号 = しっぽまで
Warning: The resulting partition is not properly aligned...
Ignore/Cancel? ignore ///// 警告は無視
(parted) print
Model: WDC WD20 WD-WMAZA0000674 (scsi)
Disk /dev/sdb: 3907029168s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File s...
1 64s 3907029167s 3907029104s primary ///// ...
(parted) q ...
Information: You may need to update /etc/fstab.
#
これで8の倍数に揃ったパーティションが作成されたことにな...
ベンチマーク結果はこんな感じ.
多少はパフォーマンスが上がっているように見える.
けど,この程度なら「そのまま使ってもいいや」という気もし...
#ref(bigsector_aligned.PNG,center,50%)
終了行:
* BigSector ドライブを試す [#n2455dcc]
遅ればせながら,Western Digital の BigSector ドライブを試...
型番は WD20EARS,2TB のドライブである.
** BigSector とは [#i4983559]
従来の HDD は読み書きの最小単位(セクタ)が 512 バイトで...
が,BigSector ドライブではこの最小単位が 4KB ( = 4096 バ...
** 参考資料 [#raa3655d]
#af_amazon(4789833216,right)
BigSector についてもっと詳しく知りたい方は [http://www.bi...
PC/AT のパーティションテーブル(いわゆる MBR)については→...
#clear
** 互換性 [#z63079e0]
現状では,BigSector ドライブは,電源投入後は「エミュレー...
つまり,HDD 内部の回路やファームウェアで,外見上は 512 バ...
つまり,PC 側から 512 バイト/セクタのつもりで発行された...
あくまでもエミュレーションなので,HDD 上の物理的なセクタ...
というわけで,レガシーなシステムで使用しても直ちに「動作...
が,後に述べる理由により,パフォーマンスが低下する.
** セクタ番号の対応 [#u6ceca05]
おそらくは下表のような対応になっているものと思われる.
|512バイト/セクタ|4KB/セクタ|h
|0|0|
|1|~|
|2|~|
|3|~|
|4|~|
|5|~|
|6|~|
|7|~|
|8|1|
|9|~|
|10|~|
|…|~|
** 512バイト/セクタエミュレーションでのアクセス [#t79d0e...
512 バイト/セクタのエミュレーション時に例えば
> セクタ番号 0 から 8 セクタの読み込み
をする場合,HDD 内部では
+ 物理番号 0 のセクタを読み込み
+ これを 8 セクタ分の応答として返す
という動作をすればいい.
ところが
> セクタ番号 1 から 8 セクタの読み込み
となると
+ 物理番号 0 と 1 のセクタを読み込み
+ 対応する 8 セクタ分の応答を返す
という動作になる.
同じセクタ数の読み出しなのに,後者では2物理セクタの読み...
これは
> 8 で割り切れないセクタ番号で始まるアクセス
なのが原因なのは明らかだろう.
書き込みの場合は,もっと深刻である.
> セクタ番号 1 から 8 セクタの書き込み
の場合は
+ 物理セクタ 0, 1 を読み出し
+ 物理セクタ 0 の後ろ 7 論理セクタ分と物理セクタ 1 の最初...
+ 物理セクタ 0, 1 を書き戻す
となる.
いわゆる read-modify-write と呼ばれる動作になり,パフォー...
** CHS パラメータの呪い [#na963a05]
HDD には「シリンダ数」「ヘッド数」「セクタ数」というパラ...
HDD 上にはこのパラメータに沿ってセクタが配置されている,...
現代の HDD の CHS パラメータは
:シリンダ|たくさん
:ヘッド|255
:セクタ|63
というパラメータとなっている.
ヘッドが 255 もあれば,ディスク(プラッタ)は 128 枚も入...
つまり,
> HDD のコントローラとファームウェアがホラを吹いている
のである.
ところで,パーティションを切る場合,Windows XP 以前だとデ...
が,上記の CHS パラメータではセクタ/トラックは 63 となっ...
第一パーティションは 64 セクタ目,セクタ番号 63 から切ら...
パーティション先頭が 8 で割り切れないセクタ番号なので,パ...
困ったもんだ.
** 実験 [#jed6559e]
*** Windows XP でパーティションを切り,フォーマット [#r96...
Windows で HDD をフォーマットし,パーティションテーブルを...
第1パーテション部分は以下のようになっている.
000001b0 00 ...
000001c0 01 00 07 fe ff ff 3f 00 00 00 82 74 e0 e8 ...
パーティション開始のセクタ番号は 0x0000003f = 63 となって...
この状態でベンチマークを取ってみる.
#ref(bigsector_normal.PNG,center,50%)
*** Linux 上で強制的にセクタを整列 [#qe3efe01]
parted コマンドでパーティションを切り直す.
# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of com...
(parted) unit s ///// 表示をセクタ数単位で ...
(parted) print ...
Model: WDC WD20 WD-WMAZA0000674 (scsi)
Disk /dev/sdb: 3907029168s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File s...
1 63s 3907024064s 3907024002s primary ntfs /...
(parted) rm 1 ///// パーティションを削除
(parted) mkpart //// パーティションを切る
Partition type? primary/extended? primary ///// 基本パ...
File system type? [ext2]? ntfs ///// パーティションID...
Start? 64 ///// 開始セクタ番号
End? 3907029167 ///// 終了セクタ番号 = しっぽまで
Warning: The resulting partition is not properly aligned...
Ignore/Cancel? ignore ///// 警告は無視
(parted) print
Model: WDC WD20 WD-WMAZA0000674 (scsi)
Disk /dev/sdb: 3907029168s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File s...
1 64s 3907029167s 3907029104s primary ///// ...
(parted) q ...
Information: You may need to update /etc/fstab.
#
これで8の倍数に揃ったパーティションが作成されたことにな...
ベンチマーク結果はこんな感じ.
多少はパフォーマンスが上がっているように見える.
けど,この程度なら「そのまま使ってもいいや」という気もし...
#ref(bigsector_aligned.PNG,center,50%)
ページ名:
-->