ハードドライブのハードウェアブロック読み取りサイズを確認するにはどうすればよいですか?


47

ddを使用して、ハードドライブからの大きなコピーに最適なサイズを見つけようとしています。私はそれを使用するのに最適なブロックサイズを把握しようとしていますが、それはそのドライブのハードウェアブロックサイズだと思います。



1
@Seperoが唯一の本当の答えを提供しました。
sjas

回答:


44

lsblkのコマンドは、このための素晴らしいです。

lsblk -o NAME,PHY-SeC

結果:

NAME   PHY-SEC 
sda        512 
├─sda1     512 
├─sda2     512 
└─sda5     512 

3
論理サイズと物理サイズを区別していますか?
CMCDragonkai 14

2
実際の物理サイズは提供しません。
sjas

7
PHY-SECは正しい物理サイズを示し、LOG-SECは論理サイズを示します。
soger

31

Linuxは、ファイルの物理セクターサイズを公開します/sys/block/sdX/queue/physical_block_size。ただし、最高のパフォーマンスを得るには、さまざまなサイズと手段で少しテストする必要があります。物理ブロックサイズを正確に使用すると最適な結果が得られるという明確な答え見つけることができませ でした(ただし、それは悪い選択ではないはずです)。


2
私はその場所でhw_sector_sizeのみを公開するDebian Lennyシステム(2.6.26カーネル)と、両方を提供する新しいUbuntu Karmicシステム(2.6.31カーネル)を持っています。そのため、これは使用中のカーネルに多少依存します。
いんちきキホーテ

実際の物理サイズは提供しません。
sjas

@sjas拡大してもらえますか?どうやってこれを知っていますか?
ハシム

1
@Hashim私はいくつかの古いハードディスクをテストしましたが、いくつかの場所には512bと4kのセクターサイズがありました。superuser.com/a/426015/145072は、実際に機能したソリューションです。それ以外hdparmはすべてあなたにうそをつくでしょう。
sjas

28
$ sudo hdparm -I /dev/sda | grep -i physical
Physical Sector size:                  4096 bytes

http://wayback.archive.org/web/20150921015457/https://nxadm.wordpress.com/2010/04/30/4096-physical-block-size-drives/


3
これが実際の物理的価値を提供する唯一のものであるため、これは受け入れられた答えでなければなりません。
sjas

4
hdparm -I /dev/sda | grep Sector簡単に比較できるように、物理サイズと論理サイズの両方を一度に表示するため、より優れています。
sjas

7

私のものは完全な答えになることを意図したものではありませんが、私もそれが役立つことを願っています。

http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.htmlからちょっとしたものがあります


3-適切なブロックサイズの決定

バックアップを迅速に行うには、バックアップするディスクデバイスの最適なブロックサイズを特定するのに役立ちます。/ dev / sdaをバックアップする場合、fdiskコマンドを使用して最適なブロックサイズを決定する方法は次のとおりです。

rescuecd#/> /sbin/fdisk -l /dev/sda | grep Units

Units = cylinders of 16065 * 512 = 8225280 bytes

fdiskの出力には「16065 * 512のシリンダー」と表示されていることに注意してください。これは、ディスク上のブロックごとに512バイトがあることを意味します。ブロックサイズを2から4の倍数だけ増やすことで、バックアップの速度を大幅に向上させることができます。この場合、最適なブロックサイズは1k(512 * 2)または2k(512 * 4)です。ところで、欲張りになって、5k(512 * 10)のブロックサイズを使用したり、過剰なものを使用しても役に立ちません。最終的に、システムはデバイス自体でボトルネックになり、バックアッププロセスから追加のパフォーマンスを引き出すことができなくなります。(強調を追加)


データセットが膨大でない限り、特定の構成に対する最適に近いブロックサイズと最適なブロックサイズのパフォーマンスの違いは無視できると思います。実際、FixUnixのユーザー(2007年以降)は、最適な時間は最適でない時間よりも5%だけ速いと主張しました。「クラスタ」サイズまたはファイルシステムのブロックサイズの倍数を使用することで、もう少し効率を絞ることができます。

もちろん、最適なブロックサイズのいずれかの側に移動しすぎると、問題が発生します。

一番下の行は、絶対的な最適なブロックサイズでパフォーマンスが約5%(つまり、1時間あたり3分)しか得られない可能性が高いため、時間と労力をかけて調査する価値があるかどうかを検討してください。極端な値から離れている限り、苦しむべきではありません。


1
使用するためのいくつかの理由echo "p" | /sbin/fdisk /dev/sda...の代わりに/sbin/fdisk -l /dev/sda...?2番目はよりクリーンになり、変更を試みません。
いんちきのキホーテ

Mark Kolich(リンク)に尋ねることをお勧めします。彼はバックアップを作成していたので、彼の記事の一部だけを引用しました。
マークC

1
@MarkCリンクされた記事はを使用し/sbin/fdisk -l /dev/sda | grep Unitsます。過去2年間で変更された可能性があります。いずれにせよ、私はあなたの答えを更新しました。
ボブ

2
IMOこれは、主に最後の太字の段落のため、最も有用な回答です。Linuxは、ディスクアクセスを最適化するために非常に懸命に動作します。そのため、ディスクに適切なioスケジューラとダーティバッファ設定を使用する限り、8192バイトのブロックサイズはどのような状況でも問題ありません。
soger

4

各ディスク転送は、プロセッサが処理する必要がある割り込みを生成します。典型的な50Mb / sディスクは、512bブロックサイズで毎秒100000個を生成する必要があります。通常のプロセッサは数万個を処理します。 64k ISA DMAサイズまでのシステム)がより実用的です...


明確にできますか?
sjas

1
@Sjas彼または彼女が言っていることは、明らかに、各セクターはプロセッサーが処理しなければならない関連する「割り込み」とともに別々に転送されるということです。ブロックサイズが大きいほど、同じ量のデータに対する割り込みが少なくなります(したがって、使用されるCPUサイクルも少なくなります)。
マークC

1

さらに、出力を見て、lshw他の結果を確認することができます(またhdparm、ディストリビューションで利用できるように思われないためです)。

sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.