環境
- SMB ネットワーク共有は
temp
次のようにマウントされます。ユーザーとしてログインしますdave
。sudo mount -t cifs -o username=dave,vers=3.11,uid=dave,gid=dave //nas/temp /media/nas/temp
- 効果的な
temp
マウントフォルダ権限:$ ls -al /media/nas/ drwxr-xr-x 2 dave dave 0 Nov 30 10:14 temp/
- libvirtdをrootとして実行します。
$ ps aux | grep libvirt root 902 0.0 0.2 1559756 42420 ? Ssl Nov29 0:06 /usr/sbin/libvirtd
- 仮想管理者(私はlibvirtフロントエンドを使用しています)
dave
ユーザー権限で実行します。 - 変更されていない一般 QEMU 構成
- 上記のように、ユーザーが
dave
グループに追加されました。libvirt
kvm
ここ(オペレーティングシステムはUbuntu 20.04です):sudo adduser `id -un` libvirt sudo adduser `id -un` kvm
- libvirt URIは
qemu:///system
質問
dave
temp
シェルまたはファイルアプリケーションから直接書き込んで読み取ることができます。共有所有者はおよびに属するユーザーに設定されますuid=dave,gid=dave
。仮想マシンの実行kvm
libvirt
地元の .qcow2
ディスクイメージパスに問題はありません。 virt-managerでは、/media/nas/temp
ストレージプール(イメージを含むディレクトリ)を定義できます。
ただし、このディスクイメージファイルをに配置または作成しようとすると、/media/nas/temp
「許可拒否」エラーが発生します。私が知っている限り、VMはqemu:///system
インスタンス化されていますroot
。試してみて確認した結果、rootとして書き込むことsudo su
ができます。/media/nas/temp
エラーを直接トリガする別の方法(virt-manager出力からコピー)は次のとおりです。
/usr/bin/qemu-img create -f qcow2 -o preallocation=metadata,compat=1.1,lazy_refcounts /media/nas/temp/ubuntu20.04 20971520K
質問
権限の問題と解決策を知りたいです。ここで問題は何ですか?
詳細なエラーメッセージ
新しいディスクイメージを作成しようとすると、.qcow2
次のことがトリガされます。
ボリューム作成エラー: 'ubuntu20.04'ストレージボリュームを作成できません: '内部エラー:サブプロセス(/usr/bin/qemu-img create -f qcow2 -o preallocation=metadata,compat=1.1,lazy_refcounts /media/ nas/ temp /ubuntu20.04 20971520K) 予期しない終了状態 1: qemu-img:/media/nas/temp/ubuntu20.04: qcow2 ヘッダーに書き込めませんでした: 権限が拒否されました。
バックトレース(最も最近の呼び出しの最後):ファイル "/usr/share/virt-manager/virtinst/storage.py"、682行、install vol = self.pool.createXML(xml, createflags)ファイル "/usr/lib/ python3 /dist-packages/libvirt.py", line 3535, createXML, ret が None の場合: raise libvirtError('virStorageVolCreateXML() failed', pool=self) libvirt.libvirtError: 内部エラー: 子プロセス(/usr /bin / qemu -img create -f qcow2 -o preallocation=metadata,compat=1.1,lazy_refcounts /media/nas/temp/ubuntu20.04 20971520K) 予期しない終了状態 1: qemu-img: /media/nas/temp/ubuntu2 04: 使用不可 qcow2 ヘッダーに書き込むには: 権限が拒否されました。
上記の例外の処理中に別の例外が発生しました。
バックトラッキング(最後の呼び出し最後):ファイル "/usr/share/virt-manager/virtManager/asyncjob.py"、行75、cb_wrapperコールバック(asyncjob、* args、**kwargs)ファイル "/usr/share /virt" -manager/virtManager/createvol.py"、339行、_async_vol_create vol.install(meter=meter) ファイル"/usr/share/virt-manager/virtinst/storage.py"、691行、RuntimeError("Unable to インストール中"ストレージボリュームの作成" RuntimeError: ストレージボリューム 'ubuntu20.04' を作成できません: '内部エラー: 子プロセス (/usr/bin/qemu-img create -f qcow2 -o preallocation=metadata, compat=1.1,lazy_refcounts /media /nas/temp/ubuntu20.04 20971520K) 予期しない終了状態 1: qemu-img:/media/nas/temp/ubuntu20.04: qcow2 ヘッダーを書き込めませんでした: 権限が拒否されました。
アップデート:私がもっと試したこと
- 他のエラータイプの検索
journalctl -xf
(上記のメッセージ以外には何もありません) cat /var/log/syslog | grep DENIED | grep libvirt
(なし)で拒否されたジョブを検索する- 実験によるAppArmorの無効化
systemctl stop apparmor
- 効果なし - 別のローカルフォルダに画像が正常に作成されました。
/var/lib/libvirt/images/
アップデート2:nobrl
マウントオプションの使用
nobrl
インストールオプションを使用する場合(ありがとう 到着rudib)所有者はuid=dave,gid=dave
次のとおりです。
sudo mount -t cifs -o username=dave,vers=3.11,uid=dave,gid=dave,nobrl //nas/temp /media/nas/temp
、ストレージボリュームが正常に作成される可能性があります(virt-managerウィザードのステップ4/5)。ステップ5/5では、別の「許可拒否」エラーが発生します。
インストールを完了できませんでした: '内部エラー:qemuが予期せず閉じられました。モニター:2020-12-01T06:03:01.710704Z qemu-system-x86_64:-blockdev{"node-name":"libvirt-2-format","read - only":false,"driver":"qcow2" ,"file":"libvirt-2-storage","backing":null}: ファイルを再開できませんでした: 権限が拒否されました。
バックトラッキング(最後の呼び出し最後):ファイル "/usr/share/virt-manager/virtManager/asyncjob.py"、行75、cb_wrapperコールバック(asyncjob、* args、**kwargs)ファイル "/usr/share /virt" -manager/virtManager/createvm.py"、2089行、_do_async_install guest.installer_instance.start_install(guest,meter=meter) ファイル"/usr/share/virt-manager/virtinst/install/installer.py"、542行、start_installフィールド = self._create_guest(ファイル "/usr/share/virt-manager/virtinst/install/installer.py"、行 491、_create_guest フィールド = self.conn.createXML( install_xml または final_xml, 0) ファイル "/usr/lib /python3/dist-packages/libvirt.py", line 4034, createXML, ret が None の場合: raise libvirtError('virDomainCreateXML() failed', conn=self ) libvirt.libvirtError: 内部エラー: qemu が予期せずクローズされました. monitor:2020-12-01T06:03:01.710704Z qemu-system-x86_64:-blockdev {"node-name":"libvirt-2-format","read-only" ": false, "driver": " qcow2 ", "file": "libvirt-2-storage", "backing": null}: ファイルを再度開けませんでした: 権限が拒否されました。
指定しないと、次の権限がuid
発生します。gid
$ ll /media/nas/
drwxr-xr-x 2 root root 0 Dez 1 07:01 temp/
、エラーは以前と同じです。
ベストアンサー1
メモ:リモートでマウントされたアクティブボリュームはいくつかの問題を引き起こし、待ち時間を増やす可能性があります。
qemu-imgがバイト範囲ロックを処理できないようですcifs
。このフラグはnobrl
問題を解決する必要があります。
mount -t cifs -o username=dave,vers=3.11,nobrl,uid=libvirt-qemu //nas/temp /media/nas/temp
イメージ作成中にqemu:///system
uid=libvirt-qemu
rootとしてvirt-manager
実行する必要はないようですqemu-img create
。ただし、qemu:///system
システムはqemuユーザー(libvirt-qemu
[Ubuntu、Debian]、またはqemu
[Fedora])で起動するため、共有がrootとしてマウントされた場合は別の権限拒否エラーが発生します。
nobrl Do not send byte range lock requests to the server. This is necessary for certain applications that break with cifs style mandatory byte range locks (and most cifs servers do not yet support requesting advisory byte range locks).
を使用するときにselinux
seboolを設定する必要があるかもしれませんvirt_use_samba
。