複数のパーティションを持つハードドライブがdd
2番目のハードドライブのパーティションに追加されます(パーティションは最初のハードドライブを完全に含むのに十分な大きさです)。 2番目のドライブのデータにアクセスできますか?では、どうすればよいですか?
編集:明確にするために - この問題のより良い用語は「入れ子になったパーティション化」だと思います。 私も次のような答えを得ました。ネストされたパーティションテーブルを許可する方法はありますか?- 私のユースケースは前の段落と似ています。考えられる解決策は、デバイスマッパーを使用することです。しかし、データにアクセスする「より簡単な」方法はないようです。
答え1
まだ言及されていないという事実には少し驚きましたが、Linuxで基本的にこれを行うことができる2つのツールがあります。
最初のものはと呼ばれpartx
、util-linux
存在する(ほぼ)すべてのLinuxインストールの一部であるソフトウェアパッケージの一部です。partx -s - /path/to/disk
カーネルが認識するディスク上のすべてのパーティションがリストされます。オプションを含む同様の構文は-a
カーネルにこれらのパーティションのデバイスノードを作成するように指示しますが、その構文はそのデバイスノードが-d
ある場合はそのデバイスノードを削除します。-
パスをパーティションではなくディスクとして処理するには、loneを使用する必要があります。
インスピレーションを受けた別のツールpartx
はkpartx
。これはLinuxで利用可能なブロックデバイスマルチパスツールの一部です(通常いいえデフォルトではインストールされますが、multipath-tools
)などのパッケージ名を持つすべての主要なディストリビューションによってパッケージ化されます。代わりに、partx
カーネルがパーティションテーブルを処理し、kpartx
パーティションテーブル自体を読み込み、各パーティションのデバイスマッパーターゲットを作成する方法を調べます。これにより、partx
通常よりも多くの状況で動作できます。ここでの構文は、パーティションを追加または削除するのではなく、パーティションを一覧kpartx -l /path/to/device
表示することです。-a
-l
-d
これは、画像ファイルおよび/または屋根ふき装置を使用するよりも効率的な場合が多い。
答え2
ネストされたパーティションを見たことがありませんが、イメージファイルを使用してマウントするとどうなりますか?
dd if=/dev/disk of=/big/disk/disk.img
その後、ループバックを使用してインストールできます。
losetup /dev/loop0 /big/disk/disk.img
mount /dev/loop0p1 /mnt/disk_partition1
mount /dev/loop0p2 /mnt/disk_partition2
図に示すように、ディスクイメージの個々のパーティションをマウントできます。
答え3
まず、losetup -f
フリーループデバイスを識別するために使用されます(次のように出力されます/dev/loop0
)。それをと呼びましょう/dev/loopN
。
それからlosetup -P /dev/loopN /dev/<partition_1_device>
。
ネストされたパーティションテーブルで指定されたパーティションは、背中を介してアクセスできるようになりまし/dev/loopNp1
た。/dev/loopNp2
これらのデバイス名を使用してマウントできます。
設定をキャンセルするには(再起動は不要です)、ネストしたパーティションをアンマウントしてを実行しますlosetup -d /dev/loopN
。
答え4
私の経験上、答えはこんな感じです。はい:
私はddを使ってあるコンピュータから別のコンピュータにディスクを何度も移行しました。
ディスク全体がコピーされると(ファイル割り当てテーブルを含む)、ディスクを起動してボリュームにアクセスできます。
また、clonezillaを使用してddダイレクトプロセスよりも移植性とスピードを向上させたため、仮想マシンではなく物理マシンを扱う場合はこれを確認することをお勧めします。
これはディスク交換シナリオで私にとって効果的でしたが(BIOSが新しいディスクから起動するように設定されている場合)、ディスクを他のコンピュータ/ VMに接続し、他のコンピュータと同様にボリュームディスクをマウントできない理由はありません。コンピュータ。
システムを再起動したくない場合は、システムが通常変更を確認できる場合は、ディスクを変更するたびにこのコマンドを使用します。それ以外の場合は、再起動すると常に機能します。
for disk in /sys/class/scsi_disk/*;
do echo '1' > $disk/device/rescan;
done
新しいディスクとボリュームが動作可能になったら(たとえば、オペレーティングシステムで確認)、別のユーティリティを使用してデフォルトのパーティションを拡張して残りのディスク容量を埋めるか、必要に応じて追加のパーティション/ボリュームを作成できます。
LVMボリュームを使用している場合は、そのボリュームをシステムにインポートする必要があります。次のリンクは他の有用な情報を提供します。