web-dev-qa-db-ja.com

ディスクからセクターを削除することは可能ですか?

私の質問は単純なものだと思いますが、インターネットで答えを見つけることができませんでした(2時間の検索時間...):HDDの1つからセクターの概念を削除したいですか?

この質問がうまく説明されていないと思われる場合は、この質問を別の方法でもう一度質問してみましょう。コンピュータ/ hddは、セクターがいつ開始し、いつ終了するかをどのように知るのですか?ディスクに物理的に押し込まれていますか?それとも、hddのボードに統合されたコントロールから到着したものですか?

前もって感謝します! :)

1
The Array

私のコンピューター/ hddは、セクターがいつ開始するか、いつセクターが終了するかをどのように知るのですか?

フロッピーから始めましょう。フロッピーはよりシンプルで、ハードドライブのようなトラックとセクターを備えているからです。

すべてのディスクドライブは、次の機能で機能します。

  • モーターのオン/オフを切り替える
  • どういうわけか頭を特定のトラックに移動します
  • ヘッド読み取りモード:ディスク上のどこにいても、磁束の変化を超えたときに信号を生成します。
  • ヘッド書き込みモード:ディスク上のどこにいてもフラックス変化を生成します。

セクターがいつ始まるかを検出する方法は?

3.5インチディスクとIBMPCが普及し、事実上の業界標準が作成されるまで、単一の方法はありませんでした。

これは、ウィキペディアの記事からの抜粋です フロッピーディスク

すべての8インチおよび一部の51⁄4インチドライブは、ハードセクターまたはソフトセクターとして知られるセクターを見つけるために機械的方法を使用し、スピンドル穴の横にあるジャケットの小さな穴の目的です。 。光ビームセンサーは、ディスクのパンチ穴がジャケットの穴から見えることを検出します。

ソフトセクターディスクの場合、各トラックの最初のセクターを見つけるために使用される穴は1つだけです。次に、クロックタイミングを使用して、その背後にある他のセクターを見つけます。これには、駆動モーターの正確な速度調整が必要です。

ハードセクターディスクの場合、セクター行ごとに1つずつ、多くの穴があり、さらにセクター0を示すために使用されるハーフセクター位置に追加の穴があります。

Apple IIコンピュータシステムは、インデックスホールセンサーがなく、ハードまたはソフトセクターの存在を無視しているという点で注目に値します。代わりに、各セクター間でディスクに書き込まれる特別な繰り返しデータ同期パターンを使用して、コンピューターが各トラックのデータを見つけて同期するのを支援しました。

Apple IIは、1978年に最初に販売され、IBMPC時代より前の有名な8ビットコンピュータです。 Apple IIは、ソフトウェアで可能な限り多くのことを行い、チップをできるだけ少なくすることで有名です。その結果、CPUがフロッピーディスクヘッドを制御し、そこからデータを読み書きする必要がありました。低レベルで、ディスクの穴を検出するためのチップのような贅沢品は使用されていませんでした。ディスクに接続されているハードウェアは原始的であり、ほとんどがCPUによって駆動されると予想されます。

Apple IIでは、ディスクの読み取り/書き込みとプログラムの実行を同時に行うことはできませんでした(その時代のほとんどのCP/Mマシンでも、8ビットマシンでもこれを行うことはできませんでした)。

では、その古いApple IIはどのようにして正確にディスクの読み取りと書き込みを行ったのでしょうか?おそらくあなたが知りたいと思っていた以上に、これらの厄介な詳細について知りたいと思っていたのは正しいです ここ 第3章から始まります。タイミングパターンなどに重くなりますが、基本的に各セクターは検出可能な一意の「プロローグ」で始まりますシステムがセクターを見つけようとしていて、他のどこにも表示されない場合。実際のデータを書き出すためにエンコード方式が使用され、ビット数よりも多くのスペースが必要になります。セクターの終わりには「エピローグ」もあります。基本的に、AppleIIはディスク用の独自のコントローラーでした。

