Fügen Sie der virtuellen KVM-Maschine eine physische Festplatte hinzu

12

Ich richte einen Dateiserver (nas4free) als virtuelle KVM-Maschine auf einem Ubuntu Server 12.04-System ein.

Wie füge ich physische Festplatten direkt zur VM hinzu, damit sie vom Gast (nas4free), aber nicht vom Host verwendet werden können?

Insbesondere die Festplatte, die ich mounten möchte, ist / dev / sda (die derzeit nicht auf dem Server gemountet ist).

Bisher habe ich zwei Lösungen gefunden, aber ich habe auch keine zum Arbeiten gebracht.

Der erste stammt von Server Fault, wo empfohlen wird, virt-manager zu verwenden. Ich habe dies nicht zum Laufen gebracht, da beim Versuch, ein vorhandenes Laufwerk auszuwählen, nichts aufgelistet wird. Meine beste Vermutung, warum dies so ist, ist, dass ich virt-manager über ssh verwende und keine Verbindung als root herstelle. Sollte das einen Unterschied machen?

Die zweite Lösung, die ich hier gefunden habe, besteht darin, einfach den Befehl auszuführen (geändert für mein System).

qm set nas4free -virtio /dev/sda

aber das scheint proxmox zu erfordern, das ich nicht installiert habe und das nicht in den Standard-Repositorys zu sein scheint?

Hat jemand Erfahrung damit, ob das Laufwerk als scsi, ide oder virtio auf der VM bereitgestellt werden soll, sobald das oben Gesagte geklärt ist und ich das Laufwerk direkt auf der VM bereitstellen kann? (Ich weiß, dass virtio auf der verlinkten ServerFault-Seite empfohlen wurde, aber ich hatte vorher noch nichts davon gehört, da ich hauptsächlich VMWare verwende).

Danke für Ihre Hilfe!!!

evan
quelle
1
Ausführen sudo virt-manager, keine Verbindung als Root erforderlich. Sie wissen nicht , wenn virtioWerke für physikalische Geräte ...
ish
@izx, danke für deine Antwort! Sollte das einen Unterschied machen, obwohl virt-manager auf meinem Desktop und nicht auf dem Server ausgeführt wird?
Eva

Antworten:

11

Obwohl dies beantwortet wurde, sollten Sie anstelle von / dev / sda / dev / disk / by-id / verwenden, woher Sie kommen

    ls -l /dev/disk/by-id

Auf diese Weise sind Sie für den Fall abgesichert, dass die Festplatte von / dev / sda nach / dev / sdb wechselt.

smccloud
quelle
2
Derzeit ist dies die einzige Antwort (die jemals veröffentlicht wurde) auf diese Frage. Es gibt einige Informationen in Kommentaren, die helfen könnten, aber soweit ich das beurteilen kann, ist es alles andere als sicher, dass sie das Problem beheben werden. Sie können dies erweitern, um eine vollständige Lösung bereitzustellen. Wenn Teile Ihrer Lösung von anderen entwickelt wurden, können Sie sie jederzeit zitieren und mit ihnen verknüpfen. Ich bezweifle, dass es izx etwas ausmachen würde. Zumal (wenn ich jetzt kommentiere) izx sich seit über einem Jahr nicht mehr auf der Website angemeldet hat.
Eliah Kagan
Ich verwende virsh attach-device domain XML-file..., um Festplatten anzuschließen. Können Sie im <source dev='/dev/...'/>Element auch die Festplatten-ID verwenden?
MrCalvin
8

Mit genau dem gleichen Bedarf fand ich Folgendes:

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

(Der gesamte folgende Text stammt aus der obigen Quelle)

Mit virt-manager geht das nicht. Ich brauchte eine Weile, um das herauszufinden. Soweit ich das beurteilen kann, arbeitet virt-manager mit Speicherpools. Sie können eine Festplatte in einen Speicherpool aufnehmen, eine vorhandene Festplatte jedoch nicht direkt zu einer VM hinzufügen.

Glücklicherweise ist die Lösung einfach: Sie fügen die Festplatte manuell zur XML-Konfigurationsdatei der Domäne hinzu. Öffnen Sie also /etc/libvirt/qemu/.xml in Ihrem bevorzugten Editor und fügen Sie dem Abschnitt einen Abschnitt hinzu:

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

Dadurch wird der / dev / md / -Speicher des Hosts im Gast als / dev / vdb verfügbar. Nachdem Sie die Konfiguration einer Domain manuell geändert haben, müssen Sie die Konfiguration manuell neu laden. Melden Sie sich bei Ihrem Host an und geben Sie den folgenden Befehl ein:

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

Hier ist eine nette Ressource mit weiteren Informationen zum Verwalten von VMs mit libvirt: https://help.ubuntu.com/community/KVM/Managing

Ich empfehle Ihnen dringend, den Ratschlägen von smccloud zu folgen. Das funktioniert wie ein Zauber für mich. Hüten Sie sich vor , um nicht jedes Volumen in den physikalischen Laufwerken in Ihrem Gast verwendet zu montieren, oder gewinnen Sie sein Dateisystem beschädigt stark!

dethegeek
quelle
4
Stattdessen virsh define...wird empfohlen, dies zu verwenden. Auf virsh edit <NAME>diese Weise können Sie das XML in Ihrem bevorzugten Texteditor bearbeiten und die VM automatisch durch die Änderungen aktualisieren lassen.
Nathan Osman