Nie można zamontować libvirt / 9p / kvm w fstab podczas rozruchu

18

Próbuję zamontować folder współdzielony przy użyciu qemu-kvm / 9p i nie działa, jeśli dodam go do pliku fstab. Podczas uruchamiania pojawia się błąd, że urządzenie nie może zostać podłączone, ale po uruchomieniu, jeśli uruchomię polecenie „mount -a”, urządzenie zostanie podłączone.

linia fstab:

src_mnt /src 9p trans=virtio 0 0

Z dmesg widzę:

[    7.606258] 9p: Could not find request transport: virtio

Kilka linii później widzę wpisy „virtio-pci”. Nie jestem jednak pewien, jak odroczyłbym montaż, dopóki to urządzenie nie będzie dostępne.

edA-qa mort-ora-y
źródło

Odpowiedzi:

24

Nie wiem, czy jest to idealne rozwiązanie, ale na gościu Ubuntu 12.04 udało mi się to, dodając moduły 9p do initramfs.

Dodano do / etc / initramfs-tools / modułów:

9p
9pnet
9pnet_virtio

Następnie:

sudo update-initramfs -u
Bhassel
źródło
Dziękuję - myślę, że rozsądnie jest powiedzieć, że to jest idealrozwiązanie. Problem polega na tym, że moduł nie jest montowany podczas montowania systemu plików, rozwiązaniem jest dodanie go do listy modułów ładowanych podczas montowania.
Greg
Dlaczego to jest idealne?
lindhe
4

Na Ubuntu 14.04 tylko 9pnet_virtiomoduł wymaga wstępnego ładowania zgodnie z odpowiedzią Bhassel .

Dmesg kilka wierszy przed cytowanym pokazuje, że pozostałe dwa są już załadowane, ale nie mogą znaleźć wymaganego transportu.

[ 1.370611] 9pnet: Installing 9P2000 support 
[ 1.376384] 9p: Installing v9fs 9p2000 file system support 
[ 1.376754] 9pnet: Could not find request transport: virtio 

Testowane z gościem Ubuntu 14.04 na qemu / KVM na openSUSE 13.2.

Tim N.
źródło
Cześć Tim i witam na stronie. Pamiętaj, że kolejność odpowiedzi może się zmieniać zarówno przez głosowanie w społeczności, jak i preferencje użytkownika, dlatego staraj się zawsze wyraźnie określać, do której odpowiedzi się odnosisz. Naprawiłem to na razie w twoim poście; zrób to sam w przyszłości. Dzięki!
CVn
Działa to również na Ubuntu 16.04.
stalet
Działa to również na Ubuntu 18.04
jackkamm
1

Problem polega na tym, w jaki sposób virtio mount jest skonfigurowany na hoście. Istnieją dwa sposoby rozwiązania tego problemu.

Rozwiązanie 1: Użyj mapowania zamiast transportu

<filesystem type='mount' accessmode='mapped'>
  <source dir='/src_dir'/>
  <target dir='src'/>
</filesystem>

Działa to, ale wszystkie pliki będą własnością użytkownika libvirt działa jako. Nie działa to dobrze w systemach plików tmp lub log.

Rozwiązanie 2: Uruchom libvirt jako root i użyj przejścia

vi /etc/libvirt/qemu.conf

Następnie odkomentuj lub dodaj:

user=root
group=root

Zrestartuj hosta lub zrestartuj wszystkie procesy libvirt i qemu / kvm i użyj przejścia:

<filesystem type='mount' accessmode='passthrough'>
  <source dir='/src_dir'/>
  <target dir='src'/>
</filesystem>

Chociaż host może mieć pewne konsekwencje dla bezpieczeństwa, powoduje to, że uid: gid plików na hoście jest taki sam jak na gościu, co działa dobrze w systemach plików log i tmp. Tak się dzieje w tej sytuacji.

Fmstrat
źródło