web-dev-qa-db-ja.com

なぜハードドライブは宣伝されているほど大きくないのですか?

私が購入したすべてのハードドライブから、それらは宣伝されているサイズほど大きくはないようです。 320GBから290GB、500GBから450GBなど。これには技術的な理由がありますか?

18
Sam152

技術的な理由は、ハードドライブの製造元がメートル単位で容量を販売しているためです。したがって、メートル法ではGB = 1,000,000,000バイトです。ただし、コンピューターはドライブサイズを2の累乗で測定します。つまり、1GiB = 1,024MiB、1MiB = 1,024KiBなどです。これは、1GiB = 1,073,741,824バイト、73,741,824の差を意味します。

したがって、1GB(例として)ドライブをインストールすると、OSには0.93GiBしか表示されません。これが、不一致の原因です。

(略語GiBをこれまでに見たことがない場合は、1000ではなく1024の累乗を表すために採用された新しい表記法です。ただし、ほとんどのオペレーティングシステムはGiB GBとして、この問題をさらに混乱させます)

29
Kyle Cronin

もともとこれはこれに対する答えでした 質問(マージ) 約4GBのペンドライブ。

人間のシステムは10の累乗に基づいており、バイナリは2の累乗に基づいています」というステートメントから始めましょう。
それが続くことはあなたの質問への最初の答えを与えることができます。

