
Linux PC в настоящее время умер из-за отказа материнской платы. Однако жесткий диск все еще работает. Я пересадил диск в другую Linux машину и обнаружил, что все читается.
Теперь я хочу реанимировать старый ПК, но как виртуальную машину. Возможно ли это сделать без предварительного преобразования диска в файл образа, т. е. запуска с существующим диском? Я пока не знаю, что лучше — KVM или LXC, но я бы предпочел LXC, потому что хост-компьютер довольно медленный. Возможно ли это? Мой опыт развертывания виртуальных машин довольно ограничен...
Кстати, на обоих компьютерах установлен Gentoo Linux.
РЕДАКТИРОВАНО
Спасибо за все ответы. Чтобы прояснить ситуацию, главная причина, по которой мне нужен жесткий диск для запуска какой-то виртуальной машины, заключается в том, что старый компьютер был основным сервером Coda небольшого кластера Coda. Я не могу (легко) извлечь данные из "сырых" разделов vice, поэтому запуск контейнера может быть самым простым способом. Хост-компьютер очень ограничен в плане аппаратных возможностей, поэтому простое клонирование диска через dd не сработает - недостаточно места (!) (не спрашивайте почему :-/ - довольно странная установка). Кроме того, старый ПК также использовал LVM. Различные разделы и LVM LV, однако, можно довольно хорошо смонтировать на новом хост-компьютере - данные там, и однажды я даже случайно загрузил новый хост-компьютер со старым диском как "userland" (новое ядро, старое userland) - сработало, так что системы довольно похожи.
Прелесть установки LXC в том, что она не требует так много ресурсов. Недостаток в том, что я понятия не имею, будут ли серверы CODA нормально работать в контейнере, поэтому размещение их в полной виртуальной машине может быть безопаснее.
решение1
С помощью VirtualBox можно выполнить загрузку с физического жесткого диска.Руководство: Использование необработанного жесткого диска хоста из гостевой ОС.
По этому поводу я написал руководство на немецком языке:Dualboot-Windows виртуализация. Его основная задача — загрузка физической ОС Windows, но он также работает и с Linux.
Основные пункты, которые вам следует сделать:
- Установите VirtualBox. Убедитесь, что вы являетесь членом группы
vboxusers
после этого. - узнать файл устройства нового жесткого диска (например
/dev/sdb
) - Создать виртуальную машину в VirtualBoxбезвиртуальный жесткий диск (я его так называю
oldsys
) - как root: создать файл vmdk, указывающий на новый жесткий диск
VBoxManage internalcommands createrawvmdk -filename ~/VirtualBox\ VMs/oldsys/oldsys.vmdk -rawdisk /dev/sdb
смените владельца
oldsys.vmdk
с root на своего.создайте правило udev, чтобы разрешить себе доступ к сырому диску, например
KERNEL=="sdb", OWNER="myusername", MODE="0600"
В VirtualBox подключитесь
oldsys.vmdk
к виртуальному контроллеру SATA виртуальной машины oldsys.Если oldsys была системой, загруженной через EFI, измените настройки виртуальной машины oldsys в «system» на «activate EFI»
Вам также может потребоваться включить «IO-APIC».
перезагрузите, чтобы включить правило udev
запустите oldsys в VirtualBox. Он должен загрузиться без проблем.
решение2
Я бы предложил захватить образ диска с помощьюddrescueи затем использовать файл образа для резервного копирования хранилища виртуальной машины. Таким образом, вы не рискуете оригинальной копией своих данных, если что-то пойдет не так с вашими планами виртуализации.
KVM, безусловно, будет работать, поскольку он загрузит полную ОС. LXC может работать, в зависимости от того, насколько похожи системы. Основное ограничение LXC заключается в том, что все, что вы запускаете внутри контейнера, будет совместно использовать ядро хоста. KVM позволяет вам запускать ядро в гостевой системе. Пока вы просто работаете с копией своих данных, можно безопасно экспериментировать, пока вы не найдете настройку, которая лучше всего подходит для вашей ситуации.
решение3
Это возможно, но желательно создать резервную копию вашего диска, если вам дороги эти данные.
Если процессор хост-компьютера поддерживает виртуализацию (на Intel, проверьте через grep vmx /proc/cpuinfo
), KVM не будет сильно замедлять работу гостевой системы.
Предположим, что ваш старый диск доступен, поскольку /dev/sde
вы можете использовать такую команду (как обычный пользователь):
$ qemu-system-x86_64 -enable-kvm -drive file=/dev/sde,if=virtio,format=raw \
-m 2048 \
-net user,hostfwd=tcp::10022-:22 -net nic,model=virtio
Это загружает VM с 2 GiB RAM. -net
Параметры необходимы только если вас интересует переадресация портов на гостевой sshd и гостевой сетевой доступ в целом.
Если вы решили использовать файл образа вместо реального диска, вам просто нужно заменить его /dev/sde
на имя файла этого образа.
решение4
Я решил это с помощью VBoxManage. По сути, я создал новую виртуальную машину VirtualBox, подкачал туда сырой диск и запустил.
Поначалу у меня возникли проблемы с правильной настройкой сети (поскольку ядро хоста было слишком старым для моих вспомогательных модулей ядра VirtualBox), но после обновления ядра я получил мостовое сетевое соединение, и с тех пор все пошло довольно гладко.