Dodaj dysk fizyczny do maszyny wirtualnej KVM

12

Konfiguruję serwer plików (nas4free) jako maszynę wirtualną KVM w systemie Ubuntu Server 12.04.

Jak dodać fizyczne dyski twarde bezpośrednio do maszyny wirtualnej, aby mogły być używane przez gościa (nas4free), ale nie hosta?

W szczególności dysk twardy, który chciałbym zamontować, to / dev / sda (który nie jest obecnie zamontowany na serwerze).

Do tej pory znalazłem dwa rozwiązania, ale nie udało mi się pracować.

Pierwszy z nich to Błąd serwera, w którym sugeruje się użycie virt-manager. Nie udało mi się tego uruchomić, ponieważ gdy próbuję wybrać istniejący dysk, nic nie jest wyświetlane. Moje przypuszczenie, dlaczego tak jest, to dlatego, że używam virt-managera nad ssh i nie łączę się jako root, czy to powinno coś zmienić?

Drugim rozwiązaniem, które tu znalazłem , jest po prostu uruchomienie polecenia (zmodyfikowanego dla mojego systemu)

qm set nas4free -virtio /dev/sda

ale wydaje się, że wymaga to proxy, którego nie zainstalowałem i wydaje się, że nie ma go w domyślnych repozytoriach?

Wreszcie, gdy powyższe rozwiązanie zostanie rozwiązane i będę mógł zamontować dysk bezpośrednio na maszynie wirtualnej, czy ktoś ma doświadczenie z tym, czy dysk powinien zostać zamontowany na maszynie wirtualnej jako scsi, ide, czy virtio? (Wiem, że virtio było zalecane na połączonej stronie ServerFault, ale nie słyszałem o tym wcześniej, ponieważ głównie używam VMWare).

Dzięki za pomoc!!!

evan
źródło
1
Uruchom sudo virt-manager, nie musisz łączyć się jako root. Nie wiem, czy virtiodziała dla urządzeń fizycznych ...
is
@izx, dziękuję za odpowiedź! czy to powinno coś zmienić, mimo że virt-manager działa na moim komputerze, a nie na serwerze?
evan

Odpowiedzi:

11

Chociaż na to pytanie zostało udzielone, zamiast używać / dev / sda, powinieneś użyć / dev / disk / by-id / skąd bierzesz

    ls -l /dev/disk/by-id

W ten sposób jesteś objęty ubezpieczeniem na wypadek, gdyby dysk zmienił się z / dev / sda na / dev / sdb.

smccloud
źródło
2
Obecnie jest to jedyna (jak dotąd) odpowiedź na to pytanie. W komentarzach jest kilka informacji, które mogą pomóc, ale o ile wiem, nie jestem pewien, czy rozwiążą problem. Możesz rozważyć rozszerzenie tego rozwiązania, aby zapewnić pełne rozwiązanie. Jeśli części Twojego rozwiązania zostały opracowane przez innych, zawsze możesz je zacytować i połączyć z nimi. Wątpię, czy Izx miałby coś przeciwko ... szczególnie, że (kiedy teraz komentuję) izx nie logował się na stronie od ponad roku.
Eliah Kagan
Używam virsh attach-device domain XML-file...do dołączania dysków. Czy możesz również użyć disk-id w <source dev='/dev/...'/>elemencie?
MrCalvin
8

Mając dokładnie taką samą potrzebę, znalazłem:

http://ronaldevers.nl/2012/10/14/adding-a-physical-disk-kvm-libvirt.html

(cały poniższy tekst pochodzi z powyższego źródła)

Nie da się tego zrobić z virt-managerem. To zajęło mi trochę czasu, żeby się zorientować. O ile wiem, virt-manager współpracuje z pulami pamięci. Możesz przekształcić dysk w pulę pamięci, ale nie możesz dodać istniejącego dysku bezpośrednio do maszyny wirtualnej.

Na szczęście poprawka jest łatwa: ręcznie dodajesz dysk do pliku konfiguracyjnego xml domeny. Otwórz /etc/libvirt/qemu/.xml w swoim ulubionym edytorze i dodaj sekcję do sekcji:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw'/>
  <source dev='/dev/md/storage'/>
  <target dev='vdb' bus='virtio'/>
</disk>

Dzięki temu host / dev / md / storage będzie dostępny dla gościa jako / dev / vdb. Po ręcznej zmianie konfiguracji domeny musisz ręcznie załadować konfigurację. Zaloguj się do swojego hosta i wydaj polecenie:

# virsh define /etc/libvirt/qemu/jetsetetser.xml
Domain jetser defined from /etc/libvirt/qemu/jetsetetser.xml

Oto niezły zasób z dodatkowymi informacjami na temat zarządzania vms za pomocą libvirt: https://help.ubuntu.com/community/KVM/Managing

Zdecydowanie polecam stosować się do rad podanych przez smccloud. Dla mnie to działa jak urok. Uważaj, aby nie zamontować żadnego woluminu na fizycznych dyskach używanych w gościu, w przeciwnym razie poważnie uszkodzisz jego system plików!

dethegeek
źródło
4
Zamiast virsh define...tego zaleca się użycie virsh edit <NAME>To pozwala ci edytować XML w twoim ulubionym edytorze tekstu i pozwolić, aby zmiany automatycznie aktualizowały maszynę wirtualną.
Nathan Osman,