各セクターには番号がタグ付けされているため、システムは各セクターをスキャンして、必要なセクターを読み込むことができます。このタグはセクターデータの一部ではなく、ディスクがフォーマットされるときに書き込まれます。

1980年代半ばの後半の31⁄2インチドライブは、セクターインデックスホールを使用せず、代わりに同期パターンも使用していました。

IBM PCが1981年に市場に登場したとき(3.5 "ドライブの前ですが5"ドライブの時代)、1つまたは複数のフロッピードライブ用のコントローラーカードを入手できました。これにより、コンピューターはコントローラーカードにトラックとセクターを要求でき、ヘッドとデータストリームを直接制御する必要がなくなりました。そのため、プログラマーは今でははるかに抽象的な見方を扱っています。上記のApple IIリファレンスの第3章で説明されていることはすべて、コントローラーがIBMPCハードウェアで実行することです。したがって、プログラマーは、セクターのプロローグや同期パターンなどではなく、コントローラーとの通信について心配する必要がありました。 PCフロッピーコントローラーのプログラミング はまだ複雑ですが、ほとんどの作業をCPUとは別に実行できます。 。

FWIW IBM PCフロッピードライブにも追加データがあります セクターデータの周囲とセクターにタグを付けます CRCおよびその他の情報を使用します。

だから...AppleIIで..。

  • セクターのプロローグを上書きして、セクターを消去できますか?はい。 Apple DOSソフトウェアは、不足しているセクターを要求されたときにおそらくハングします。それは、あるべきだと信じているトラックに移動し、おそらく永遠にセクターを読み取って探します。

  • 独自のディスクルーチンを作成して、非常に長いセクターを作成したり、単一のセクターであるトラック全体を作成したりできますか?はい。

Apple IIプラットフォームの多くの開発者は、コピーを防ぐためにカスタムフォーマットを作成しました。

あなたは現代のコンピューターでこれを行うことができますか?ハードドライブ上?答えはNOです。コントローラーにコマンドを実行するように指示することしかできず、それらのコマンドの一部は「セクターの読み取り」、「セクターの書き込み」ですが、「ドライブヘッドのオン/オフを切り替える」などのコマンドはありません。とにかく、現代の密度で読み取り/書き込みを行うのに十分な速度でコマンドを送信することはできません。

ハードドライブには独自の統合コントローラがあります(したがって、「統合ドライブエレクトロニクス」の「IDE」という用語)。したがって、上記のような低レベルの情報は、デバイスの製造元だけが知っています。

コントローラがない古いコンピュータのように、ドライブヘッドを制御することはできません。だから、あなたはドライブコントローラーがあなたにできることで立ち往生していますが、それは面白くない実際の低レベルのものです。

2
LawrenceC

ディスクからセクターを削除することは可能ですか?

番号。
明確にするために、磁気プラッター上の固定サイズのデータ​​ストレージブロックを指します。
ディスクセクターの目的 、特に次のことを理解してください。

磁気媒体でデータを読み書きするには、媒体を移動し、消去および書き込みヘッドをオンまたはオフにして既存のデータから離す必要があります。したがって、各トラックのレイアウト(またはフォーマット)を維持するために、ディスクデータは常にセクター(より正確にはデータレコード)の単位で読み書きされます。

HDDのセクターは、実際には古いHDDインターフェースを単純化したものです。
SMD(ストレージモジュールドライブ)などのディスクインターフェイスでは、各/任意のトラックで可変の「セクター」サイズが許可されていました。
各「セクター」は、(固定長の)識別レコードと(IDレコードで宣言された長さの)データレコードで構成されていました。
理論的には、「トラック全体」をカバーする「セクター」を1つだけにすることも、短い「セクター」と長い「セクター」を交互に使用することもできます。前者は、データの転送とバッファリング、およびデータの整合性の理由から実用的ではありません。後者のスキームは、データ転送とバッファリングの要件を複雑にするため、実用的ではありません。

ドライブのすべての「セクター」のサイズを均一にすることは、ソフトウェアを単純化することです。
ディスクコントローラー(ハードディスクおよびフロッピーコントローラー)は、この(低レベル)フォーマットスキームをソフトセクターと呼びます。