メートル法プレフィックスは10の累乗、1000または10 ^ 3はk、10 ^ 6は[〜#〜] m [〜#〜]、10 ^ 9[〜#〜] g [〜 #〜].。
binaryプレフィックスは2の累乗です(2 ^ 10 = 1024は1000からそれほど遠くありませんが、異なります、2.4%)。

4000000000/1024/1024/1024  Your 4GB are 4 000 000 000 Bytes
3.72529029846191406250     That becames around 3.73 GiB 

ベンダーと法律:ベンダーは、法律で強制されていない場合、市場の規則に従って行動します。 4は3.78より売れ行きが良い。同じ理由で、インターネットプロバイダーはしばしばbpsについて話し、Bpsを理解させます。第8因子があります:バイト([〜#〜] b [〜#〜])は8ビット(b)。

問題は、法律は存在するが、すべての国で同じというわけではないということです。

国際システム、または[〜#〜] si [〜#〜] は、商業と科学のために世界で最も広く使用されています(1960年に発行され、現在、採用している米国、ビルマとリベリアのみが部分的に出ています)。
測定単位だけでなく、 プレフィックス も確立します。

コンピュータの世界では自然なので、2の累乗の基数を使用します(人間の世界のように10ではありません) )1998年に バイナリプレフィックス のシステムが導入されました。ここで直接 テーブル 。今日、私たちは次のような状況にあります

the International Electrotechnical Commission (IEC) and several other standards
(NIST...) and trade organizations approved standards and recommendations 
for a new set of binary prefixes that refer unambiguously to powers of 1024

あなたが読むとき1GB そのはず 1 000 000 Bytes
代わりに1GiB そのはず 1 073 741 824 Bytes

なぜまだであり、ではないのですか?それは、品目が生産された国の立法者と品目が輸入された国の立法者がどのように国際委員会の指令を採用し、法律で変換するかに依存するためです。

だからあなたの目をよく開いておいてください。

(いくつかの国では、粘着ラベルに法律の義務を果たすための情報を書くことが規定されているためです。通常、それはあなたが本当に保持する必要があるよく開いて目を読んで読んでください)


その他の参考資料

9
Hastur

ドライブの製造元が500GBの容量のドライブを作成すると、その容量は500,000,000,000バイトになり、そのように宣伝することになります。バイナリデバイスであるコンピュータは、プレフィックスのセットが異なる2の累乗を好むため、ストレージスペースの測定に使用されます。

1キビバイト= 2 ^ 10、1メビバイト= 2 ^ 20、1ギビバイト= 2 ^ 30など。

たとえば、このマシンに300 GBのドライブが接続されていて、Windowsは容量として次のように表示します。

Capacity:          300,082,855,936     279 GB

300,082,855,936/2 ^ 30 = 〜279。実際に表示されているのは、gigaではなく、gibiバイト単位のドライブのサイズです。 -)バイト。だから、それは読むべきです:

Capacity:          300,082,855,936     279 Gi

これはWindowsの欠陥であると言う人もいるかもしれませんが、ストレージ容量のプレフィックスの意味について明確な基準がないようです。 このウィキペディアの記事 の「消費者の混乱」に関するセクションを含む、より多くの良い情報。

7
raven

説明については この記事 を参照してください。

基本的に、「ギガバイト」には2つの定義があります。 1つの定義は、1GB = 1024です。3 バイト。これは、コンピューターが報告する定義です(技術的な理由から)。

(SI単位からの)他の定義は、1GB = 1000です。3 バイト。これは他のすべてのメートル単位と同じです(1ギガメートル= 10003 メートル)。

ギガバイトのメートル法の定義は、コンピューターがギガバイトと見なすものよりも小さいため、ハードドライブの製造元は、ボックスに大きな容量を印刷できるため、メートル法の定義を使用します。

ファイルシステム自体によっても少量のスペースが使用されますが、不足している容量のほとんどはギガバイトの定義によるものです。

4

実際の大きさを確認したい場合は、使用しているセクターサイズとセクターの総数を確認してください。次に、これら2つの数値を乗算して、合計サイズをバイト単位で取得します。これが本当のサイズです!どのオペレーティングシステムでも!ディスク容量とも呼ばれます。

T = b x S

Where T is the total disk size in bytes,
b is the sector size in bytes,
and S is the total number of sectors.

セクター数

多くの場合、デバイス自体のラベルに印刷されているセクターの数がわかります。そうでない場合は、モデルのデータシートを参照してください。これは、モデルに関するあらゆる種類の技術的な詳細を指定するドキュメントです。インターネットに接続された世界では、これは製造元のWebサイトで、Webページのある種の表にあるか、調査および参照用にダウンロードできるファイル(通常はPDF)として見つかります。昔(ウェブが登場する前)は、ハードディスクドライブを購入したときに印刷されたコピーを受け取っていた可能性があります。

セクターサイズ

セクターには、物理​​セクターと論理セクターの2種類があります。最も一般的には、物理​​セクターサイズは標準ディスクで512バイトです。セクターサイズは、最新のハードディスクドライブのラベルには記載されていません。これがなぜであるかを理解するには、論理セクターと物理セクターの違いを理解する必要があります。これについて簡単に説明します。

LBAディスク

最新のハードディスクドライブは論理セクターを使用しています。これはLBA(Logical Block Addressing)と呼ばれます。実際、ラベルでセクターの総数を検索すると、LBAと呼ばれるセクターの数が表示されるため、LBA: 123456789のように表示されます。これは、セクターの総数です。これらはディスク上の論理セクターであり、LBAアドレス指定方式を使用して書き込みおよび読み取りが行われます。この方法により、オペレーティングシステムは、物理セクターサイズよりも大きいアロケーションユニットでファイルシステムフォーマット(NTFS、FAT32など)を使用できます。

wdmaxtor

アロケーションユニット

アロケーションユニットは、概念的にはセクターサイズに似ていますが、サイズを変更できるという点である程度の柔軟性があります。 、物理セクターのサイズを変更せずに。あなたが購入してインストールし、そしてあなたの人生で複数のハードディスクドライブをフォーマットしたなら、あなたは間違いなくこの用語に出くわしました。今日のNTFSフォーマットのハードディスクドライブの最も一般的なアロケーションユニットサイズは、4K、8K、および16Kです。最近ハードディスクドライブが利用できるディスクサイズのため、私は「今日」と言います。

つまり、あるハードディスクドライブに適切なアロケーションユニットサイズは、別のハードディスクドライブには適切でない場合があります。それはそれがどれくらい大きいかに依存します。アロケーションユニットサイズが小さいほど小さい方が良いですし、アロケーションユニットサイズが大きいほど大きい方が良いです。ただし、それでも、小さなハードディスクドライブで大きなアロケーションユニットサイズを使用することはできます。それどころか!アロケーションユニットの論理的な性質のおかげで、フォーマットプロセス中に設定でき、物理セクターよりも大きく設定できます。小さなハードディスクドライブでは、大きなアロケーションユニットを使用すると、ディスクスペースを犠牲にして、パフォーマンスがわずかに向上する傾向があります。

これが、Microsoftが用語をセクターサイズからアロケーションユニットに変更した理由です。これは、いくつかのWindowsバージョンで発生しました。私が正しく思い出せば、彼らがこの用語を使い始めたのは、Windowsの9xファミリーの1つでした。

次に、アロケーションユニットが変換され、ディスク上の1つまたは複数の物理セクターに内部的にマッピングされます。このタスクは、ドライブコントローラーによって実行されます。コントローラは、ハードディスクドライブの背面にあるPCBボードです。初期のATAハードディスクドライブ(現在はParallel ATAまたはPATAとして知られています)では、コントローラボードはIDE(Integrated Drive Electronics)として知られていました。歴史的に、ハードディスクドライブには必ずしもコントローラーが組み込まれているとは限りませんでした。代わりに、これは別個のインターフェースでした。

LBAアドレス指定ハードディスクドライブで最も一般的な物理セクターサイズは512バイトです。しかし、2010年頃から、多くの新しいハードディスクドライブがAdvanced Formatタイプになりました。これは単に、512バイトより大きいセクターサイズを使用していることを意味します。現在、最大のセクターサイズは4K、つまり4096バイトです。

重要な点は、最新のハードディスクドライブの物理セクターサイズは、ユーザーにとってほとんどまたはまったく関連性がないということです。物理セクターのサイズは、論理セクターとアロケーションユニットに編成され、ユーザーから離れて抽象化されます。 Advanced Formatディスクは512バイトセクターをエミュレートできますが、4096の物理セクターを使用するため、さらに1つの抽象化レイヤーがあります。このため、セクターサイズは通常、LBAアドレス指定のハードディスクドライブのラベルには印刷されません。AdvancedFormatディスクの場合はさらに印刷されます。しかし、それにもかかわらず、それらには物理的なセクターサイズがあります。この詳細は、各モデルのデータシートに記載されているか、実行中のシステムでユーティリティソフトウェアを使用して確認できます。

CHSディスク

このタイプのディスクは、LBAアドレス指定のディスクドライブよりも前のものです。彼らは、読み取りと書き込みのためにアドレス指定するCHS(シリンダーヘッドセクター)と呼ばれる方法を使用します。ユーザーは物理セクターに直接アクセスできます。 LBAとは異なり、セクター抽象化レイヤーはありません。これらのディスクのセクターサイズは、512バイトであることがほぼ保証されています。ただし、ユーザーが変更することはできます。

「低レベルフォーマット」について聞いたことがありますか?これがその用語の由来です。物理セクターに直接アクセスできるため、セクターのサイズを変更することができます。これにより、ユーザーはディスクを「低レベル」でフォーマットできます。つまり、ディスク上でセクターを物理的に再書き込みできます。これは、ディスクに問題がある場合に役立つことがありました。これは、ディスクを更新する手段でした。最新のハードディスクドライブでは、真の低レベルフォーマットは不可能になりました。 これをファイルシステムのフォーマットと混同しないでください。

quantumibm

CHSディスクには、他の詳細の中でも、常にラベルに印刷されたトラックあたりのセクター数(SPT)がありました。セクターサイズについての言及がない場合は、512バイトであると想定されました。その他の詳細は、シリンダーの数とヘッドの数です。それらが主な3つでした。そのため、名前はシリンダーヘッドセクターです。これにも正当な理由がありました。 CHSアドレス指定を使用した非常に初期のハードディスクドライブでは、これらのパラメータはすべて、システムのBIOSセットアッププログラムで手動で設定する必要がありました。これはインストールプロセスの一部でした!したがって、これは適切にインストールするための重要な情報でした。 BIOSの機能強化、ディスクドライブ、インターフェイスの革新など、PCプラットフォームが進化するにつれて、ハードディスクドライブを接続するだけで、システムがそれを検出して自動的に構成することが可能になりました。

私が過去形でこれらのディスクについて書いていることに気づいたかもしれません。これは、それらが廃止されており、(ほとんど)どこにも見つからないためです。おそらく技術博物館を除いて。

バイトサイズのプレフィックス

最初に測定に関するいくつかの基本事項:

  • 2進数(ビット)は、バイナリコンピューターの最小の測定単位です。 1または0のいずれかです。(または量子コンピューターでは両方)
  • ビットは小文字で省略されますb、またはbitと綴られます。
  • 次の単位はバイトです。
  • バイトは大文字で省略されます[〜#〜] b [〜#〜]、またはbyteまたはバイト
  • 1バイトは正確に8ビットです。
  • 次の単位はWordで、通常はWordと綴られます。
  • ワード長はプロセッサアーキテクチャによって異なります。通常、8ビット、16ビット、32ビット、または64ビットです。
  • その後の次の単位は、ダブルワードやクワッドワードなど、ワードの倍数です。
  • ダブルワードはDwordまたはDwと省略され、クワッドワードはQwordまたはQwと省略されます。

これらは基本的な測定ですが、プログラマーでない限り言葉に出会うことはありません。ディスクサイズ、パーティション、ファイルはバイトを使用しています。バイトは、最も実用的な測定値です。ディスク上のセクターは、バイトのブロックです。慣例により、これは最も一般的には512バイトであり、2の倍数です。

2^0 = 1 byte
2^1 = 2 byte
2^2 = 4 byte
2^3 = 8 byte
2^4 = 16 byte
2^5 = 32 byte
2^6 = 64 byte
2^7 = 128 byte
2^8 = 256 byte
2^9 = 512 byte

これらの最小バイトサイズは、数字だけで簡単に表現できます。ただし、2の20番目の倍数は1048576で、30番目の倍数は1073741824です。これがバイトを表す場合、プレフィックスを使用して同じ値をより簡単に表すことができます。これが、キロ、メガ、ギガなどの接頭辞がある理由です。しかし、問題は、これらがメートル法の10進測定システムで使用されるSI(SystèmeInternational)プレフィックスであるということです。このシステムの各プレフィックスは、10の倍数の値を表します。一方、バイナリコンピュータは、2を底として情報を測定します。

unit 10^0 = 1
kilo 10^3 = 1000
mega 10^6 = 1000000
giga 10^9 = 1000000000

国際標準化団体であるIECがバイナリプレフィックスの概念を導入したのはこのためです。このシステムでは、キロ、メガ、ギガなどの名前がわずかに変更されており、バイナリ測定で使用されることを反映しています。

kibi 2^10 = 1024 = 1024^1
mebi 2^20 = 1048576 = 1024^2
gibi 2^30 = 1073741824 = 1024^3

名前は、SIシステムでのそれぞれの名前とWordバイナリを連結したものです。たとえば、kibiは、ki loとbi naryから形成されます。

オブジェクトの質量が5000グラムであると言えば、その値を接頭辞5 kG(キログラム)で表すことができます。末尾のゼロを削除するために、それを1000で除算しています。接頭辞の値がわかっているので、2人目の人が最初に測定したグラム数を尋ねる必要はありません。彼は、私の5 kGの表記を取り、それを1000倍してグラムに変換することにより、プロセスを単純に逆にします。キロは千を意味するので、5 x 1000 = 5000です。

各セクターが512バイトの場合、ディスクの最初の30セクターは15360バイトです。これをもっと簡単に表現すると、1000で割ることができます。結果は15.36キロバイト、つまり15.36kBになります。最も近い整数に丸めると、15kBになります。別の人がこの数値を見ると、15 kBが正確な測定値であると想定し、1000を掛けてバイトに変換します。元の測定値は15360バイトだったので、これは15000バイトになります。これは正しくありません。一方、15360バイトを1024で割ると、正確に15KiBになります。それはキビバイトです。小数展開なし! 「KB」ではなく「KiB」と書かれているので、他の人は元の値を取得するために、1000ではなく1024を掛けることを知っているでしょう。

同様に、メーカーがデバイスに8 GBを印刷する場合、10進数のプレフィックスを使用しています。末尾がゼロの値を持つもの!したがって、8GBは8GiB(ギビバイト)または8 x 2 ^ 30ではなく、8 x 10 ^ 9 = 8 000 000000バイトです。ただし、Windowsは、10進数のプレフィックス(つまり「GB」)のように見えるバイナリサイズ計算(2の累乗)を使用しています。したがって、Windowsでは、これらの8 000 000000バイトを2 ^ 30(または1024 ^ 3)で除算して、7.450580597 "GB"(実際にはGiB)を取得します。これは100分の1に四捨五入されているため、Windowsでは7.45 "GB"と表示されます。 Microsoftはこの意味でGBではなくGiBを使用する必要があるため、「GB」を引用し続けます。これは、すでに紛らわしいトピックにのみ広告を出します。

実例

写真のハードディスクドライブのラベル情報を使用して、いくつかの例を実行します。最初に500GBのディスクを見てみましょう。

Capacity: 500 GB
LBA: 976773168
976773168 x 512 = 500107862016 bytes
500107862016 / 1024^3 = 465.761741638 ≈ 466 GiB

つまり、これは466 GiB、つまりMicrosoft用語(およびJEDEC)では466GBです。除算後も数が少ないことに注意してください。これは、ユーザーがデータを保存するために使用できるよりも多くのセクターがあるためだと思います。一部のセクターは保護されており、一部は再マッピングに使用されます。一部のセクターは時間の経過とともに悪化するため、これは他のセクターが予備として使用される場合です。ハードディスクドライブは不良セクタをマークして追跡し、それらの使用を停止します。

容量番号のみを取得してGiBに変換すると、次のようになります。

500 GB = 500 x 10^9 = 500000000000 byte
500000000000 byte = 500000000000 / 1024^3 = 465.661287308 ≈ GiB

やや小さい数値であることがわかりますが、それでも466GiBに丸められます。しかし、正確なバイト数では、これは実際に使用できる量に近くなります。このように、セクターサイズを知る必要はありません。正確な容量は、LBA番号とセクターサイズを使用して計算されます。これは、残りの例で使用するものです。

Capacity: 320 GB
LBA: 632672208
632672208 x 512 = 323928170496 bytes
323928170496 / 1024^3 ≈ 302 GiB

最後に、これがCHSディスクの1つです。基本的な考え方は非常に似ています。特に明記されていない限り、セクターサイズは512バイトと見なされます。クォンタムディスクを見てみましょう。 IBMは自分で行うことができます。量子ディスクはその容量について何も述べていません。

C: 2484
H: 16
S: 63
2048 x 16 x 63 x 512 = 1056964608 bytes
1056964608 bytes = 1056964608 / 1024^2 = 1008 MiB
1056964608 bytes = 1056964608 / 1024^3 = 0.984375 ≈ 0.98 GiB

どうぞ!なんと0.98GB!ごめんなさい! 0.98 GiBを意味しました! ;-)

マーケティング

「保証セクター」と呼ばれるものがあります。これは、一部のハードディスクドライブのラベルまたはデータシートに印刷されています。これは、ユーザー/消費者とストレージデバイスベンダーの間で進行中の論争の結果です。この混乱は、クラウドコンピューティングの時代、およびソリッドステートディスクが主流のテクノロジーになり、古いハードディスクドライブに徐々に取って代わろうとしている世界において、今日でも存在しています。

マーケティングは、これとはほとんど関係がないと思います。それは純粋に数学の問題であり、数学自体の問題ではなく、人々の問題です。続くことが許されているのは、すべてただの大きな混乱です。少なくとも、MicrosoftはバイナリプレフィックスをKiB、MiB、GiBとして表す必要があります。 Windowsは、今日でもPCの主要なオペレーティングシステムです。

4
Samir

それらは通常、宣伝されているのと同じ大きさですが、次のようになります。

  1. 彼らは常に(私が知る限り)BからKBなどを行うときに1024ではなく1000を使用します。
  2. ファイルシステムは、すべてを追跡するために少量のスペースを使用します。

他の理由もあるかもしれませんが、それらは私が知っている主な理由です

3
Svish

昔のコンピューターでは、すべての計算は(パフォーマンスの意味で)高価でした。プログラマーは、あらゆる種類のショートカットを使用して、計算をできるだけ少なくしました。それらのトリックの1つは、日付の年の部分を2桁だけとして格納することでした。これは、最終的に2000年問題につながりました。もう1つのトリックは、文明世界の他のすべての人が行ったように1000を意味するのではなく、代わりに1024を意味するように1k(キロ)を定義したことでした。これにより、サイズの計算を行うときに、いくつかのコーナーをカットすることができました。コンピュータの計算が非常に安くなったにもかかわらず、その習慣は定着し、今日でも使用されています。

ハードウェアメーカーは、K = 1000、M = 1000000、G = 1000000000の適切なサイズを提供しています。それはあなたに誤った価値を与えるソフトウェアです。

ソフトウェアメーカーは最近、習慣を変えています。たとえば、OSXは適切なサイズを示しています。

3
Dennis Janssen