web-dev-qa-db-ja.com

/ dev / sdaと/ dev / sda1の違い

/ dev/sdaがrawデバイスであり、/ dev/sda1がパーティションまたは仮想デバイスであることを知っています。

しかし、なぜsda#が時々しか表示されないのか、または特定のシステムでのみ表示されるのかについては、少し混乱しています。これが発生する原因は何ですか?おそらく、sda#ドライブが表示されないのは、パーティション分割されていないときですか?あるいは、ハードウェア全体で同じではないのでしょうか?

そして、なぜ両方をマウントできるのですか? (時々)パーティションはマウント可能なものではないのですか?

あなたが与えることができるあらゆる資源や色は非常に高く評価されます。前もって感謝します。

17
decoy

最近のシステムでは、パーティションデバイスは、パーティションが実際に存在する場合にのみ表示されます。

MBRパーティションテーブルを持つディスクでは、パーティション番号1〜4は、「プライマリ」パーティションと呼ばれるパーティションテーブルの4つのスロットに対応しています。これらは順番に入力する必要はないため、たとえば、sda2を使用してsda1を使用しないことも可能です。パーティション番号5以上は、拡張パーティションの「論理ドライブ」に対応します。これらは常に連続番号が付けられるため、sda5がないとsda6を使用できません。

GPTパーティションテーブルを備えたディスクには、さらに多くのパーティション(通常は最大128)があり、すべてが「プライマリ」です。たとえば、パーティションがsda9のみのディスクを作成できます。

ディスクにパーティションテーブルがない場合は、当然、パーティションデバイスはありません。

古いシステム(udevで管理されているシステムではなく、静的な/ devを使用しているシステム)には、パーティションが実際に存在するかどうかに関係なく、通常、可能なすべてのパーティション番号のデバイスノードがあります。 (もちろん、存在しないパーティションのデバイスファイルを開こうとすると失敗します。)


パーティション分割を行わずに、ファイルシステムをディスクに直接配置することが可能です。ブロックデバイスをマウントすると、ファイルシステムドライバーは通常、デバイスの先頭から所定のオフセットでスーパーブロックを探します。パーティションの先頭はディスク自体の先頭ではないため、パーティション内のファイルシステムのスーパーブロック「ディスク全体」デバイス上に作成されたファイルシステムのスーパーブロックとは異なり、ディスク上の別の場所にあります。

したがって、ディスクにファイルシステムがあっただけで、パーティション化され、ファイルシステムがパーティションに作成された場合、古いスーパーブロックはまだ存在している可能性があります。最初のパーティションの開始前の小さなギャップ。そのため、ディスクはまだrawディスクデバイスとパーティションデバイスの両方にファイルシステムを持っているように見えます。なぜなら、マウントしようとするファイルシステムドライバーがスーパーブロックを探しに行くと、ファイルシステムドライバーがそれを見つけます。

ただし、ディスク上で重複しているため、両方のファイルシステムをマウントして使用するのは実際には安全ではありません。 1つは、他の人が考えている空きスペースに重要な簿記データがあるかもしれません。そのため、ブロックデバイスの先頭をゼロにして、不要なスーパーブロックを削除したり、未加工ディスクをパーティション化されたディスクに変更したり、その逆を行う場合や、パーティションで使用されるファイルシステムのタイプを変更したりすることをお勧めします。 。

19
Wyzard

私の知る限り、カーネルがscsiのような(sataを含む)バス上で新しいブロックデバイスを検出すると、ディスク全体の/devにノードを追加するだけでなく、 /dev/sdaパーティションテーブルがあるかどうかを確認しようとします。読み取り可能なパーティションがある場合は、物理パーティションか論理パーティションかによって番号が付けられたパーティションノードが作成されます(論理パーティションは5番から始まると思います)。

ディスクノードが表示されているが、パーティションノードがない場合、これは、パーティションが検出されていないことを意味します。物理デバイスをマウントできるインスタンスについては知りません。それは、パーティションテーブルなしで物理デバイスに直接書き込まれたファイルシステムがあることを意味するためです。単一のパーティションしかない場合、mountmount /dev/sdaコマンドを/dev/sda1を意味すると解釈する可能性がありますが、私はこれをテストしたことがありません。

6
growse

/ dev/sda-​​rawデバイス

/ dev/sda1-パーティションのような「仮想」デバイス。

興味深い違いの1つは、デバイスにパーティションがある場合(MBRデータまたは同様の場合)、MBRデータはデバイス上のパーティションの外部にあるため、仮想デバイスからMBRデータを読み取ることができないことです。 MBRはデバイスの最初のセクターにあります(CHS:0 0 1)。デバイスの開始後、1MiBに最初のパーティションを作成することをお勧めします。

MBRデータを読み取るには、rawデバイス(/ dev/sda)を使用する必要があります。

dd if=/dev/sda of=mbr.bin bs=512 count=1
3
colemik

ああ、パーティションテーブルとデバイス名。それらと混同する準備をしなさい。

Compaq RAIDコントローラーを備えたHPサーバーがありますか?/dev/sdaがありません。/dev/ccsisに挨拶してください。

古いIDEインターフェイスを備えた古いデスクトップコンピュータをお持ちですか?/ dev/sdaがありません。/dev/hdaに挨拶してください。

/ dev/sdaと表示されている最新のサーバーがありますが、インストール後はほとんど表示されませんか? LVMに挨拶します。OSのインストールにより、/ dev/sdaがLVM物理ボリュームとして作成され、その中にボリュームグループが作成され、その中に論理ボリュームが作成されました。

したがって、/ dev/sda1のようなものが表示されない場合は、独自の「パーティション」を作成したLVMなどが使用されている可能性があります。

この回答はお役に立ちましたか?

0