私はLinuxシステムをKVMホストとして実行しており、古いPCの物理ディスクを実行する仮想マシンを作成しました(--importを使用)。ディスクには、複数のオペレーティングシステムをデュアルブートするための複数のパーティション、スクラッチパーティション、およびいくつかのビデオデータがあります。私が本当に仮想化したいのは、このディスクのLinuxシステムです。ディスク全体をイメージする方法を理解していると思いますが、実際に必要なのはMBR、スクラッチ領域、/および/bootを格納するパーティションだけです。仮想化のために特定のパーティションだけをイメージに「抽出」する方法はありますか?興味のあるパーティションを一時的に空のディスクにコピーし、grubをインストールして仮想化するつもりです。しかし、私が望むことを達成するより簡単な方法がありますか?
ありがとう、
ヴォルフガング
答え1
既存のPCシステムを含むディスクがKVMホストに物理的に接続されていると仮定すると、次のことができます。
適切なサイズのディスクイメージファイルと優れた回復CDを含むISOを使用して仮想マシンを使用または
virsh
作成します(私はvirt-manager
クロンジラまたは割れたこのようなことのために。どんな良い「リアルタイム」システムでも可能です。最高いいえディストリビューションのインストールプログラムISOを使用してください。するいいえ物理ハードディスクがVMに接続されていません。
ISOイメージを使用してシステムを起動します。必要に応じて仮想ディスク(仮想マシンの内部)を
/dev/vda
分割してフォーマットします。/target
(および他のパーティションがある場合は下に/target
)としてマウントします。KVMホストのコマンドを使用して、既存のシステムを含む物理ディスクをVMに接続します
virsh attach-disk
。質問におおよそのコマンドラインを提供するのに十分な詳細はありませんが、virsh help attach-disk
オプションの要約を取得するには実行してください。結局、次のようになります。virsh attach-disk vmname /dev/sdX /dev/vdb --targetbus sata
/dev/sdX
物理ディスクはどこにあり、/dev/vdb
仮想マシンに表示されるデバイスはどこにあり、ターゲットバスはsata、scsi、さらにはvirtioになります。仮想マシンに戻り、仮想化するオペレーティングシステムパーティションとそのパーティションの下にある他の
/source
パーティションをマウントします。mount -o ro /dev/vdbN /target/XXXXX
誤字/エラーを防ぐには、すべて読み取り専用でインストールしてください。rsync -a /source/ /target
(テールゲートが重要/
です/source/
)umount
以下のすべて/source
。もう必要ありません。for i in proc dev sys dev/pts ; do mount -o bind /$i /target/$i done
これにより、すべてのシステム擬似ファイルシステムだけでなく、他の
grub-install
ツールに必要なすべてのシステム擬似ファイルシステムも保証されます。lsblk
blkid
chroot
chroot /target
/etc/fstab
新しいブロックデバイス名(またはラベルまたはUUID)を使用するようにマウント項目を調整するには、編集してください。ここでは、ネットワーク構成などの他の事項を変更したり、後でプライマリシステムが実行されるまでこれらの事項を残したりすることもできます。最初に作業が正しく行われず、再試行する必要がある場合に備えて、重要な変更のコピーを保存することをお勧めします。あるいは、変更を書き留めて再起動する必要がある場合は、何をすべきかを知ることができます。
grub-install /dev/vda
exit
# chrootを終了し、回復CDイメージのシェルに戻ります。for i in proc dev/pts dev proc sys; do umount /target/$i ; done
umount
以下のすべて/target
KVMホストは別々の追加ディスクを使用します
virsh detach-disk
。
これで仮想マシンを再起動できます。 ISOイメージ仮想CD-ROMの代わりにハードディスクから起動するように指示する必要があります。