日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

基于Qt與libvirt構(gòu)建跨平臺(tái)虛擬機(jī)管理器:從連接到顯示

基于Qt與libvirt構(gòu)建跨平臺(tái)虛擬機(jī)管理器:從連接到顯示 簡(jiǎn)介qt-virt-manager 是基于 Qt/C 開發(fā)的圖形化虛擬機(jī)管理工具面向系統(tǒng)管理員與運(yùn)維開發(fā)人員解決異構(gòu)虛擬化平臺(tái)之間管理分散、操作門檻高的問(wèn)題。它通過(guò)統(tǒng)一界面覆蓋 VMware、LXC、BHYVE、Libvirt、Hyper-V、OpenVZ、QEMU-KVM 與 VirtualBox 等主流技術(shù)用戶無(wú)需在不同客戶端之間來(lái)回切換即可集中創(chuàng)建、刪除、啟動(dòng)、停止和監(jiān)控虛擬機(jī)并進(jìn)行資源分配、網(wǎng)絡(luò)配置、克隆、備份與遷移等操作。壓縮包大小約 3.08MB便于快速獲取目前已有 353 人學(xué)習(xí)瀏覽。針對(duì)各底層虛擬化技術(shù)Qt 界面下的操作思路對(duì)理解 LXC 容器與 BHYVE 原生虛擬化的差異、Libvirt 抽象層的作用、QEMU-KVM 硬件虛擬化加速原理以及 Hyper-V/OpenVZ 的適用場(chǎng)景都有幫助。借助 Qt 跨平臺(tái)特性工具在 Linux、Windows 等桌面環(huán)境下提供一致體驗(yàn)適合需要整合多種虛擬化技術(shù)、簡(jiǎn)化日常管理流程的系統(tǒng)工程師也適合作為虛擬化入門學(xué)習(xí)與教學(xué)演示的配套資源。1. Qt虛擬機(jī)經(jīng)理不用再羨慕virt-manager的圖形化體驗(yàn)我最初拿到 qt-virt-manager 這套資源時(shí)第一反應(yīng)是“它到底解決了什么”。畢竟桌面端早已有 virt-manager可它在技術(shù)棧上綁死了 GTK我想把它嵌進(jìn)自己的 Qt 主程序、想換一套 QSS 皮膚、想跨平臺(tái)復(fù)用同一套界面邏輯都等于從頭再造輪子。這份用 Qt/C 重寫的虛擬機(jī)經(jīng)理底層依然走 libvirt把 QEMU/KVM、VirtualBox、LXC、bhyve、Hyper-V 這些后端統(tǒng)一收進(jìn)來(lái)界面則換成完全可控的 Qt 控件。它解決的不只是“能看見虛擬機(jī)”而是讓桌面開發(fā)者和運(yùn)維能拿到一套可編譯、可二次修改的虛擬化管理源碼。適合誰(shuí)適合正在做桌面虛擬化管理工具、或需要在自定義界面里操作虛擬機(jī)的朋友新手也能照著源碼把連接鏈路跑通。2. 連接后端URI、驅(qū)動(dòng)樹和安全認(rèn)證的拆解真正上手這套 Qt 虛擬機(jī)經(jīng)理之前建議先把連接層拆明白。因?yàn)樗泄δ堋斜怼?dòng)、快照、顯示——都建立在那一條連接 URI 上。URI 寫錯(cuò)一個(gè)斜杠后面全白搭。2.1 先弄清 libvirt 驅(qū)動(dòng)樹系統(tǒng)連接與用戶會(huì)話連接libvirt 不是虛擬化軟件本身它是一個(gè)統(tǒng)一管理接口。你用virConnectOpenAuth傳進(jìn)去的 URI決定它選擇哪個(gè)驅(qū)動(dòng)。驅(qū)動(dòng)名來(lái)自編譯進(jìn) libvirt 的那一組后端模塊常見的有qemu、vbox、lxc、bhyve、hyperv、openvz、phyp等。注意URI 里的:///system和:///session兩個(gè)路徑代表完全不同的權(quán)限邊界system走系統(tǒng)的 libvirtd 守護(hù)進(jìn)程需要 root 或加入libvirt組session走當(dāng)前用戶自己的進(jìn)程不需要 root但它只能管理用戶自己名下的虛擬機(jī)。我用一個(gè)表把這組 URI 記下來(lái)排查的時(shí)候?qū)χ春芸旌蠖薝RI 示例說(shuō)明QEMU/KVMqemu:///system最常用連接系統(tǒng)級(jí) libvirtdVirtualBoxvbox:///system通過(guò) vbox 驅(qū)動(dòng)管理 VirtualBox 實(shí)例LXC 容器lxc:///system管理本機(jī) LXC 容器bhyvebhyve:///systemFreeBSD 上的 bhyve 虛擬機(jī)Hyper-Vhyperv:///system通過(guò) WSMan 協(xié)議連 Windows Hyper-VOpenVZopenvz:///session管理 OpenVZ 容器IBM PowerVMphyp:///system連接 PowerVM 管理分區(qū)這套資源里默認(rèn)走的是qemu:///system。你要把它改成 vbox 或 lxc不需要改界面代碼只需要改連接配置項(xiàng)。我在 qt-virt-manager 的源碼里看到它把 URI 作為配置字符串放到首選項(xiàng)頁(yè)這個(gè)設(shè)計(jì)很實(shí)用——不要把一個(gè)后端寫死在構(gòu)造函數(shù)里運(yùn)行時(shí)切換能省去重新編譯。2.2 遠(yuǎn)程連接與認(rèn)證ssh 和 tcp 兩條路的參數(shù)差異跨機(jī)器管理虛擬機(jī)時(shí)URI 會(huì)帶上認(rèn)證方式。常見的有兩種寫法qemussh://userhost/system和qemutcp://host:16509/system。先說(shuō) ssh 這條。它依賴本機(jī) ssh 客戶端第一次連接時(shí) libvirt 會(huì)通過(guò) sshd 跳轉(zhuǎn)到遠(yuǎn)端再用遠(yuǎn)端 libvirtd 的權(quán)限模型驗(yàn)證。好處是傳輸加密、認(rèn)證簡(jiǎn)單因?yàn)槟惚緳C(jī)已經(jīng)生成過(guò) ssh key坑點(diǎn)是如果你用密鑰而非密碼登錄libvirt 的認(rèn)證回調(diào)會(huì)被跳過(guò)它直接走 ssh 層這時(shí)如果遠(yuǎn)端沒(méi)有把本地公鑰加進(jìn)authorized_keys就會(huì)收到一個(gè)讓人摸不著頭腦的連接錯(cuò)誤。再說(shuō) tcp 這條。它走 16509 端口通常要開啟 SASL 認(rèn)證。打開/etc/libvirt/libvirtd.conf把listen_tls 0、listen_tcp 1打開然后配置auth_tcp sasl。注意如果 libvirtd 是以 systemd 方式啟動(dòng)還得修改/etc/libvirt/libvirtd.socket的監(jiān)聽開關(guān)。我在實(shí)際配置時(shí)踩過(guò)一次明明設(shè)置了listen_tcp 1服務(wù)卻不監(jiān)聽 16509 端口后來(lái)發(fā)現(xiàn)是新版本 libvirt 默認(rèn)走 socket 激活需要在/etc/libvirt/libvirtd.conf里把listen_tcp相關(guān)注釋放開并且重啟服務(wù)。tcp 連接如果不開 SASL測(cè)試時(shí)勉強(qiáng)能連上但生產(chǎn)環(huán)境絕對(duì)不要這么干——libvirt 的 tcp 不加認(rèn)證等于把主機(jī)的域管理接口裸奔在局域網(wǎng)里。2.3 C 側(cè)封裝連接virConnectOpenAuth 與 URI 校驗(yàn)qt-virt-manager 的連接層直接用 libvirt 的 C API用 Qt 的QString轉(zhuǎn)成const char*傳進(jìn)去。最關(guān)鍵的是認(rèn)證回調(diào)它決定你用什么方式完成 SASL/SSH 后的身份驗(yàn)證。我一般會(huì)這樣封裝// hypervisor_connection.cpp #include libvirt/libvirt.h #include libvirt/virterror.h #include QDebug // 認(rèn)證回調(diào)把用戶名和密碼交給 libvirt static int authCallback(virConnectCredentialPtr cred, unsigned int ncred, void* userdata) { auto* pair static_castQPairQString, QString*(userdata); for (unsigned int i 0; i ncred; i) { if (cred[i].type VIR_CRED_AUTHNAME) { // 把 Qt 字符串拷貝到 libvirt 的緩沖里 QByteArray name pair-first.toUtf8(); cred[i].result strdup(name.constData()); cred[i].resultlen name.size(); } else if (cred[i].type VIR_CRED_PASSPHRASE) { QByteArray pass pair-second.toUtf8(); cred[i].result strdup(pass.constData()); cred[i].resultlen pass.size(); } else { return -1; // 不認(rèn)識(shí)的憑據(jù)類型直接失敗 } } return 0; } virConnectPtr openHypervisor(const QString uri, const QString user, const QString pass) { QPairQString, QString authPair(user, pass); virConnectAuth auth; auth.credtype nullptr; auth.ncredtype 0; auth.cb authCallback; auth.cbdata authPair; // 這里先嘗試讀寫連接失敗再退化為只讀 virConnectPtr conn virConnectOpenAuth(uri.toUtf8().constData(), auth, 0); if (conn nullptr) { const virError* err virGetLastError(); qWarning() 連接失敗: err-message; } return conn; }這段代碼里有幾個(gè)參數(shù)值得解釋。VIR_CRED_AUTHNAME表示讓 libvirt 回調(diào)來(lái)填寫用戶名VIR_CRED_PASSPHRASE是密碼。cred[i].result必須用strdup分配內(nèi)存libvirt 會(huì)自己釋放。我一般不用QString::toLocal8Bit而是toUtf8因?yàn)?libvirt 對(duì)證書里的非 ASCII 用戶名處理有歷史包袱UTF-8 出錯(cuò)概率最低。打開連接之后不要順手把virConnectClose寫進(jìn)析構(gòu)里就完事。如果界面里有多個(gè)窗口共享同一條連接你要自己維護(hù)引用計(jì)數(shù)。libvirt 的virConnectPtr不是線程安全的多個(gè)線程同時(shí)使用同一個(gè)指針時(shí)必須加鎖或保證串行訪問(wèn)。我的做法是連接對(duì)象放在一個(gè)單獨(dú)的管理類里所有 libvirt 調(diào)用都經(jīng)過(guò)這個(gè)類的同步方法避免在多個(gè)線程里直接操作同一個(gè)virConnectPtr。2.4 連接層參數(shù)速查flags、超時(shí)與日志virConnectOpenAuth的 flags 參數(shù)有三個(gè)常用值0表示讀寫連接VIR_CONNECT_RO表示只讀VIR_CONNECT_NO_ALIASES表示不做 URI 別名解析。如果你只是做一個(gè)只讀監(jiān)控面板用VIR_CONNECT_RO就夠了這樣即便口令泄露也只能看不能改。超時(shí)參數(shù)不在這個(gè)函數(shù)里它由 libvirt 內(nèi)部的網(wǎng)絡(luò)超時(shí)和 SASL 協(xié)商超時(shí)決定默認(rèn)比較久。我一般會(huì)在連接前設(shè)置環(huán)境變量LIBVIRT_DEFAULT_URI同時(shí)把域名解析和連接放到 Qt 的QRunnable里執(zhí)行界面等 8 秒還沒(méi)返回就提示用戶檢查網(wǎng)絡(luò)。日志方面libvirt 默認(rèn)只打印virError到 stderr你可以設(shè)置LIBVIRT_LOG_FILTERS來(lái)控制export LIBVIRT_LOG_FILTERS3.libvirt 4.libvirt.qemu export LIBVIRT_LOG_OUTPUTS1:file:/tmp/libvirt_qt.log3表示只記錄 warning 級(jí)別的 libvirt 全局日志4.libvirt.qemu表示 qemu 驅(qū)動(dòng)單獨(dú)記 debug。這個(gè)區(qū)分很重要全局日志寫太多會(huì)把文件撐爆qemu 驅(qū)動(dòng)的 debug 才是排查 XML 生成問(wèn)題的地方。3. 域?qū)ο蟛僮鲝?XML 定義到生命周期封裝連接建立之后下一個(gè)要處理的是域domain的增刪改查。libvirt 把所有虛擬機(jī)定義抽象成 XMLqt-virt-manager 也需要按照這個(gè)思路設(shè)計(jì)數(shù)據(jù)模型——不要自己發(fā)明結(jié)構(gòu)體存虛擬機(jī)配置直接把 XML 當(dāng)作源數(shù)據(jù)界面只是它的視圖。3.1 用 XML 定義一個(gè)最小可運(yùn)行的 KVM 域一個(gè)最小域定義長(zhǎng)這樣domain typekvm nameqt-demo/name memory unitKiB2097152/memory currentMemory unitKiB2097152/currentMemory vcpu placementstatic2/vcpu os type archx86_64 machinepc-q35-6.2hvm/type boot devhd/ /os features acpi/ apic/ /features clock offsetlocaltime/ on_poweroffdestroy/on_poweroff on_rebootrestart/on_reboot on_crashrestart/on_crash devices disk typefile devicedisk driver nameqemu typeqcow2/ source file/var/lib/libvirt/images/qt-demo.qcow2/ target devvda busvirtio/ /disk interface typebridge source bridgebr0/ model typevirtio/ /interface graphics typespice port5900 autoportyes listen127.0.0.1/ /devices /domain注意幾個(gè)參數(shù)的細(xì)節(jié)。內(nèi)存單位是 KiB2097152是 2 GiB如果你寫2會(huì)被解析成 2 KiB啟動(dòng)時(shí)直接內(nèi)存不足。currentMemory表示當(dāng)前分配量可以小于memory用來(lái)做內(nèi)存熱插拔預(yù)留。vcpu的placementstatic表示固定 vCPU 數(shù)量如果改成placementauto會(huì)讓宿主機(jī)自動(dòng)決定。虛擬機(jī)名稱我建議只用字母、數(shù)字、連字符和下劃線不要用中文。libvirt 對(duì)名稱中的非 ASCII 字符支持不徹底尤其在使用virDomainLookupByName時(shí)某些版本會(huì)返回domain not found但用virConnectListAllDomains又能看到它這就是名稱編碼問(wèn)題導(dǎo)致的索引不一致。3.2 生命周期方法封裝創(chuàng)建、關(guān)閉、重啟與強(qiáng)制結(jié)束qt-virt-manager 的生命周期操作都封裝在一個(gè)DomainController類里對(duì)外暴露的是 Qt 風(fēng)格的方法內(nèi)部再轉(zhuǎn)成 libvirt 調(diào)用// domain_controller.cpp #include libvirt/libvirt.h #include QDebug class DomainController { public: virDomainPtr domain nullptr; virDomainPtr defineFromXML(virConnectPtr conn, const QByteArray xml) { // 從 XML 定義但先不啟動(dòng) virDomainPtr dom virDomainDefineXML(conn, xml.constData()); if (dom nullptr) { const virError* err virGetLastError(); qCritical() 定義失敗: err-message; } return dom; } int start() { // 對(duì)已定義的域做啟動(dòng) int ret virDomainCreate(domain); if (ret ! 0) { const virError* err virGetLastError(); qWarning() 啟動(dòng)失敗: err-message; } return ret; } int shutdownByACPI() { // 模擬按電源鍵讓 guest 內(nèi)系統(tǒng)正常關(guān)機(jī) int ret virDomainShutdownFlags(domain, VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN); return ret; } int forceDestroy() { // 相當(dāng)于拔電源危險(xiǎn)操作需要二次確認(rèn) return virDomainDestroy(domain); } };virDomainDefineXML只定義不啟動(dòng)適合做配置校驗(yàn)virDomainCreateXML是定義加啟動(dòng)一步到位但前提是你的 XML 里沒(méi)有引用尚未創(chuàng)建的存儲(chǔ)卷。VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN是模擬物理電源鍵Windows guest 看到的是“關(guān)機(jī)”事件比網(wǎng)絡(luò)發(fā) RPC 更通用如果你裝了 qemu-guest-agent可以改用VIR_DOMAIN_SHUTDOWN_GUEST_AGENT這樣能走 guest 內(nèi)部的干凈關(guān)機(jī)流程但前提是 agent 已運(yùn)行。3.3 狀態(tài)輪詢與 Qt 事件循環(huán)不要在 GUI 線程里做阻塞調(diào)用這是我在讀這套資源源碼時(shí)最看重的一點(diǎn)。libvirt 的virDomainGetInfo和virDomainGetState都會(huì)阻塞如果直接在 QML 槽函數(shù)或 QWidget 按鈕事件里調(diào)用虛擬機(jī)數(shù)量一多界面就卡。正確做法是放到工作線程里。比如這樣// domain_worker.cpp #include QRunnable #include QThreadPool class RefreshDomainWorker : public QRunnable { public: virDomainPtr dom; void run() override { virDomainInfo info; if (virDomainGetInfo(dom, info) 0) { // 通過(guò)信號(hào)發(fā)回主線程更新界面 emit resultReady(info.state, info.nrVirtCpu); } } };這里的關(guān)鍵是QRunnable在QThreadPool里執(zhí)行得到結(jié)果后用信號(hào)槽傳回主線程。因?yàn)関irDomainPtr來(lái)自同一個(gè)連接工作線程之間如果同時(shí)調(diào)用需要保證它們操作的是不同域?qū)ο蠡蛘邔?duì)整個(gè)連接加互斥鎖。我采取的方案是連接層有一個(gè)QMutex每次調(diào)用前l(fā)ock調(diào)完再unlock性能損失不大但能避免同一連接下的未知崩潰。3.4 定義與啟動(dòng)的邊界持久域和臨時(shí)域用virDomainDefineXML創(chuàng)建的域是持久的重啟宿主機(jī)后依然存在用virDomainCreateXML創(chuàng)建的域是臨時(shí)的關(guān)閉虛擬化服務(wù)后自動(dòng)消失。qt-virt-manager 的“新建虛擬機(jī)”頁(yè)面里有兩個(gè)選項(xiàng)很多新手會(huì)把“定義”和“創(chuàng)建”混淆導(dǎo)致每次重啟宿主機(jī)后虛擬機(jī)列表變成空的。我在資源代碼里看到它把兩個(gè)操作分別做成了按鈕如果用戶選擇了“臨時(shí)域”界面會(huì)顯示一個(gè)顯眼的警告條這個(gè)交互值得借鑒。4. 顯示輸出接入SPICE 與 VNC 參數(shù)以及 Qt 窗口內(nèi)嵌的幾種做法管理虛擬機(jī)繞不開顯示輸出。qt-virt-manager 要承擔(dān)的不只是“列表管理器”它還得把訪客畫面交給用戶看。這一章我拆解顯示協(xié)議選擇和 Qt 集成方式。4.1 先選協(xié)議SPICE 與 VNC 的差異表在配參數(shù)前先做技術(shù)選型。VNC 和 SPICE 在虛擬化場(chǎng)景里的地位不一樣對(duì)比項(xiàng)SPICEVNC圖形傳輸支持多顯示器、動(dòng)態(tài)分辨率調(diào)整固定分辨率分辨率變更需要重建會(huì)話音頻原生支持音頻轉(zhuǎn)發(fā)需要額外走 PulseAudio 端口剪貼板支持雙向剪貼板依賴 viewer 實(shí)現(xiàn)通常不支持視頻編碼自動(dòng)降級(jí)編碼局域網(wǎng)表現(xiàn)好簡(jiǎn)單編碼弱網(wǎng)表現(xiàn)一般客戶端支持spice-gtk / remote-viewer幾乎所有平臺(tái)都有 VNC client如果你管理的虛擬機(jī)以 Linux 桌面為主而且宿主機(jī)與訪客在同一局域網(wǎng)SPICE 是明顯更好的選擇。但如果訪客是 Windows 且沒(méi)裝 SPICE guest toolsSPICE 會(huì)退化成 VNC這時(shí)不如直接配 VNC少一層折損。4.2 從域配置里取圖形端口和密碼解析 XML 而不是調(diào)用隱藏 API很多剛開始寫 Qt 虛擬化管理的人會(huì)去找virDomainGetGraphics這樣的函數(shù)我提醒一句libvirt 沒(méi)有這個(gè)公開 API。正確做法是用virDomainGetXMLDesc把整個(gè) XML 拉回來(lái)再解析graphics節(jié)點(diǎn)// graphics_parser.cpp #include libvirt/libvirt.h #include QDomDocument QString getGraphicsPort(virDomainPtr domain) { // 取帶安全字段的完整 XML密碼會(huì)被解出來(lái) char* xml virDomainGetXMLDesc(domain, VIR_DOMAIN_XML_SECURE); if (xml nullptr) return QString(); QDomDocument doc; doc.setContent(QString::fromUtf8(xml)); free(xml); const QDomNodeList graphicsList doc.elementsByTagName(QStringLiteral(graphics)); for (int i 0; i graphicsList.size(); i) { QDomElement g graphicsList.item(i).toElement(); if (g.attribute(type) spice || g.attribute(type) vnc) { QString port g.attribute(port); QString pass g.attribute(passwd); // 這里可以發(fā)給顯示頁(yè)面去連 return port; } } return QString(); }VIR_DOMAIN_XML_SECURE這個(gè) flag 必須帶否則graphics節(jié)點(diǎn)里的passwd屬性會(huì)被省略成空。解析時(shí)用 DOM 而不是正則是因?yàn)?XML 屬性順序可能變正則容易漏掉多graphics節(jié)點(diǎn)的情況。多顯示器虛擬機(jī)通常有多個(gè)graphics標(biāo)簽?zāi)阈枰A羧慷皇侵蝗〉谝粋€(gè)。4.3 在 Qt 窗口內(nèi)呈現(xiàn)訪客畫面三種方案第一種方案是調(diào)用remote-viewer外部進(jìn)程把它的窗口嵌入到 Qt 主界面。做法是用 Linux 窗口系統(tǒng)提供的嵌入接口把子進(jìn)程的winId塞進(jìn)QWidget::createWindowContainer。好處是實(shí)現(xiàn)簡(jiǎn)單不用管 SPICE 協(xié)議的細(xì)節(jié)壞處是跨平臺(tái)性差macOS 或 Windows 上表現(xiàn)不一致而且remote-viewer必須預(yù)先安裝。第二種方案是使用 spice-gtk 的 Qt 適配層核心類是SpiceSession和SpiceDisplay。它可以在 Qt 里直接渲染 SPICE 畫面支持鼠標(biāo)、鍵盤、剪貼板轉(zhuǎn)發(fā)。代價(jià)是你得把整個(gè) spice-gtk 庫(kù)鏈進(jìn)項(xiàng)目對(duì)資源要求較高。第三種方案是 VNC 的幀緩沖開源庫(kù)比如 libvncclient你在 Qt 里用一個(gè)QWidget的子類接收幀緩沖數(shù)據(jù)然后轉(zhuǎn)成QImage渲染。這個(gè)方案不依賴外部程序但視頻編碼和解碼全得自己處理性能瓶頸明顯。我的評(píng)價(jià)是如果只是做管理工具第一種最省事如果要做完整桌面體驗(yàn)第二種子碼流最穩(wěn)第三種只適合臨時(shí)測(cè)試。4.4 圖形參數(shù)調(diào)整autoport 與端口沖突autoportyes的意思是讓 libvirt 自動(dòng)分配一個(gè)可用端口但自動(dòng)分配意味著你不知道具體端口必須在域啟動(dòng)后再去讀 XML才能拿到真實(shí)端口號(hào)。這在拼接spice://127.0.0.1:5900連接地址時(shí)是必須的。如果你指定固定端口port5900那么多個(gè)虛擬機(jī)不能同時(shí)設(shè)置相同端口否則后啟動(dòng)的域會(huì)失敗。我在資源里看到它封裝了一個(gè)“等待端口就緒”的狀態(tài)機(jī)域啟動(dòng)后每 500 毫秒輪詢一次 XML 里的graphics端口最多等 30 秒超過(guò)就報(bào)錯(cuò)。這個(gè)設(shè)計(jì)很實(shí)用因?yàn)?QEMU 從創(chuàng)建到監(jiān)聽 socket 有延遲立即讀端口會(huì)拿到空值。5. 避坑排查連接、權(quán)限、顯示三類問(wèn)題的根因清單這一章是我把常見問(wèn)題整理成清單的部分。所有條目都遵循“現(xiàn)象 → 原因 → 解決”的順序直接對(duì)應(yīng) qt-virt-manager 里最容易踩的五個(gè)坑。5.1 連接報(bào)錯(cuò)“認(rèn)證失敗”但用戶名密碼明明是對(duì)的現(xiàn)象使用qemussh://userhost/system連接遠(yuǎn)程宿主機(jī)程序提示authentication failed但在終端里用同樣的賬號(hào)執(zhí)行virsh list --all卻正常。原因SSH 密鑰與 libvirt 認(rèn)證回調(diào)的沖突。libvirt 通過(guò) ssh 管道連接遠(yuǎn)端后如果遠(yuǎn)端 libvirtd 要求 SASL它會(huì)繼續(xù)走virConnectAuth回調(diào)但本機(jī) SSH 層已經(jīng)用了密鑰登錄沒(méi)有可交互輸入的 TTYSASL 拿不到額外憑據(jù)。解決改用已經(jīng)配置好的 SSH 密鑰組合讓整個(gè)鏈路不需要交互。在本地執(zhí)行ssh-keygen并把公鑰加到遠(yuǎn)端然后確認(rèn)遠(yuǎn)端/etc/libvirtd/libvirtd.conf里auth_tcp設(shè)為none或者與 ssh 認(rèn)證不沖突。如果你堅(jiān)持要 SASL就要確保本機(jī)有可用的 keychain 代理而不是依賴回調(diào)輸密碼。5.2 啟動(dòng)域提示權(quán)限不足但用戶已經(jīng)加入了 libvirt 組現(xiàn)象普通用戶在 qt-virt-manager 里能列出域但啟動(dòng)時(shí)報(bào)internal error: process exited或者cannot access /var/lib/libvirt/images/xxx.qcow2。原因用戶雖然加入了libvirt組但磁盤鏡像文件的權(quán)限是 600屬于 root。libvirtd 啟動(dòng) QEMU 進(jìn)程時(shí)以 root 身份運(yùn)行所以 root 自己能讀寫但用戶會(huì)話對(duì)文件的訪問(wèn)仍然被系統(tǒng)權(quán)限攔截。libvirt組的權(quán)限只管 libvirt 的守護(hù)進(jìn)程控制不管是宿主機(jī)文件系統(tǒng)權(quán)限。解決給鏡像文件設(shè)置合理的 ACL例如把/var/lib/libvirt/images下所有 qcow2 文件的組改成libvirt并給組讀寫權(quán)限。另外一個(gè)隱蔽點(diǎn)AppArmor 對(duì) QEMU 的訪問(wèn)控制可能未放行特定路徑在 Ubuntu 上需要在/etc/apparmor.d/usr.sbin.libvirtd里添加路徑規(guī)則并 reload否則啟動(dòng)會(huì)直接被拒絕。5.3 SPICE 黑屏或連接后一直轉(zhuǎn)圈現(xiàn)象虛擬機(jī)域啟動(dòng)正常remote-viewer 連接 SPICE 地址看到黑屏或無(wú)限轉(zhuǎn)圈但 VNC 連接同一個(gè)域卻正常。原因SPICE 協(xié)議在 TLS 與非 TLS 端口之間切換時(shí)客戶端用了錯(cuò)誤的連接前綴。如果你在 libvirt 里沒(méi)有配置 TLS只監(jiān)聽了普通端口客戶端卻用spice://默認(rèn)走 TLS就會(huì)一直握手失敗。另一個(gè)原因是 spice-guest-tools 沒(méi)裝guest 內(nèi)沒(méi)有 SPICE 的顯卡驅(qū)動(dòng)導(dǎo)致顯示輸出沒(méi)有推送到 SPICE 通道。解決在 Qt 代碼里拼接地址時(shí)顯式使用spice://127.0.0.1:端口同時(shí)確認(rèn) libvirt 的graphics節(jié)點(diǎn)里沒(méi)有開啟tlsPort。如果 guest 是 Windows先安裝 spice-guest-tools如果是 Linux確認(rèn) spice-vdagent 服務(wù)運(yùn)行中。我還會(huì)用virsh domdisplay去對(duì)照實(shí)際生成的地址排除端口讀錯(cuò)的可能。5.4 列表里能看到域但雙擊啟動(dòng)無(wú)響應(yīng)現(xiàn)象qt-virt-manager 的域列表能正確顯示所有虛擬機(jī)狀態(tài)顏色也正常但雙擊啟動(dòng)一個(gè) shutdown 狀態(tài)的域時(shí)UI 沒(méi)有任何反饋后臺(tái)日志也沒(méi)有 libvirt 錯(cuò)誤。原因極可能是同時(shí)連接了多個(gè) libvirt 驅(qū)動(dòng)列表展示的數(shù)據(jù)來(lái)自qemu:///system而雙擊后的啟動(dòng)操作卻因?yàn)榇a內(nèi)部 URI 寫死或變量未更新被發(fā)送到另一個(gè)連接會(huì)話。更隱蔽的是界面上顯示的域是持久域但啟動(dòng)操作調(diào)用的是virDomainCreate而不是virDomainCreateXML而當(dāng)前域?qū)ο笫菑牧斜砭彺胬锬玫膶?duì)象過(guò)期。解決在程序初始化時(shí)只維護(hù)一個(gè)全局的連接狀態(tài)值。域列表的每個(gè)條目都必須保存它所屬的virConnectPtr指針雙擊時(shí)直接使用同一條連接。還要在啟動(dòng)前調(diào)用virDomainGetState刷新一次狀態(tài)避免操作一個(gè)大緩存里已經(jīng)失效的域?qū)ο?。這個(gè)坑在虛擬化面板里非常常見尤其是實(shí)現(xiàn)了跨后端列表合并之后。5.5 狀態(tài)輪詢把界面卡死甚至是假死現(xiàn)象虛擬機(jī)數(shù)量超過(guò) 5 個(gè)時(shí)界面開始出現(xiàn)明顯卡頓數(shù)量達(dá)到 20 個(gè)時(shí)按鈕點(diǎn)擊后要等好幾秒才有反應(yīng)。原因在住線程里做了同步輪詢。virDomainGetInfo對(duì)每個(gè)域都要發(fā)一次 libvirt 調(diào)用如果虛擬機(jī)處于暫?;蜣D(zhuǎn)換狀態(tài)這個(gè)調(diào)用可能阻塞幾百毫秒。Qt 主線程一旦阻塞整個(gè)事件循環(huán)停擺表現(xiàn)為窗口無(wú)響應(yīng)。解決把所有輪詢邏輯移進(jìn)QThreadPool界面里只接收信號(hào)更新。輪詢間隔至少保持 2 秒不要低于 1 秒否則 QEMU 和 libvirt 內(nèi)部的鎖競(jìng)爭(zhēng)會(huì)拖慢原本正常的操作。我在資源里看到它還實(shí)現(xiàn)了“輪詢暫停機(jī)制”當(dāng)用戶正在執(zhí)行快照或遷移操作時(shí)自動(dòng)拉長(zhǎng)輪詢間隔減少干擾。6. 進(jìn)階技巧把域列表接進(jìn) Qt 模型層讓界面自己刷新做到這一步你已經(jīng)能把連接、域操作、顯示輸出跑通。最后一個(gè)值得長(zhǎng)期沿用的技巧是用QAbstractListModel管理域列表而不是在 QWidget 里直接 push 數(shù)據(jù)。這套模式的收益要等虛擬機(jī)數(shù)量變大、狀態(tài)頻繁變化時(shí)才能體會(huì)到模型驅(qū)動(dòng)視圖數(shù)據(jù)變化自動(dòng)通知界面代碼不用到處手動(dòng) update。一個(gè)簡(jiǎn)易的模型頭文件長(zhǎng)這樣// domain_list_model.h #include QAbstractListModel #include QVector struct DomainItem { virDomainPtr dom; QString name; int state; // libvirt 的狀態(tài)碼 }; class DomainListModel : public QAbstractListModel { Q_OBJECT public: enum Role { DomainNameRole Qt::UserRole 1, StateRole, DomainPtrRole }; int rowCount(const QModelIndex parent QModelIndex()) const override; QVariant data(const QModelIndex index, int role) const override; QHashint, QByteArray roleNames() const override; private: QVectorDomainItem m_items; };核心思想是重寫data()方法讓角色返回對(duì)應(yīng)字段。當(dāng)輪詢線程拿到新狀態(tài)時(shí)不要整個(gè)模型重置只更新對(duì)應(yīng)行并發(fā)送dataChanged信號(hào)。這樣列表視圖只重繪變化的行刷新成本大幅降低。我在實(shí)現(xiàn)時(shí)會(huì)額外加一個(gè)state到顏色的映射比如 1running用綠色5shutdown用灰色讓用戶一眼看出運(yùn)行狀態(tài)。從那以后我每次把 qt-virt-manager 部署到新環(huán)境都強(qiáng)制走一遍流程先驗(yàn)證virsh -c qemu:///system list --all能看到正常列表再啟動(dòng)一個(gè)測(cè)試域再用 qt-virt-manager 連接并執(zhí)行一次啟動(dòng)和關(guān)閉最后用virsh domstate反向校驗(yàn)界面顯示和實(shí)際狀態(tài)一致。這套流程給過(guò)我很多次后悔藥也讓我少背了很多個(gè)“面板顯示正常但虛擬機(jī)起不來(lái)”的黑鍋。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲国产婷婷在线播放| 免费操逼91| 色九九九九九九| 啊啊啊轻点在线观看| 国产欧美日韩在线观看麻豆传媒公司| 欧美少妇一区二区三区| 欧美人妻制服| 国产大学生高潮在线播放| 嗯嗯嗯啊啊啊操的我好爽| 999国产精品999久久久久久| 91爆操视频| 91美乳| 91性网| 一本精品日本在线视频精品| 熟啊v色欧美热| 男女一进一出视频久久| 九九九九九九九精品视频| 欧美九一精品久久久熟妇| 亚洲天堂欧美| 91亚州日韩高清| 职场同事知名国产国产精品久久欧美日韩 | AV在线播放网址| 夜夜操青青草| 日日噜噜夜夜久久亚洲一区二区| 好色综合| 99国产天美| 凹凸视频在线一区二区| 67914在线精品观看| 大逼色网站| 欧美日本国产日韩激情视频| 久久国产999| 久久久久久久久久va| 免費人妻夜夜爽天天爽爽一区| 欧美春色| 亚洲综合97中文网| 日韩偷拍一区二区三区| 99热免费精品| 操我无码| 伦理片秋霞免费影院| 伊人精品久久网站| 欧美中文字幕精品人妻| 精品人妻少妇| 97久久精品国产| 乱日视频| 人人人摸人人| 亚洲二区精品在线观看| 精品久久久久久无码| 蜜臀va69| www.久久99| 欧美色图99| 91chinese在线| 欧美丰满少妇交换91欧美精品| 18禁超污无遮挡无码免费网| 超碰欧美97| 精品无码一区二区| 八戒无码国产午夜福利| 91狠狠综合久久| 五月婷婷六月丁香| 凹凸久久人人| 人妻熟女一区二区在线视频| 精品久久久av| 欧美性爱免费短视频| 九七毛片九九毛片| 丁香六月啪| 亚洲国产日韩精品久久久| 日本色婷婷| 麻豆天美传媒毛片| 久久久国产精品亚洲精品| 国产在线激情视频| 91久久国产精品| 九九九久千久久激情蜜桃在线看| 亚洲1区2区三区高清中文字幕| 精品妇操一区二区三区| 激情干在线| 亚洲日韩美女丝袜美腿人妻视频| 九九国产热| 久久久夜夜嗨免费视频| 亚洲全色网| 精品乱码久久久久| 熟女丰满人妻一区| 99热99在线播放激情| 国产精品久久泡妞网站| 在线观看啊啊啊啊啊| 欧美日韩情色一区二区| 国产伦精品一区二区三区在线观| 亚洲欧洲无码bt精品合集| 日韩精品一区,二区 九九...老司机| 婷婷成人五月天| 女人被男人桶爽视频网站| 精品少妇99| 老鸭窝黄色视频网站| 精品国产精品一区二区| 久久av一级av少妇av高潮| 国产精品乱码久久久久| 美女天天干| 欧美无圣光在线| 五月丁香色色网| 亚洲国产ⅴ高清在线观看| 久久久555| 国产精彩女在线观看视频| 日日日日日| 欧美日韩国内不卡| 91狠狠综合| 97视频一区| 69久久久久久久久久久久久| 很黄很污的免费网站| 国产精品免费视频不卡| 久久直播国产| 岛国片在线播放| 天天躁日日躁狠狠躁| 97中文字幕一区| 欧美色图亚州激情| 男人亚洲91首页在线| av凤凰久久久| 中文字幕一区av| 在线观看国产黄色| 家庭乱伦网站国产| 精品一区二区成人| 强奸乱伦亚洲第一页| 青娱乐二区免费| 张柏芝国产一区在线观看| 久久精品无码一区二区三区| 91中出视频| 精品人妻视频一区二区在线播放 | 91九色精品熟女内射| 玖玖爱免费观看视频| 韩日性爱av| 99这里只有精品国产| 亚洲在线网站| 日韩精品在线放| 久9re热视频这里只有精品| 97视频免费播放| 天天爱天天操| 男人的午夜天堂| 91欧美经典| 欧美日韩狠狠爱| 九九九九一区| 欧美日韩中文字幕人妻| 高清在线不卡一区二区 视频| 你懂的在线观看区国产| 中文字幕日韩电影人妻| 日韩国产成人自拍视频| 国产精品网址| 1769一区二区| 亚洲另类综合欧美| 国产精品欧美激在线| 亚州熟妇精品| 久艹日日日| 岛国黄片网站| 久久激情亚洲精品无码?V| 亚洲 一区二区 自拍| 欧美成人黄网色网站| 欧美综合娱乐久久| 岛国成人av在线播放网址| 99综合视频一体| 亚洲综合一区二区| 水澄无码AV| 佐山爱中文字幕| 久久妇| 熟女精品日韩一区二区三区 | 中出20p| 欧美高清在线| 欧美操人视频| av资源在线观看少妇| 久久婷婷五月天| 欧美 中文字幕 一区| 性性久久| 日韩精品人妻| 激情综合网五月婷婷| 97硬碰| 老鸭窝在线视频播放| 亚洲日韩国产精品| 丰满的三级少妇欧美久久久| 欧美A√综合网| henhen91| 国产黄色 A 片免费看| 中文字幕精品丝袜| 超碰人妻97| 欧美黑人精品一区二区| 91久久国产综合精品| 大香蕉淫人网| 99久久99久久综合| 91中出在线| 亚洲最大成人a毛毛片| 亚洲中文字幕噜噜噜久久久| 久久99久久99精品天美传媒棢·纸:. | 老鸭窝亚洲毛片| 欧美色图99| 中文字幕人妻丝袜| 青青草依人大香蕉| 久久九九国产精品| 国产美女91| 久操网无码在线| 欧美亚男人的天堂| 91精品人妻偷情| 精品四五区| 国产美女自拍视频| 亚洲午夜免费狠狠干| 干妹子| 333kkkk·亚洲com久久| 97jingpin| 人人妻人人爽 97人人看碰人免费公开视频| 91久久精品国产| 亚洲天天操| 色噜噜综合在线| 蜜臀久久99精品久久久久久成人小说 | 国语精品对白| 激情综合婷婷| 天天摸天天操视频| 长长久久88视频| 欧美色九九| 丁香五月激情五月| 精品无码久久久久久久久果冻糖心| 激情综合五月婷婷| 97视频在线看| 亚洲熟女一区| 看一级黄色视频| 熟女少妇一区二区三区| 天天爱天天操| 91狠狠| 日本免费一区二| 麻豆国产精品午夜视频| 日韩9999| 婷婷色在线| 蜜臀Av一区二区三区| 97人人操人人干| 欧美宗合网| 国产精品交换一区二区| 377p欧洲日本亚洲大胆| 91熟女视频网| 久热久一区二区三区| 免费看黄片现成| 91 丝袜在线观看| 日韩九区| 亚洲黄片免费在线播放| 91在线丝袜| 久久99精品视频| 欧美激情综合网| 国产精品久久久久绯色| aⅴ日韩成人电影av在线免费看av大全| 少妇特黄一区二区三区| 97超碰69| 在线看片国产精品每日更新| 国产精品不卡高清在线观看| 久草在| 9l视频自拍9l九色成人| 日本黄大片在线观看视频| 男人的天堂日本东京热| 九九无码久久精品视频| 老司机射| 国产在线不卡导航| 97人亚洲综合字幕| 亚洲清纯综合| 精品999日本| 美国一区二区免费视频| 熟女探花啪啪| 茄子社区国产精品| 麻豆黄四叶草网站| 在线播放中文字幕| 在线中文字幕极品av| av影片在线观看不卡| 九一综合网| 日韩在线女优天天干| 中文一区在线视频| 香蕉国产精品麻豆亚洲欧美日韩| 91精品婷婷国产综合久久| 无码99| 亚洲AV无码国产成人| 日韩精品资源专区二区| 青青青青青手机视频| 91老熟女老女人国产老太| 天天综合网一91网| AV大香蕉| 色婷婷五月综合激情中文字幕| 大香蕉伊人网| 天美传媒婬乱在| 看看日B真人视频| 久久综合日韩亚洲欧美| 色九月婷婷| www.91理论| 狠狠久久手机视频精品| 亚洲97综| 亚洲网站一区二区在线| 97国产精品| 色色97爱| 91综合天天| 日韩中文字幕精品一二三事国产精品| 96国产污污污丝袜| 亚洲欧美一区二区不卡视频播放 | 日本大香蕉综合网| 精品无码一区二区三区| 天天大干大香蕉| 麻豆伊人网| 色第一页| 午夜福利区| 亚洲色图a| 国产天美欧美| 西西美女视频网| 操操操操操操| 欧亚日韩综合精品国产| 亚洲电影91| 综合欧美日韩在线| a片亚洲一本通视频| 欧美色天堂网在线视频| 青青草无码视频| 日本一级不卡一二区| 日韩av电影网站| 久久成人网站| 熟女少妇视频| 亚洲中文字幕熟女| 国产日韩手机视频在线| 欧美一区二区三区四区综合| 久久久精品无码亚免费| 久久久久婷婷| 99re综合伊人| 亚洲同性aV综合| 男人的天堂1024| 国产久久久久久| 亚洲人成在线放东京热| 色黄污美女啪啪啪免费网站| 欧美精品成人在线播放| 强奸a片网| 97色干| 日韩精品.久久精品.AV女优.天美传媒| 熟妇人妻精品一区二区视频色欲| 内射日韩大臀美女| 亚洲熟女一区| 99AV| 欧美亚洲自拍另类人妻| 国产免a费看黄片在线| 97国产高清视频在线观看| 国产一区二区三区影片| 成年男人的天堂| 精品九九九九九九九九九| 日本熟妇自慰性高潮一区二区三区| 国产97av| WWW啪啪的com| 色色综合网站| 中国黄色特级精品一区二区三区片| 又黄又硬又粗又长国产视频| 日本αv| 国产九九九九九九九九| 精品久久久九九九孕妇| 超碰9 7女人 | 国产中文字幕在线观看| 亚洲无 码A片在线观看麻豆| 中国一级特黄大片护士| 亚洲无套久久嗯嗯| 97色操| 免费观看国产小粉嫩喷水精品午| 色情成人五月天| 亚洲淫乱骚妇AV| 亚洲亚洲亚洲天堂天堂| 亚洲熟伦熟妇AV无码春色| 日韩国产成人自拍视频| 超碰调教97| 一区二区不卡免费| 亚洲一区中文精品| 九九热精品视频在线观看| 久久久久9999妇女| 黄色无码高清黄色无码网站| 欧美成人一区二区三区在线播放| 蜜臀人妻少妇久久在线观看| 91亚洲情色| 操逼片中文| 内射中出日韩在线观看视频| 精品国产99999| 日韩色| 青青11操操操操操操操操| 精品一区二区久久| 欧美探花网| 五月天黄色av| 久久春色| a网站免费观看| 熟女高潮合集-永久久久-成人AV | 嗯嗯啊啊好疼| 中文字幕91综合| 蜜桃网熟妇| 尤物网址| 乱操9999| 日韩高清黄片| 大香蕉AV在线| 欧美青青视频| 综合五月天| 波多野结衣AV无码一区| 欧美性色欧美| 人人超碰在线观看黄| 尤物AV免费网站| 成人 日本A片无码8888| 天天看天天综合成人网| 丁香婷婷五月| 大色综合| 99青草| 国产熟女无套内射| 色情综合| juliaann欧美丝袜办公室| 亚洲精品精品一区二区| 久操av在线| 囯产操逼片| 中文熟女五十乱码在线| 成人网站 免费观看| 欧洲精品一二三在线| 奇米四色网| 欧美白嫩在线放| 看免费的黄片| 成人欧美日超碰| 亚洲免费成人精品电影| 日韩欧美中文字亚洲慕| 中文字幕jul-617人妻熟女| 97久久久久久久久久| 任你爽视频| 欧美se综合| 素人播放一区| 欧美在线永久天堂| 人人摸人人舔一区二区| 五月天婷婷综合网| 久久久新亚洲AV| 二区熟妇韩日| 操逼视频国产无套| 久久久99999久网站| 少妇啪啪自拍| 91无摭挡| 亚洲91少妇| 青草综合| 亚洲欧洲日产国产综合网| 人人操人人摸人| 欧日韩一二三f区| 啪啪啪综合网| 欧美裸体美女日麻屄| 国产精品制服丝袜中文字幕日韩一区二区三区 | 九九九999久久久网站| 99热精品在线播放| 99亚洲国产精品色一区二区三区| 日日A∨| 亚洲中文日韩精品| 夜夜嗨视频| 自拍欧美| 人妻少妇视频在线播放| 99热91| 人妻天堂网| 久9久| 91呆哥人妻| 91殴美| 1二区9| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 探花一区二区三| 啊啊啊轻点在线观看| 性站| 思思热免费视频观看| 神马麻豆福利院| 欧美猛交黑寡妇中文字幕| 欧美做爰无码A片视频| 亚洲九九视频| 欧美亚洲AN| 国内三级自拍小视频在线观看| 国产女人视频三四五区| 久操| 熟女欧美日韩综合婷婷| 国产99热| 91精品无码人妻系列| 少妇被c 黄 免费观看| 足交视频老司机| 国产在线不卡导航| 丁香五月激情综合国产| 国产二区视频在线观看电影| 亚洲狠| 色97欧美| 四虎精品亚洲| 97chaopengongkai| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 97在线精品| 日韩在线一区高清在线| 综合网 欧美| 天天综合网视频91| 久久九精品| 亚洲欧美性生活| AV九九| 黄色欧美性爱视频| 中文字幕亚韩| 国产AV天美传媒一区二区三区 | 91老司机在线视频免费观看| 立川理惠加勒比无码| 国产午夜精品理论片一二三区区| 91岛国动作片| 97精品在线视频| 激情四射熟女丝袜| 老司机免费视频在线91| 长久操视频| 欧美中字二区| 成人天天看站长推荐| 欧美18禁91| A V少妇特黄三级| 自拍鲍鱼一区在线高清观看免费| 色色色色网站| 久久久精品视频免费观看| 中文字幕一区二区免费在线| 国产精品亚洲无码| 大香蕉黄色一级片免费看| 99婷婷一区二区| 欧美亚洲今日在线| 婷婷丁香人妻 | 99啪啪| 中文字幕在线观看第二页| 蜜桃成人1区2区3区| 东京太热久久久| 艳美熟妇先锋一二三区| 伊人影院在线理论播放| 欧美人妻中出| 免费草草草草草视频| 中文字幕AV片| 97在线播放| 夜夜久久久| 久久黄人人爽视频| 狠狠久久手机视频精品| 天天射天天| 黑人精品一区二区在线播放| 国产日韩精品suv| 永久免费av无码网站国产app| 精品日韩人妻视频| 一起草日韩| 操逼网站视频漫画国产| 26uuu国产| 91在线丝袜| 亚州性色| 日韩免费三级黄片电影| 操逼不卡中文字幕| 五月天丁香| 久久色一区| 黄色不卡视频| 午夜亚洲| 国产精品久久久久久久久久梁医生| 日韩无码精品综合久久| 一区二区三区机械有限公司| 九九九网页| 天堂射| 99av| 国产精品黄色三级av| 国产精选三级在线观看| 大香蕉国产中文自拍| 久久久久久久六六| 亚洲美女精品九九视频| 在线一道啪| 激情综合五月| 久久綜合很很很| 黄色工厂这里只有精品| wwwxxx日本爽| 99免费在线视频| 精品一久久久| 亚洲成aⅴ人片不卡无码| 国产精品一区二区亚洲人成毛片| 无码男人天堂| 欧美碰碰综合色| 中文字幕人妻资源在线| 欧美人人AAA| 少妇人妻精品| 久久久555| 国产av强奸美女| 亚洲情色第一页| 亚洲自拍欧美色综合| 欧美综合亚洲综合| 偷看洗澡一二三区美女| 国产美女91视频| 超碰吊日色| 强奸乱伦资源| 91伊人大香蕉| 97久操| 天堂涩涩| 亚洲国产精品久久久男人的天堂| 91美腿丝袜在线观看| 99热欧美| 国产精品久久久三级无码| 国产精品无码av嫩草| 三男一女不戴套的A片| 天天综合欧美黑人| 亚洲情色 欧美| 神马视频久久久久久| 亚洲国产尤物yw在线观看| 香蕉大久久久| 人人操人人干xxx| 成人一级性爱| 岛国AV一区二区电影| 青青草这里只有精品| 91天天看| 日韩人妻操B| 超碰97日韩| 8050无码八戒| 99视频自拍区| 凸凹视频在线观看| AV色五月天| 亚洲国产婷婷在线播放| 国产精品色哟哟| 免费1级a做爰片观看| 一个人在线看的黄色电影网站| 久久久熟女一区| 上床不卡网站| 尹人免费观看视频在线| 91色综合激情| 超碰国产精品无码| 四虎免费看黄| 国产毛片久久久久久久| 中文欧丝袜诱惑| 日韩精品1区2区中文字幕| 久草热制服丝袜在线观看| 亚洲AV秘 精品久久老牛影视| 玖玖资源中文字幕制服丝袜| 日韩免费在线视频观看| 色臀aV| 殴美在线AⅤ| 四虎免费视频| 久久草草欧美精品| 免费精品无码一级毛片牛牛影视| 乱色视频中文字幕| 久久专区| 免费久久9999| 99自拍视频在线观看| 蜜臀Av一区二区三区| 大香蕉97久久| 午夜亚洲国产理论秋霞| 97热视频在线观看| 午夜免费福利视频一区| 蜜臀99久久精品久久久懂爱| sss视频华人在线| 欧美亚洲第一页| 亚洲春色欧美| 中文字幕 av v| 日小BB小视频| 99热这里都是精品| 一个人在线看的黄色电影网站| 欧美十八禁导航成人| 人妻夜爽夜夜爽| 日韩一级二级| 把腿张开老子CAO烂你| 中国91AV| 操逼内射干逼白丝91| 人人看人人摸人人色| 欧美色网络| AA丁香综合激情| 久久精品日韩| 麻豆视频一区二区| 道久久五香丁月婷婷激情综合| 午夜福利成人免费视频| 天天看天天日天天操| 台湾佬中文娱乐网久久久久久久久久com | 亚洲精品久久久久久久久豆丁网| wwwxxx日本爽| 国产精品乱码久久久久| 色超碰综合| 久久久精品日本一道| 日本三级一区二区 在线| 韩日欧亚a级| 久久人爽| 色女网日韩| 色官网在线| 午夜视频好爽啊| 亚洲男人天堂手机版| 1956日韩精品| 国产精品电影| 久久91精品国产9丨久久分亭| av影片在线观看不卡| 国产日产欧产美韩系列麻豆免费| 日本天堂网| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 色吊丝 日日骚 清纯唯美| 久久偷拍人| 天综合网| 九九Av| 日本岛国黄色网址| 免费作爱一级视频| 国产Aα| 澳门人妻久久| 91超碰人人操| 欧美一级黄片免费播放| 日日操丁香五月天| 曰韩人妻中文字幕在线| 日韩久射综合| 久超碰这里只有精品| 青草视频人妻在线观看| 欧美成人亚洲精品| 久久久久无码| 亚洲欧洲视频小说在线观看| 嗯啊不要在线| 夜夜嗨AV一区天天| 亚洲国男人的天堂| 中文字幕在线观看视频www| 国产三级电影免费观看| 强奸乱伦AV网站| www.伪伪| 人人妻人人爽 97人人看碰人免费公开视频| 91久久久久久久久18| 久久久久久久九九九九| 玖玖久久久| 亚洲欧美人妻| 亚洲综合91| 97碰| 国产黄色影片在线观看| 国产成人 综合亚洲 天堂| 久久草草亚洲蜜桃臀| 综合久久久久久久久91| 日韩免费在线观看不卡| 91色人妻| 2019久久久久久久久福利| 人妻丝袜美腿中文字幕| AVE乱伦| 亚洲成人在线高清| 在线看片国产精品每日更新| 美国aaaaa一级黄片| 18禁美女裸体无遮挡啪啪| 日韩精品亚洲专区在线影视| 欧美日韩性爱操大逼| 丁香六月婷| 国产欧美伊人| 欧美熟女激情| 91美女視頻| 日韩无码服务区| 精品午夜福利| 日本熟女不卡视频| 无码聚合| 婷婷五月天成人网| 精品免费一区二区三区在线亚洲人成| 老熟女区| 中文熟女五十乱码在线| 亚洲综合20p| 9国产超碰| 久久黄色性爱视频| 国产热av| 日本精品中文字幕视频| 色娱乐色呦呦夜夜夜夜av| 熟女一区二区| 在线看免费无码AV天堂的| 这里都是精品在线观看| 69超碰综合| 亚洲在高跟鞋自慰久久在色线| 91影视亚洲| 超碰久久精品| 亚洲AV无码乱码| 91精品微拍福利| 国产综合操逼高清| 宅男午夜在线视频| 97精品视频在线播放| 香蕉视频精品亚洲一区二区三区在线播 | 国内毛片欧美香蕉精品| 免费看国产曰批40分钟怎么下载| 一级黄色影片| 1204金沙人妻懂旧版免费| 天天性射网| 俄罗斯一区二区视频在线观看| 欧美在线观看综合国产| 春色校园综合网| 人妻天天爽夜夜爽2| 亚洲资源一区| 国产午夜激片Av毛片不卡| 大香蕉操久久| 亚洲人妻久久久| 色欲久久久久综合网| 色色激情五月天| 天天看高清麻豆| 欧美综合另类| 欧美在线播放aaaa| 欧美韩国你懂得在线| 国产精品久久久久久久久AV大片| 天天综合色电影| 香蕉大久久久| 国产高清无码一区三区二区| 吻戏激情性巴克| 密臀国产在线| 黄色av网站在线播放| 欧美精品丝袜久久久中文字幕| 97欧美资源| 人人操,操人人| 亚洲色资源| yaouchengrenav| 色老汉玖玖爱| 久久香蕉国产线看观看亚洲女人 | 精品人妻一二三四区视频| 国产福利精品98视频| 人妻AV 中文字幕的| 中文无线日韩一区| 日日骚中文字幕| 五月香婷婷| 2019男人的天堂| av无码精品久久久久| 婷婷激情一区二区三区俺也去| www国产无码| julia高潮后不停追击中出| 91伊人大香蕉| 黄片免费视频2019| 蜜伊人色综合97| 国产 日韩 欧美一区| 992这里有精品| 97久久久久| 色婷婷色99国产综合精品| 日韩不卡码| 久久国产乱子伦精品免费女人| 97色论| 国产极品精品美女视频| 久久只有精品一区二区三区| 99久久久久久亚洲精品不卡| 伊人色综合超碰| 久久精品国产亚洲AV高清演员表| 日本不卡码黄色| 高潮毛片无遮挡高清免费| 一区二区三区日韩欧美| 囯产精品久久久久久久久久梁医生 | 免费99精品国产自在在线| 国产综合网站在线播放 | 熟女人妻一区二区三区| 视频在线97| 五月婷婷激情网| 日本高清视频在线观看黄已三辽| 精品亚洲国产成人AV制服丝袜| 久久久熟女一区| 天天爽天天| 熟女人妻一区二区三区免费看| 熟女在线视频| 国产精品一区二区亚洲人成毛片| 日韩无码久久熟女一级片| a v网站在线播放| 超碰天天操| 亚洲精品无码少妇久久| 日本大香蕉综合网红本杳社区| 人妻久热在线| 18禁无码永久免费无限制| 91视频综合在线| 色综合九九| 人人操人人摸人人骑| 精品久久久久久久久久久久| 日本韩国国产精品一区| 九九九九一级| 成人AV在线电影| 无遮挡男女激烈动态图| 99久在线精品99re8a| 超碰人人干| 亚洲色欧美| 日日摸日日碰| 丁香五月天啪啪| 亚洲无码太久| 亚洲精品 欧美97色色| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 中国AV美女| 蜜臀th| 黄色片大香蕉| 另类亚洲一区二区三区| 91无码人妻精品一区二区三区蜜桃| 69AV女优男人的天堂| 日韩乱伦影音先锋| 伊人国产成人av网站| 日本九九久久99| 素人播放一区| 手机在线视频国内精品| 欧美色图综合| 国产成人精品一区| 96AV久久久| 簧片免费看视频| 小说区 图片区色 综合区| 亚洲素人综合| 欧美色997| 屌逼传媒| 中日韩熟女| 乱抡国产91| 亚洲天堂另类| 91久久久久久久| 四虎 精品 WWW| 国产成人网址| 免费看黄视频亚洲网站| 欧美真人抽搐一进一出gif | 天美国产三级传媒| 嫖老熟女A片一二三区| 国内亚洲高清无码| 久久久久久久9| 国产av色网| AV99热18这里只有精品| 97免费在线观看| 亚洲国产亚洲天堂| 欧美伦乱爱| 亚洲色堂免费视频| 95人妻爽爽人人做人人澡 | 一区二区三区高清| 99这里都是精品| 黑人精品久久97| 性色国产东北露脸精品视频| 91neishe| 看日韩美女二区三区免费操逼视频 | 亚洲 另类 丝袜 自拍 动漫| 欧插网站| 久久久久久中文字幕中文字幕最新| 精品性爱一区二区| 日韩三级天堂在线观看| 超碰色男人操熟女| 色操逼网| 亚洲影院无码在线| 亚洲 欧美 日韩 国产一区二区| 漂亮人妻被强中文字幕hd| 美女爽爽爽刺痛洞洞| 91欧美另类| 国产精品久久久久久久免牛肉蒲团| 嗯阿好爽好紧| 午夜精品久久久久久久99热影院| 一区久久久二区| 99热99色| 性色一线| 国产中文字幕曰本毛片| 亚欧性爱ab| 国产一区二区三区白丝| 最新岛国大片| 97在线精品观看视频| 日韩无码黄色片| 国产成人手机视频激情| 欧亚性爱啪啪| 國產尤物AV尤物在線觀看 | 偷拍盗拍亚洲色图图片| 国产精品9999| 香蕉欧美| 久艾草在线精品视频在线观看| 97人人夜夜精品视频| 免费观看性欧美一级| dy888午夜老子影视达达兔| 天天射天天操天天干天天吃2018| 26uuu久久| 草草影院日本第一页| 性影在线视频| 久久九色| 久久美女国产| 视频不卡中文字幕| 后入式999| 夜精品久无码| 午夜精品久久久久| 精品久久久久9999| 精品女人999| 人成午夜免费大片| 午夜男人av| 一级二级三级黑人无码| 友优传媒精品在线一区二区| 久久国语| 久久熟妇五十路一区| 麻豆AV短剧| 久插综合| 中文字幕精品区先锋资源| 91美女在线| 九九九偷拍| 九九热九九| 91精品综合久久久久久五月丁香| 青娱乐亚洲热| 96久久科窝| 极品后入免费视频| 激情综合 婷婷五月 红杏| 好吊色综合| 亚洲成人无码影院| www久| 欧美激情视频一区二区三区不卡| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 黑人精品XXX一区一二区| 色在线亚洲视频www| 久久xxxx| 青青草色插素人| 婷婷九月丁香| 日本孕妇一区二区视频操逼免费看 | 曰韩av中文字幕专区| 熟妇人妻精品一区二区视频色欲| 夜精品久无码| 99999亚洲| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 99日精品欧美国产| 人人摸人人干| 插插综合网天天影视网| 51久久夜色精品国产麻豆| 激情九月婷婷| 亚洲欧美精品久| JuliaAnn丝袜熟女系列| 夜夜天天噜狠狠爱2021| 人妻丝袜无 码视频专区| 日韩强奸av| 亚洲乱熟女一区二区三区大香蕉| 九九综合| 超碰久久网| 免费av在线播放二区| 欧州色图区| 少妇精品久久久八区九区| 亚洲成aⅴ人片不卡无码| 久久五月天婷婷丁香中文字幕| 久久天天摸| 啊啊啊在线观看免费视频| 视频不卡中文字幕| 大香蕉AV在线| 97超色| 久久riav中文精品| 青青草在线成人视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 97久久精品亚洲| 91亚洲丝袜熟女| 人人操人人插人www| 激情文学欧美| 国产精品96| 一区二区 韩日AV| 99视频自拍区| 国产精品国产拍高清AV| 后入式视频国产自| 中国大陆国产高清AⅤ毛片| 后入内射蜜桃臀| 黑人娇小av在线播放| 激情综合网五月婷婷五月天| baiduhicn.com。| 午夜无遮挡男女啪啪视频| 91逼逼女人91| 日本精品一级二级三级| 国产女人高潮视频| 天天噜| 婷婷色在线| 97网色| 99热91| 91国模| 亚洲高潮少妇| 亚洲 欧美综合| 成人av免费观看| 91黄射| 少妇滛荡视频| 四虎884| 婷婷亚洲综合| 日韩天天综合| www久| 色五月av| 久久久噜噜噜久久久| 国产精品99999| 色鬼在线综合| 日韩av免费一级电影| 媚薬在线视频麻豆| 人人干人人操人人..com| 中出在线视频| 99无码视频| 亚洲综合20p| 久久天天躁日日躁狠狠躁 | 日本高清视频在线观看黄已三辽| 国产一级αv免费看片| 亚洲 日本 不卡| 69超碰综合| 日韩黄片视频试看| 久久久九| 99这里有精品视频| 97精品一区二区视频| 自拍视频大全亚洲专媒视频/一区二区三区| 日日日日做夜夜夜夜无码| 在线亚洲丝袜视频网站| 九九色图| 欧美午夜熟妇黑人精品91| 插入综合网| 手机在线播放国产福利| 久久9999 | 一区二区免费电影久久| 91丝袜在线视频| 最新中文字幕在线亚洲| 亚洲综合在线第一页| 国产精品2020| 国产成人精品日本视频| 日本Suv精品一区二区| 久久、1234| 亚洲aV无码成人在线观看| 亚洲日韩美女丝袜美腿人妻视频| 国产91精品久久久久久久网曝门| 亚洲天堂人妻熟妇视频| 男人久久天堂| 国产av热热色| 熟妇人妻精品一区二区视频色欲| 国产精品久久久久久久电影渣男| 无码人妻系列少妇| 96AV精品| 日韩美女操b| 美女久久久| 好看的久久不射无码影视影院| 丰满人妻一区二区三区| 天堂俺去俺来也www久久婷婷| 久久久久久九九九九九九| 69AV女优男人的天堂| 性开放中文AV高清无码免费看| 亚洲图片欧美| 操淫穴亚洲五月丁香| 中文字幕 一区二区 亚洲无码| 黄色性爱网网| 测评在线观看AV| 玖玖综合视频| 久久97资源 网| 亚洲色图久久精品蜜| 欧美视频边做饭边橾| 韩国一级做a久久久久| 亚洲精品 欧美97色色| 九九热五区| 日本曲间由美性生活片| a v网站在线播放| 女人天堂av在线播放| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 熟妇激情| 欧美一区二区在线资源| 中文字幕啊啊啊在线观看视频| 人人摸人人摸人人干| 欧美成人一级麻豆| 日韩十八禁| 久久精品91| 激情五月天校园春色网| 熟女天天干| 国产欧美美女免费观看视频| 五月丁香激情综合网| 国产亚洲日韩在线三区黑人| 波多野结衣之双飞调教在线播放| 久久精品无码一区二区三区| 五十路人妻在线| 少妇第一页| 色 婷97| 97超级久久强资源| 天天日天天舔天天喷天天射| 亚洲国产成人精品无码专区| 久久成人午夜精品影院| 97在线观看播放视频| 一级性爱视频免费观看 | 成人久久精品| 久久亚洲人妻| 91人妻视频| 欧美中字二区| 91性高| 蜜臀99999| 亚洲精品1区| 亚洲一本色码中文字幕| 性生活无遮挡纯毛片在线看| 狠狠搞 亚洲91| 天天干天天日天天射黄色大片| 美女操逼A A| 婷色五月| 丁香五月大香蕉| 你懂得91| 九九色热| 亚洲欧洲偷拍一区| 小少妇| 插入综合网| 亚洲老熟妇xxx| 色97| 一区中文字幕二区日韩| 欧洲中文字幕| 秋霞一区二区三区四区五区六区七区| 97色色国产视频| 激情亚洲天堂| 久草精品一区| 欧美精品,四区。五区| 日日躁天天躁狠狠躁| 天天日天天干少妇日| 亚洲高清自拍| 亚洲男人久久综合天堂| 99re公开精品免费视频 | 蜜桃臀一区二区三区久久| 亚洲玖玖爱| 色悠久| 亚洲欧美日韩免费观看| 乱伦一区二区三区‘| 久久香蕉综合一本到3atv| 国产精品久久久久久久久AV大片| 日本99视频| 精品国产乱码久久久久久影片| 大香蕉十区| 天天影视之亚洲综合网| 久热网| 伊人网免费视频| 国产成人亚洲精品无码古代早漏男| 亚洲一卡2卡3卡4卡乱码网站 | 亚州色国|