IBM PCが導入されたとき、その実装者は「セクター」サイズを512バイトに固定することによって別の単純化を行いました。
このIBMPC規則の前は、128、256、および1024バイトのセクターサイズも使用されていました。

IBM PCの互換性が事実上の標準になるにつれて、512バイトのセクターも事実上の標準になりました。
代替セクターサイズを可能にするハード/フレキシブルディスクコントローラーのソフトセクター機能は、役に立たない機能になりました。
したがって、512バイトセクターでのみ動作する「ハードセクター」コントローラー/ドライブがPC市場で標準になりました。
PCが他のコンピューター市場を支配し始めたので、512バイトセクターの「標準化」も同様になりました。
ドライブ容量が増加すると、(プラッター上の)物理セクターのサイズが4096バイトに増加しました。
ゾーンビット記録を使用すると、ソフトセクターが復活し、トラックあたりのセクター数を変更できるようになりました。ただし、低レベルのフォーマットはコントローラー機能として削除されました。

セクターの記述方法を詳細に説明している この回答 を参照してください。

ドライブの電気機械は一度に1つのトラックへの読み取りまたは書き込みを制限するため、スパントラックへの連続的な読み取りまたは書き込みは実行できません。
したがって、このデータブロックを転送および読み取り/書き込みする「セクター」の概念により、そのサイズは1つのトラックに制限されます。

「セクター」サイズを1バイトなどのはるかに少ない量に減らすことは実用的ではありません。
少量のデータなど、書き込みと読み取りをサポートするために必要なギャップ(リンクされた回答を参照)は、磁気媒体の容量の90%以上を浪費します。

私のコンピューター/ hddは、セクターがいつ開始するか、いつセクターが終了するかをどのように知るのですか?

それはディスクコントローラとドライブ次第です。
最近のHDDでは、IDEドライブで始まり、コントローラーはHDDに組み込まれています。

ディスクに物理的に押し込まれていますか?

いいえ、磁気ディスクの表面はできるだけ滑らかでなければなりません。
セクターのタイミング(サーボトラックなど)または記録(データレコードの前にあるIDレコード)を行うことができます。

それとも、hddのボードに統合されたコントロールから到着したものですか?

上記および/またはリンクを参照してください。

0
sawdust

実際、この質問は見た目ほどばかげているわけではありません。回転するRustタイプである限り、ブロックサイズ1を許可しないという実際の技術的な理由はなく、ブロックされていないデバイスが効果的に作成されます。

そうは言っても、元のポスターの利益のために、hddセクターに関するいくつかの基本的な事実を説明しましょう。

  • ディスクがセクター(またはそれ以上:ブロック)で編成されている理由は、パフォーマンスです。ストレージのブロックをアドレス指定する方が、その中の1バイトよりもはるかに高速であるだけでなく、それらを数えるのもはるかに簡単です。古いハードウェアとソフトウェアに2TB /ボリュームサイズの制限が付いていることが多い理由は、それぞれ32ビットカウンターで512バイトのブロックをカウントすると... 2TBになるためです。初期の512バイト/ブロックと最新のハードウェアの4K /ブロックは非常に普及しているため、多くのOSはさまざまな値(値1を含む)を処理するのに苦労します。

  • 多くのベンダー(NetAppなど)は、512バイトの「通常の」セクターとチェックサムを格納するために520バイト/ブロックユニット(「セクターサイズ520」)を選択しました。

  • ハードセクターディスク(つまり、セクターが実際にディスク上に物理的にマークされているディスク)は初期の歴史に存在していましたが、新しいハードウェアはすべてソフトセクターを使用しています。つまり、セクターはディスクに書き込むことによってディスク上にマークされます。これにより、再フォーマットが可能になります。 WindowsおよびLinuxでは使用できないセクターサイズが520のNetAppディスクを、正常に動作する標準の512バイト/セクターディスクに変換します。

0
Eugen Rieck