免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

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

基于Qt與libvirt構(gòu)建跨平臺虛擬機(jī)管理器:從連接到顯示 簡介qt-virt-manager 是基于 Qt/C 開發(fā)的圖形化虛擬機(jī)管理工具面向系統(tǒng)管理員與運(yùn)維開發(fā)人員解決異構(gòu)虛擬化平臺之間管理分散、操作門檻高的問題。它通過統(tǒng)一界面覆蓋 VMware、LXC、BHYVE、Libvirt、Hyper-V、OpenVZ、QEMU-KVM 與 VirtualBox 等主流技術(shù)用戶無需在不同客戶端之間來回切換即可集中創(chuàng)建、刪除、啟動、停止和監(jiān)控虛擬機(jī)并進(jìn)行資源分配、網(wǎng)絡(luò)配置、克隆、備份與遷移等操作。壓縮包大小約 3.08MB便于快速獲取目前已有 353 人學(xué)習(xí)瀏覽。針對各底層虛擬化技術(shù)Qt 界面下的操作思路對理解 LXC 容器與 BHYVE 原生虛擬化的差異、Libvirt 抽象層的作用、QEMU-KVM 硬件虛擬化加速原理以及 Hyper-V/OpenVZ 的適用場景都有幫助。借助 Qt 跨平臺特性工具在 Linux、Windows 等桌面環(huán)境下提供一致體驗(yàn)適合需要整合多種虛擬化技術(shù)、簡化日常管理流程的系統(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 皮膚、想跨平臺復(fù)用同一套界面邏輯都等于從頭再造輪子。這份用 Qt/C 重寫的虛擬機(jī)經(jīng)理底層依然走 libvirt把 QEMU/KVM、VirtualBox、LXC、bhyve、Hyper-V 這些后端統(tǒng)一收進(jìn)來界面則換成完全可控的 Qt 控件。它解決的不只是“能看見虛擬機(jī)”而是讓桌面開發(fā)者和運(yùn)維能拿到一套可編譯、可二次修改的虛擬化管理源碼。適合誰適合正在做桌面虛擬化管理工具、或需要在自定義界面里操作虛擬機(jī)的朋友新手也能照著源碼把連接鏈路跑通。2. 連接后端URI、驅(qū)動樹和安全認(rèn)證的拆解真正上手這套 Qt 虛擬機(jī)經(jīng)理之前建議先把連接層拆明白。因?yàn)樗泄δ堋斜?、啟動、快照、顯示——都建立在那一條連接 URI 上。URI 寫錯一個(gè)斜杠后面全白搭。2.1 先弄清 libvirt 驅(qū)動樹系統(tǒng)連接與用戶會話連接libvirt 不是虛擬化軟件本身它是一個(gè)統(tǒng)一管理接口。你用virConnectOpenAuth傳進(jìn)去的 URI決定它選擇哪個(gè)驅(qū)動。驅(qū)動名來自編譯進(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 記下來排查的時(shí)候?qū)χ春芸旌蠖薝RI 示例說明QEMU/KVMqemu:///system最常用連接系統(tǒng)級 libvirtdVirtualBoxvbox:///system通過 vbox 驅(qū)動管理 VirtualBox 實(shí)例LXC 容器lxc:///system管理本機(jī) LXC 容器bhyvebhyve:///systemFreeBSD 上的 bhyve 虛擬機(jī)Hyper-Vhyperv:///system通過 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)頁這個(gè)設(shè)計(jì)很實(shí)用——不要把一個(gè)后端寫死在構(gòu)造函數(shù)里運(yùn)行時(shí)切換能省去重新編譯。2.2 遠(yuǎn)程連接與認(rèn)證ssh 和 tcp 兩條路的參數(shù)差異跨機(jī)器管理虛擬機(jī)時(shí)URI 會帶上認(rèn)證方式。常見的有兩種寫法qemussh://userhost/system和qemutcp://host:16509/system。先說 ssh 這條。它依賴本機(jī) ssh 客戶端第一次連接時(shí) libvirt 會通過 sshd 跳轉(zhuǎn)到遠(yuǎn)端再用遠(yuǎn)端 libvirtd 的權(quán)限模型驗(yàn)證。好處是傳輸加密、認(rèn)證簡單因?yàn)槟惚緳C(jī)已經(jīng)生成過 ssh key坑點(diǎn)是如果你用密鑰而非密碼登錄libvirt 的認(rèn)證回調(diào)會被跳過它直接走 ssh 層這時(shí)如果遠(yuǎn)端沒有把本地公鑰加進(jìn)authorized_keys就會收到一個(gè)讓人摸不著頭腦的連接錯誤。再說 tcp 這條。它走 16509 端口通常要開啟 SASL 認(rèn)證。打開/etc/libvirt/libvirtd.conf把listen_tls 0、listen_tcp 1打開然后配置auth_tcp sasl。注意如果 libvirtd 是以 systemd 方式啟動還得修改/etc/libvirt/libvirtd.socket的監(jiān)聽開關(guān)。我在實(shí)際配置時(shí)踩過一次明明設(shè)置了listen_tcp 1服務(wù)卻不監(jiān)聽 16509 端口后來發(fā)現(xiàn)是新版本 libvirt 默認(rèn)走 socket 激活需要在/etc/libvirt/libvirtd.conf里把listen_tcp相關(guān)注釋放開并且重啟服務(wù)。tcp 連接如果不開 SASL測試時(shí)勉強(qiáng)能連上但生產(chǎn)環(huán)境絕對不要這么干——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)證。我一般會這樣封裝// 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)識的憑據(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)來填寫用戶名VIR_CRED_PASSPHRASE是密碼。cred[i].result必須用strdup分配內(nèi)存libvirt 會自己釋放。我一般不用QString::toLocal8Bit而是toUtf8因?yàn)?libvirt 對證書里的非 ASCII 用戶名處理有歷史包袱UTF-8 出錯概率最低。打開連接之后不要順手把virConnectClose寫進(jìn)析構(gòu)里就完事。如果界面里有多個(gè)窗口共享同一條連接你要自己維護(hù)引用計(jì)數(shù)。libvirt 的virConnectPtr不是線程安全的多個(gè)線程同時(shí)使用同一個(gè)指針時(shí)必須加鎖或保證串行訪問。我的做法是連接對象放在一個(gè)單獨(dú)的管理類里所有 libvirt 調(diào)用都經(jīng)過這個(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)比較久。我一般會在連接前設(shè)置環(huán)境變量LIBVIRT_DEFAULT_URI同時(shí)把域名解析和連接放到 Qt 的QRunnable里執(zhí)行界面等 8 秒還沒返回就提示用戶檢查網(wǎng)絡(luò)。日志方面libvirt 默認(rèn)只打印virError到 stderr你可以設(shè)置LIBVIRT_LOG_FILTERS來控制export LIBVIRT_LOG_FILTERS3.libvirt 4.libvirt.qemu export LIBVIRT_LOG_OUTPUTS1:file:/tmp/libvirt_qt.log3表示只記錄 warning 級別的 libvirt 全局日志4.libvirt.qemu表示 qemu 驅(qū)動單獨(dú)記 debug。這個(gè)區(qū)分很重要全局日志寫太多會把文件撐爆qemu 驅(qū)動的 debug 才是排查 XML 生成問題的地方。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è)最小域定義長這樣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會被解析成 2 KiB啟動時(shí)直接內(nèi)存不足。currentMemory表示當(dāng)前分配量可以小于memory用來做內(nèi)存熱插拔預(yù)留。vcpu的placementstatic表示固定 vCPU 數(shù)量如果改成placementauto會讓宿主機(jī)自動決定。虛擬機(jī)名稱我建議只用字母、數(shù)字、連字符和下劃線不要用中文。libvirt 對名稱中的非 ASCII 字符支持不徹底尤其在使用virDomainLookupByName時(shí)某些版本會返回domain not found但用virConnectListAllDomains又能看到它這就是名稱編碼問題導(dǎo)致的索引不一致。3.2 生命周期方法封裝創(chuàng)建、關(guān)閉、重啟與強(qiáng)制結(jié)束qt-virt-manager 的生命周期操作都封裝在一個(gè)DomainController類里對外暴露的是 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 定義但先不啟動 virDomainPtr dom virDomainDefineXML(conn, xml.constData()); if (dom nullptr) { const virError* err virGetLastError(); qCritical() 定義失敗: err-message; } return dom; } int start() { // 對已定義的域做啟動 int ret virDomainCreate(domain); if (ret ! 0) { const virError* err virGetLastError(); qWarning() 啟動失敗: 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只定義不啟動適合做配置校驗(yàn)virDomainCreateXML是定義加啟動一步到位但前提是你的 XML 里沒有引用尚未創(chuàng)建的存儲卷。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都會阻塞如果直接在 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) { // 通過信號發(fā)回主線程更新界面 emit resultReady(info.state, info.nrVirtCpu); } } };這里的關(guān)鍵是QRunnable在QThreadPool里執(zhí)行得到結(jié)果后用信號槽傳回主線程。因?yàn)関irDomainPtr來自同一個(gè)連接工作線程之間如果同時(shí)調(diào)用需要保證它們操作的是不同域?qū)ο蠡蛘邔φ麄€(gè)連接加互斥鎖。我采取的方案是連接層有一個(gè)QMutex每次調(diào)用前l(fā)ock調(diào)完再unlock性能損失不大但能避免同一連接下的未知崩潰。3.4 定義與啟動的邊界持久域和臨時(shí)域用virDomainDefineXML創(chuàng)建的域是持久的重啟宿主機(jī)后依然存在用virDomainCreateXML創(chuàng)建的域是臨時(shí)的關(guān)閉虛擬化服務(wù)后自動消失。qt-virt-manager 的“新建虛擬機(jī)”頁面里有兩個(gè)選項(xiàng)很多新手會把“定義”和“創(chuàng)建”混淆導(dǎo)致每次重啟宿主機(jī)后虛擬機(jī)列表變成空的。我在資源代碼里看到它把兩個(gè)操作分別做成了按鈕如果用戶選擇了“臨時(shí)域”界面會顯示一個(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 在虛擬化場景里的地位不一樣對比項(xiàng)SPICEVNC圖形傳輸支持多顯示器、動態(tài)分辨率調(diào)整固定分辨率分辨率變更需要重建會話音頻原生支持音頻轉(zhuǎn)發(fā)需要額外走 PulseAudio 端口剪貼板支持雙向剪貼板依賴 viewer 實(shí)現(xiàn)通常不支持視頻編碼自動降級編碼局域網(wǎng)表現(xiàn)好簡單編碼弱網(wǎng)表現(xiàn)一般客戶端支持spice-gtk / remote-viewer幾乎所有平臺都有 VNC client如果你管理的虛擬機(jī)以 Linux 桌面為主而且宿主機(jī)與訪客在同一局域網(wǎng)SPICE 是明顯更好的選擇。但如果訪客是 Windows 且沒裝 SPICE guest toolsSPICE 會退化成 VNC這時(shí)不如直接配 VNC少一層折損。4.2 從域配置里取圖形端口和密碼解析 XML 而不是調(diào)用隱藏 API很多剛開始寫 Qt 虛擬化管理的人會去找virDomainGetGraphics這樣的函數(shù)我提醒一句libvirt 沒有這個(gè)公開 API。正確做法是用virDomainGetXMLDesc把整個(gè) XML 拉回來再解析graphics節(jié)點(diǎn)// graphics_parser.cpp #include libvirt/libvirt.h #include QDomDocument QString getGraphicsPort(virDomainPtr domain) { // 取帶安全字段的完整 XML密碼會被解出來 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ā)給顯示頁面去連 return port; } } return QString(); }VIR_DOMAIN_XML_SECURE這個(gè) flag 必須帶否則graphics節(jié)點(diǎn)里的passwd屬性會被省略成空。解析時(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)簡單不用管 SPICE 協(xié)議的細(xì)節(jié)壞處是跨平臺性差macOS 或 Windows 上表現(xiàn)不一致而且remote-viewer必須預(yù)先安裝。第二種方案是使用 spice-gtk 的 Qt 適配層核心類是SpiceSession和SpiceDisplay。它可以在 Qt 里直接渲染 SPICE 畫面支持鼠標(biāo)、鍵盤、剪貼板轉(zhuǎn)發(fā)。代價(jià)是你得把整個(gè) spice-gtk 庫鏈進(jìn)項(xiàng)目對資源要求較高。第三種方案是 VNC 的幀緩沖開源庫比如 libvncclient你在 Qt 里用一個(gè)QWidget的子類接收幀緩沖數(shù)據(jù)然后轉(zhuǎn)成QImage渲染。這個(gè)方案不依賴外部程序但視頻編碼和解碼全得自己處理性能瓶頸明顯。我的評價(jià)是如果只是做管理工具第一種最省事如果要做完整桌面體驗(yàn)第二種子碼流最穩(wěn)第三種只適合臨時(shí)測試。4.4 圖形參數(shù)調(diào)整autoport 與端口沖突autoportyes的意思是讓 libvirt 自動分配一個(gè)可用端口但自動分配意味著你不知道具體端口必須在域啟動后再去讀 XML才能拿到真實(shí)端口號。這在拼接spice://127.0.0.1:5900連接地址時(shí)是必須的。如果你指定固定端口port5900那么多個(gè)虛擬機(jī)不能同時(shí)設(shè)置相同端口否則后啟動的域會失敗。我在資源里看到它封裝了一個(gè)“等待端口就緒”的狀態(tài)機(jī)域啟動后每 500 毫秒輪詢一次 XML 里的graphics端口最多等 30 秒超過就報(bào)錯。這個(gè)設(shè)計(jì)很實(shí)用因?yàn)?QEMU 從創(chuàng)建到監(jiān)聽 socket 有延遲立即讀端口會拿到空值。5. 避坑排查連接、權(quán)限、顯示三類問題的根因清單這一章是我把常見問題整理成清單的部分。所有條目都遵循“現(xiàn)象 → 原因 → 解決”的順序直接對應(yīng) qt-virt-manager 里最容易踩的五個(gè)坑。5.1 連接報(bào)錯“認(rèn)證失敗”但用戶名密碼明明是對的現(xiàn)象使用qemussh://userhost/system連接遠(yuǎn)程宿主機(jī)程序提示authentication failed但在終端里用同樣的賬號執(zhí)行virsh list --all卻正常。原因SSH 密鑰與 libvirt 認(rèn)證回調(diào)的沖突。libvirt 通過 ssh 管道連接遠(yuǎn)端后如果遠(yuǎn)端 libvirtd 要求 SASL它會繼續(xù)走virConnectAuth回調(diào)但本機(jī) SSH 層已經(jīng)用了密鑰登錄沒有可交互輸入的 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 啟動域提示權(quán)限不足但用戶已經(jīng)加入了 libvirt 組現(xiàn)象普通用戶在 qt-virt-manager 里能列出域但啟動時(shí)報(bào)internal error: process exited或者cannot access /var/lib/libvirt/images/xxx.qcow2。原因用戶雖然加入了libvirt組但磁盤鏡像文件的權(quán)限是 600屬于 root。libvirtd 啟動 QEMU 進(jìn)程時(shí)以 root 身份運(yùn)行所以 root 自己能讀寫但用戶會話對文件的訪問仍然被系統(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 對 QEMU 的訪問控制可能未放行特定路徑在 Ubuntu 上需要在/etc/apparmor.d/usr.sbin.libvirtd里添加路徑規(guī)則并 reload否則啟動會直接被拒絕。5.3 SPICE 黑屏或連接后一直轉(zhuǎn)圈現(xiàn)象虛擬機(jī)域啟動正常remote-viewer 連接 SPICE 地址看到黑屏或無限轉(zhuǎn)圈但 VNC 連接同一個(gè)域卻正常。原因SPICE 協(xié)議在 TLS 與非 TLS 端口之間切換時(shí)客戶端用了錯誤的連接前綴。如果你在 libvirt 里沒有配置 TLS只監(jiān)聽了普通端口客戶端卻用spice://默認(rèn)走 TLS就會一直握手失敗。另一個(gè)原因是 spice-guest-tools 沒裝guest 內(nèi)沒有 SPICE 的顯卡驅(qū)動導(dǎo)致顯示輸出沒有推送到 SPICE 通道。解決在 Qt 代碼里拼接地址時(shí)顯式使用spice://127.0.0.1:端口同時(shí)確認(rèn) libvirt 的graphics節(jié)點(diǎn)里沒有開啟tlsPort。如果 guest 是 Windows先安裝 spice-guest-tools如果是 Linux確認(rèn) spice-vdagent 服務(wù)運(yùn)行中。我還會用virsh domdisplay去對照實(shí)際生成的地址排除端口讀錯的可能。5.4 列表里能看到域但雙擊啟動無響應(yīng)現(xiàn)象qt-virt-manager 的域列表能正確顯示所有虛擬機(jī)狀態(tài)顏色也正常但雙擊啟動一個(gè) shutdown 狀態(tài)的域時(shí)UI 沒有任何反饋后臺日志也沒有 libvirt 錯誤。原因極可能是同時(shí)連接了多個(gè) libvirt 驅(qū)動列表展示的數(shù)據(jù)來自qemu:///system而雙擊后的啟動操作卻因?yàn)榇a內(nèi)部 URI 寫死或變量未更新被發(fā)送到另一個(gè)連接會話。更隱蔽的是界面上顯示的域是持久域但啟動操作調(diào)用的是virDomainCreate而不是virDomainCreateXML而當(dāng)前域?qū)ο笫菑牧斜砭彺胬锬玫膶ο筮^期。解決在程序初始化時(shí)只維護(hù)一個(gè)全局的連接狀態(tài)值。域列表的每個(gè)條目都必須保存它所屬的virConnectPtr指針雙擊時(shí)直接使用同一條連接。還要在啟動前調(diào)用virDomainGetState刷新一次狀態(tài)避免操作一個(gè)大緩存里已經(jīng)失效的域?qū)ο?。這個(gè)坑在虛擬化面板里非常常見尤其是實(shí)現(xiàn)了跨后端列表合并之后。5.5 狀態(tài)輪詢把界面卡死甚至是假死現(xiàn)象虛擬機(jī)數(shù)量超過 5 個(gè)時(shí)界面開始出現(xiàn)明顯卡頓數(shù)量達(dá)到 20 個(gè)時(shí)按鈕點(diǎn)擊后要等好幾秒才有反應(yīng)。原因在住線程里做了同步輪詢。virDomainGetInfo對每個(gè)域都要發(fā)一次 libvirt 調(diào)用如果虛擬機(jī)處于暫停或轉(zhuǎn)換狀態(tài)這個(gè)調(diào)用可能阻塞幾百毫秒。Qt 主線程一旦阻塞整個(gè)事件循環(huán)停擺表現(xiàn)為窗口無響應(yīng)。解決把所有輪詢邏輯移進(jìn)QThreadPool界面里只接收信號更新。輪詢間隔至少保持 2 秒不要低于 1 秒否則 QEMU 和 libvirt 內(nèi)部的鎖競爭會拖慢原本正常的操作。我在資源里看到它還實(shí)現(xiàn)了“輪詢暫停機(jī)制”當(dāng)用戶正在執(zhí)行快照或遷移操作時(shí)自動拉長輪詢間隔減少干擾。6. 進(jìn)階技巧把域列表接進(jìn) Qt 模型層讓界面自己刷新做到這一步你已經(jīng)能把連接、域操作、顯示輸出跑通。最后一個(gè)值得長期沿用的技巧是用QAbstractListModel管理域列表而不是在 QWidget 里直接 push 數(shù)據(jù)。這套模式的收益要等虛擬機(jī)數(shù)量變大、狀態(tài)頻繁變化時(shí)才能體會到模型驅(qū)動視圖數(shù)據(jù)變化自動通知界面代碼不用到處手動 update。一個(gè)簡易的模型頭文件長這樣// 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()方法讓角色返回對應(yīng)字段。當(dāng)輪詢線程拿到新狀態(tài)時(shí)不要整個(gè)模型重置只更新對應(yīng)行并發(fā)送dataChanged信號。這樣列表視圖只重繪變化的行刷新成本大幅降低。我在實(shí)現(xiàn)時(shí)會額外加一個(gè)state到顏色的映射比如 1running用綠色5shutdown用灰色讓用戶一眼看出運(yùn)行狀態(tài)。從那以后我每次把 qt-virt-manager 部署到新環(huán)境都強(qiáng)制走一遍流程先驗(yàn)證virsh -c qemu:///system list --all能看到正常列表再啟動一個(gè)測試域再用 qt-virt-manager 連接并執(zhí)行一次啟動和關(guān)閉最后用virsh domstate反向校驗(yàn)界面顯示和實(shí)際狀態(tài)一致。這套流程給過我很多次后悔藥也讓我少背了很多個(gè)“面板顯示正常但虛擬機(jī)起不來”的黑鍋。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
成人视屏在线观看| 五月天丁香婷婷社区| 国产美女无遮挡裸体毛片A片 | 丁香六月av| 国产亚洲AV人片在线| 色在线99| 色五月激情五月天| 五月天亭亭俺也| 狠狠肏综合网| 色五月激情问网站| 国产亚洲99久久精品| 丰满老熟妇BBBBB搡BBB| 99视频内射三四| 天天爱天天做天天爽| 五月色丁香婷婷综合| 99热8| 99久久九九视频| 99热综合| 色爱亚洲| 人人妻久久妻| 色噜噜狠狠插综合| 26uuuuuuuu国产| 天天干,天天舔| 久久性都花花世界成人免费视频| 极品人妻XXXXOOOO| 国产激情久久久| 婷婷的色色五月天| 丁香五月婷婷在线观看| 亚洲第一精品成人999久久精品| 日韩无码专区| 99综合免费视频| 色婷婷影视99| 激情五月婷色| 婷婷激情五月天桃花网| 色天使久久综合| 99亚洲精品| 五月天婷婷免费视频| 久热最新视频| 婷婷丁香五月噜噜噜| 九九热这里精品| 99久.| 久色激情| 色婷婷五月综合| 成人在线综合| 日韩啪啪网| 九九99热久久精品66中文字幕| 五月丁香色停停啪啪啪| 春色激情| 久久丁香婷婷色情综合| 九九偷拍网| 91人无码久久久久久| 99精品视频在线观看| 玖玖资源在线视频| 性一交一乱一交A片久| AV中文在线| 丁香色五月 97干| 五月丁香精品| 在线播放中文字幕| 4399无码视频二区| 888久久久| 91九色超碰| 大香蕉在九| 成人综合视频网址| 欧美 日韩 成人| 亚洲啪啪精品| www99热| 色五月琪琪| 97丁香婷婷| 大香蕉五月天婷婷丁香91| 色婷婷综合在线| 婷婷五月欧美| 久久免费操| 六月丁香婷婷综合在线| 无码激情| 日本操天堂| 天天色天天操天天射| 九九婷婷激情综合网| 国产麻豆视频| 中美日韩成人在线| 天天爱天天做天天爽| 俺去也在线视频| 99亚洲色色| 99re6久热只有精品6在线直播| 色色色99| 日韩一区二区三区无码| 99九九在线精品热动漫| 伊人在线视频| 一区视频网站| 婷婷五月六月激情| 丁香久久| 久久99久久久久久久噜噜| www久久久久| 91九色小视频| 天天摸天天日天天舔| 九九热最新| 九九亚洲视频| 色99免费视频中文| 五月天激情婷婷五月天久久| 婷婷五月综合网| 99re在线播放| 四虎成人精品永久免费AV九九| 婷婷五月天伊人在线| 99精品在| 91日韩在线| 综合久久8| 久久综合这里只有精品1 | 亚洲精品午夜国产va久久成人| 9久热在线视频精品| 夜夜骑夜夜撸| 九色激情网| 狠狠操之狠狠操| 丁香 婷婷 亚洲 熟女| EEUSS鲁片一区二区三区| AA丁香综合激情| 欧美毛片www| 色欲午夜无码久久久久久张津瑜| 婷婷五月丁香青青草在线| 婷婷五月天丁香成人社区| www99热| 婷婷草| 99这里有精品视频| 成人 在线 日韩| 日日狠狠久久偷偷四色综合免费| 久热婷婷| 伊人久久婷婷| 日本色色色| 五月丁香激情婷婷综合| 青草视频在线观看视频| 狠色综合网| 婷婷五月丁香手机在线视频| 97操碰人免费| 五月天电影网| 不卡在线中文字幕无| 我爱大香蕉| 九九伦子片| 热的五码久久精品| 色香欲综合| 狼人婷婷综合| 99re免费精品视频| 9久久婷婷国产综合精品性色| 九九热这里只有国产精品| 久久女婷| 国产伦理精品高清在线观看网站一区二区| 操操国产| 五月丁香婷婷成人网| 日本一区二区三区精品视频| 色播激情五月天| AV大片在线播放| 亚洲 25P| 无码激情AAAAA片-区区| 夜夜夜叫天天天做| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 俺去也在线官网| 深爱婷婷网| 五月丁香琪琪| 婷婷五月色| 91婷婷丁香| 操碰99| 九月av| 久久99免费视屏| 婷婷色五月久久| 丁香婷婷久久| 久久伊人日日夜夜| 91/九色黑人| 五月丁香亚洲综合网| 亚洲亚洲人成综合网络| 亚洲小视频| 五月婷婷性爱网| 色五月在线视频观看| 乱精品一区字幕二区| 激情综合网丁香| 99欧美| 精品久久99| 超碰AV在线| 无码啪啪| 免费看成人AA片无码视频吃奶| 激情综合网五月天天| 五月婷婷六月天| 六月丁香五月激情网| 日韩精品视频中文字幕| 日韩一级网站| 五月婷六月综合在线观看| 亚洲第一综合| 青青草原福利在线| 色五月激情综合网| 久久精品凹凸分类| 97碰碰在线看视频免费| 天堂爱爱| 九九色院| 国产午夜伦鲁鲁| 欧美一级操逼视频| 丁香久久| 综合久久8| 色情五月婷| 丁香五月综合高清在线| 97碰 在线视频观看| www,天天干| www色色色com| 久久全色| 99热在线观看| 五月婷婷黄色| 天天爱夜夜爽| 蜜臀av无码久久久久久久久| 婷婷五月六月| 久久AV无码精品人妻系列试探| 婷婷色5月激情网| 夜夜躁婷婷AV| 99亚洲精品综合在线| 99色视频在线| 亚洲99视频| 97干在线看| 色情五月婷婷| 婷婷久久精品| 天天操天天爱天天玩| 狼人婷婷久久| 国产免费av网站| 婷婷激情社区| 亚洲成人网站在线播放| 天天情色综合网| 欧美性爱五月天| 天天狠狠综合精区| 激情视频网址| 久久综合性| 五月婷婷在线观看| 婷婷综合五月激情| 性色播| 婷婷性爱视频在线| 婷婷94s| 日本天天操| 色综合色| 99这里只有精品视频| 成人五月天在线视频在线观看| 久久伦乱| 14色综合婷婷| 天堂成人久久| 99色视| 风流少妇A片一区二区蜜桃| 五月丁香婷婷综合| 婷婷五月天色色| 99热在线这里| 老司机伊人| 天天摸天天爽| 狠狠做五月婷婷| 97精品综合久久| 久久久久久久久久久97| 丁香五月综合首页| 99碰视频| 亚洲综合婷婷五月| 日韩九区| 五月丁香狠狠爱| www.色情五月天.com| 日韩黄色中文字幕| 婷婷五月综合国产精品| 五月婷婷操操| www.99操.com| 少妇婷婷五月天| 天天视频精品9| 五月综合激情啪啪啪啪啪| 99久久99久久综合| 国产古装妇女野外A片| 综合网五月| 丁香五月自拍| 日本天天操| 色综合天天综合成人网| 可以看的av| AVDV久久| 色天堂婷婷| 国产精品涩涩涩视频网站| 另类激情综合| 丰满少妇乱A片无码| 色色热| 亚洲五月天激情| 色情综合网| 五月激情综合网| 五月婷婷色色| 热婷婷av| 五月丁香久久| 伊人啪啪网| 99热这里都是精品| 真实的国产乱XXXX在线91| 色色色色色色综合网| 色婷婷狠狠久久综合五月| 亚洲AV久久久久久久久久久久久久久久| 婷婷丁香日韩五月| 噜噜色五月| 日本久久高清| 色五月成人在线| 97韩国久久电影院| 久久人人超| 97在线视频观看| 欧美搡BBBBB摔BBBBB| 91 影音先锋| 超碰在线资源| 色婷婷五月天激情| 日日爱激情| 思思热在线观看| 久久婷婷色| 亚洲乱码精品久久久久..| 老师高潮流白浆喷水的A片| 五月婷婷久久爱| 色婷久| 色丁香五月天射婷婷爱婷婷| www夜夜操comwww| 婷婷色五月激情强奸四射| 天天玩夜夜操| 色婷av| 成人五月天综合网| 国产精品美女| 免费黄网不卡AV| 超碰97久久| 这里只有精品,日韩视频| 伊人婷婷五月天av| 精品人妻伦一二三区久久| 色色色com| 五月婷婷与六月丁香图片激情| 五月丁香久久网| 中文字幕色色| 另类少妇人与禽zOZZ0性伦| 亚洲精品九九| 26uu| 丁香五月Av| 日韩aⅴ视频| 久久激情网| 天天夜天天色天天| 国产午夜精品AV一区二区麻豆| 玖玖婷婷视频| 思思热在线免费视频| 黄色AV日韩| 婷婷丁香色女人| 欧美色婷婷| 欧美丁香婷婷五月| www.99riav99| 色五月天综合| 伊人色综合网| 99热最新精品| 思思热视频在线观看| 色爱综合五月| 天天干天天干天天干天天干天| 婷婷综合在线| 天天做天天爱天天爽夜夜揉| 97人人干人人操| 五月婷婷精品视频| 五月丁香六月婷婷欧美综合| 欧美五月婷婷综合| 色偷偷狠狠| 五月婷婷丁香| 天天草天天舔| 性按摩玩人妻HD中文字幕| 91大神操美女| 亚洲激情综合网| 激情久久网| 青青福利网| 丁香六月婷婷| 精品色情一区二区三区四区| 五月丁香五月综合欧美| 婷婷欧美偷拍综合| 丁香五月影院| 欧美性爱特黄一级aaaassss| 9久热精品在线视频| 五月丁香日本在线视频观看| 五月天综合色| 色另类五月天| 在线看片h站| 青青草蜜臀| 偷偷与邻居做爰完整视频| 大香蕉啪啪啪| 三男玩一女三A片| 蜜臀av无码久久久久久久久 | 亚洲在线资源| 亚洲黄色影视| 色婷婷久久| 精品无码av丁香五月激情| 五月天播播| 99热思思久| 26uuu精品国产| 色色亚洲无码| 色婷婷狠狠久久综合五月| 九九热精品视频九九| 北条麻妃伊人 | jiujiujiuwuyuetian| 99热官网| 18av天堂| 97操碰免费视频| 久久只有18视频| 色综合色婷色基地| 日本一级一级一级一级| 色丁香在线视频| 色婷婷综合久久| 丁香五月婷中字幕| 色综合久久综合中文综合网| 九九综合| 青青草五月天| 在线国产精品色| 亚洲色无码A片一区二区麻豆| 色婷婷色情| 色婷婷另类| 五月婷婷激情日本| 色一区高清| 1024国产在线| 色综合久久综合中文综合网| 五月丁香999| 五月激情视频网| 色yeye欧美| 欧美五月婷婷| 就去涩涩丁香五月天| 色婷婷色综合激情91| 九九色综合九九色| 九九色综合视频| 91seav| 亚洲欧美日韩VIP| 99热这里只有精品2| 婷婷色啪| 日本WwW色偷偷丁香花久久久京东热| 丁婷婷五月天在线播放| 狠狠做五月婷婷| 久久一操| 日本黄 色 片| 五月丁香六月婷婷网| 伊人狠狠干| 超碰成人在线观看| 色吊丝99| 天天色粽合合合合合合合| 色狠狠婷婷| 99热日韩这里只有精品| 亚洲六月色婷婷| 亚洲网站观看视频| 中文字幕成人| 久久性视频| 天天爽夜夜爽夜爽精品| 天天天天天天天干| AV在线大香蕉| 色婷婷影| 六月丁香婷婷综合影院| 夜夜嗨一区二区三区直播内容 | 亚洲欧美婷婷五月色综合| 免费五月婷婷网| 永久99免费视频网站| 久久精品综合色| 色色色色丁香| 情欲禁地| 色婷婷九月| 伊人久久大香蕉网| 岛国AV网| 久久66成人网站| 六月丁香五月婷婷首页| 五月婷婷性爱| 伊人色综合影院视频| 婷婷六月成人| 九久九精品| 极品人妻VIDEOSSS人妻| 夜夜躁爽日日| 大香蕉AV在线| 丁香婷婷大香蕉| 欧美啪啪五月天| 色啪久| 五月激情天| 成人日韩欧美| 色情综合| 狠狠搞狠狠操| 天天日,天天干,天天操| 五月丁香亚洲综合| 九九RE视频在线精品| 久久黄色片| 亚洲精品国产精品乱码不99| 五月天婷婷色小说| 激情伍月 欧美| 思思热天天看| 国产色丁香| 九九99久久| 亚洲色图五月丁香| 啪啪婷婷五月天激情| 五月天天综合| 亚洲精品无码久久| 掩去也综合五月视频| 色婷| 天天综合激情| 色婷婷丁香特级性爱视频| 五月天激情在线视频| 99激情视频热| 开心五月色婷婷综合开心网| 五月天啪啪啪| 亚洲成人免费在线| 激情深爱五月天| 九九这里有精品| 伊人激情| 成人精品视频99在线观看免费| 五月婷在线| 亚洲综合五月天| 国产FREESEXVIDEOS性中国| 99热这里只有精| 亚洲成av人影院| www.婷婷com| 久草五月婷| 丁香久久五月婷综合| 无码区婷婷五月花开| 思思99热这里只有精品| 天天爽综合| 秋霞少妇毛片| 五月丁香婷婷色色| 亚洲婷婷五月天激情综合| 婷婷丁香五月天综合网| 婷婷激情五月色综合| 激情五月婷黄版| 另类天堂| 99艹精品在线观看| 九色91美女| 色综合久久五月| 精品怡红九九九| AV性爱网| 色五月婷婷老师| www,五月丁,com| 激情五月婷婷丁香综合网| 97色色综合| 丁香五月天激情综合| 精品香蕉99久久久久网站| 五月久久丁香| 丁香五月婷婷五月天在线| 9999热这里只有精品| 久久这里只有精品热在99| 日日操日日撸| 丁香五月婷婷亚洲另类| 99热这里只有精品10| 啪啪小说五月天| 五月天亭亭俺也| 蒲京久久无码视频| 思思色播| 日本爆乳片手机在线播放| 婷婷五月天激情网| 色色九九五月天| 婷婷五月天亚洲天堂| 九九人人精品| 99热97美女| 久久久久久草黄色片AV在线观看| 婷婷五月天福利| 久久精品国产AV一区二区三区 | 无码激情| 91窝窝| 五月六月丁香婷婷在线观看| 91爱操| 日逼影音先锋AV男人资源站| 极品 少妇 内射| 97人人操人人爽| 久久精彩视频99| 777久久精品| 99在线视频播放| 中文字幕操比影片| 久热这里精品免费| 欧美色色色| 91精品在线看| 天天操加勒比| 99色在线观看视频| 婷婷五月激情六月| 亚洲免费电影2| 婷婷伊人久久综合| 91中文狠狠综合| 丁香五月色| 久久色天堂| 亚洲免费在线观看岛国| 天天爽免费视频| 丁香五月天天久久综合小说| 伊人六月丁香婷婷| 亚洲妇女熟BBW| 九九热在线亚洲免费视频| 激情av在线| 五月婷免费视频| 婷婷五月天伊人网| 第1影院之五月婷婷| 婷婷五月天激情五月天网站| 碰超亚洲| 日韩精品二三区| 日韩99无码| 婷婷综合在线观看视频| 成人在线观看国产| 婷婷五月丁香综合人妻| 大大香蕉综合在线| www.国产色| 人人97操| 九九色图| 五月天婷婷基地| 丁香五月电影| 亚洲色五月天在线| 激情五月婷婷视频| 天天谢天天操| 97人操| 欧美色97| 九九AV| 狠狠色丁香| 99热综合在线观看| 五月婷婷久久爱| 十月色综合| 久久婷综合网| 天天天天天天操| 人妻久久久久久久久妻久久久久久久久 | 五月婷婷黄色视频| 天堂va久久久噜噜噜久久Va| 色色色在线观看| 中美日韩成人在线| 激情又色又爽又黄的A片| 久久五月天激情视频| 亚洲AV成人一区二区在线观看| 亚洲丁香五月| 五月丁香啪综合| 五月婷婷在线免费观看| 丁香欧美| 日本三级中文字幕| 香蕉久久国产AV一区二区| 天天摸天天日天天舔| 99热伊人综合| 精品久久99码| 婷婷六月激情丁香| 国产激情在线| AA丁香综合激情| 美女妹子后射视频网站在线观看| 91久久综合| 思思热在线视频精品| 五月丁香激情六月| 久热大香蕉| 香蕉AV777XXX色综合一区| 色婷婷婷婷五月天| 天天综合亚洲综合网天天αⅴ| 精品视频二级九九| 亚洲人妻av| 怡红院院久久| 操碰99| 狠狠色 综合色区| 狠狠色噜噜狠狠| 日日日,com| 五月天婷婷激情网| 性色做爰片在线观看WW| 五月婷婷深深爱| 涩涩涩婷婷| 婷婷五月AV| 99丁香五月| 五月丁香大香蕉| 五月天成人小说网| 五月婷婷香蕉| 97久久久| 婷婷五月丁香超碰| 欧美天堂婷婷日韩| 99婷婷| 成人版视频在线观看| 99热这里只有精品50| 丁香大香蕉| 婷婷丁香先锋资源网站| 欧美婷婷色| 久久久精品人妻| 天天爽天天| www.av骚货| 五月丁香日本片| 五月综合激情| 3p久久| BlACKEDRAW视频一区二区| 久久伊人五月天| 激情综合99| 九九这里都是精品| AV天堂婷婷五月天| 狠狠色丁香婷婷综合久久97AV| 日本色婷婷| 国产一区18| 超碰免费电影| 亚韩精品视频1区| 国产精产国品一二三在观看| 五月天丁香| 色综合婷婷| 91九色欧美| 日本色视| 五月婷婷啪啪| 久久婷婷五月天蜜桃| 伊人午夜综合色啪| A久网| 99视频这里只有久久精品| 婷婷五月激情六月丁香| 久久精品爱爱| 人人色人人摸人人看| 丁香五月综合| 色五月天激情| 噜噜噜噜噜在线| 日木WWW视频| 欧美黄色韩日网| 精品一二三区久久AAA片| 无码色| 深爱激情五月天| 色丁香五月| 亚洲中文乱字字幕在线永久| 丁香婷婷社区| 国产精品18久久久| 婷婷五月在线影院| 久热视频97AV在线观看| 久久国产高潮白浆免费观看99| 亚洲成人AV一区在线观看| 奇米色大香蕉| 婷婷丁香五月91| 九九99精品视频| 丁香五月影院| 婷五月丁香| 日日做夜夜爱| 欧美色频| 婷婷狠狠操| 涩涩五月天| 性爱激情综合网| 中文字幕天天干| 六月婷婷色色色| 日韩成人综合网| 婷婷丁香五月久久| 夜夜爽天操| 色婷婷偷拍| 青青草五月天| 婷婷丁香色五月天| 国产无人区大片| 激情文学 综合 色| 综合五月天婷婷色| 丁香五月综合激情性爱| 丁香五月婷婷基地| 最新无码专区| 五月丁香亭亭操逼| 五月丁香少妇网| 人人爱国产| 久久停停超碰| 九色99视频| 国产精品国产| 夜夜爽日日躁| 亚洲午夜一区二区| 欧美性生交XXXXX无码小说| 久久综合9| 热99国产精品| 色色色色色色色色网站| 五月婷婷六月色| 99国产97在线,| 丁香六月啪啪| 亚洲99热| 五月天综合网| 超碰在线国产9| 婷婷六月丁香1| 丁五月激情视频免费| 我爱大香蕉| 丁香六月天婷婷| 亚洲午夜精品久久久久久人妖 | aaa日韩| 99视频自拍| 婷久久高清| 色综合夜夜| 五月婷婷丁香五月婷婷丁香| 97高清国语自产拍| 久久久激情视频| 婷婷五月美女直播| 97色吧| 天天日夜夜欢| 玖玖资源站中文| 国产SUV精品一区二区6| 婷婷丁香97| 色深爱五月| 91欧美| 欧日韩成人| 九九热思思| 国产午夜成人免费看片无遮挡| 99精品国产在热久久婷婷| 国产成人精品亚洲线观看| 丁香婷婷六月天| 99精品视频免费| 玩熟女五十AV一二三区| 婷婷丁香社区网| 中文字幕av在线播放| 久久婷五月影院| 2023天天日夜夜爽| 91五月天| 深爱激情网五月| 婷婷五月无码| 五月婷婷av| 超碰在线9| 婷婷久久图片| 精品乱码久久久久| 五月丁香色色色| 国产另类综合| 天天插操| 99成人免费视频| AⅤ网站在线看| 婷婷久久视频| 亚洲国产精品VA在线看黑人| 婷婷她六月天| 五月天六月色| 99ri在线| 欧美色五月| 1024手机在线观看看片_日韩精品| 五月天婷婷丁香| 午夜日日| 色五月av| 久久婷婷综合基地| 色五月综合在线| 色婷婷狠狠爱| 超碰在线成人| 99秘 在线| 天天肏视奸| 婷婷五月综合网| 中文AV在线观看| Av大香蕉| 五月婷高清视频| 99久久户外勾搭| 五月丁香激情在线| 天堂网亚洲色图| 久久婷婷综合五月天| 狠狠爱婷婷色| 婷婷综合网站| 丁香五月日啪| 久久久亚洲成人无码A片| 色五月婷婷色五月婷婷色五月婷婷| 殴美97色| 日本久久人人| 亭亭丁香久久五月| 色五月婷婷777| 综合色激情| 九月婷婷激情| 国产毛片精品一区二区色欲黄A片| 就99这里只有精品| yw国产AV| 丁香婷婷色九月| 人妻射精AV| 久久婷婷五月天大香蕉| 五月丁香影视| 99国产er热视频| 日本美女97在线视频| 亭亭玉月丁香| 色婷婷丁香网| 99惹 精品在线| 99久精品视频| 五月 丁香 欧美| 国产精品成人网站| 婷婷综合激情| 欧美成人五月天| 99久.| 亚洲乱码日产精品BD| 99精品视频网| 精品无码av丁香五月激情| www,setingting| 青青草原亚洲天堂| 色色日韩无码| 婷婷精品综合| 国产伦亲子伦亲子视频观看| 日日干日日| 九九视频这里是精品五月| 五月色激情综合网| 性爱久久| 久久这里有精品| 色五月丁香五月五月婷婷| 狠狠爱丁香婷| 午夜一区| 91色吧网| 五月婷婷狠狠干| www.久久久.com| 91黄色五月天视频| 五月激情影院| 天天综合色| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇| 激情视频综合| 淫视馆av三区| 91精品久久久久久综合五月天| 综合图片色色| 婷婷五月天熟妇| 狠狠色婷婷| 九月色婷婷综合| 婷婷的五月天另类视频| 91丨九色丨东北熟女| 激情综合色播| 三十路磁力链接| 丁香五月在线人妻| 欧美99视频| 手机在线视频观看9| 国产毛片精品一区二区色欲黄A片| 色九月婷婷综合| 丁香五月激情啪啪| 亚洲性爱日韩无码| 色色色综合视频| 日韩成人网址| 4399人妻无码久久久| 九九精品re免费视频| 天天草女人| 少妇人妻偷人精品无码视频新浪| 五月婷婷激情网| 狠狠人人婷婷| 毛片色五月| 蜜桃五月天色| 精品色色网| 梁铮版蜘蛛女在线观看| 伊人激情| 婷婷伊人綜合中文字幕| AV在线免费播放| 五月丁香黄色| 碰碰人人漕| 99噜噜噜| 97人妻碰碰碰碰碰久久久久久| 大鸡巴伊人网| 最新国产AV| 免费日本aⅴ中文字幕| 超碰国产在线播放| 久久激情中文| 婷婷六月丁香五月图区| 婷婷99视频在线| www.9操| 久久久久久久久久久久久9| 免费无码毛片一区二区A片| 五月丁香久久| 在线看九一V图片| 国产高清av黄色看片| 精品香蕉99久久久久网站 | 情色婷婷五月天| 欧美在线操| 日日噜狠狠| 91超级碰| 《战争与艾拉》完整版| 婷婷五月天激情综合| 五月丁香拍拍激情综合| 久热这里精品免费| 九九热精品视频九九| 综合九九| 久久超视频| 9久热| 精品无码久久久久久久久| 熟妇人妻中文字幕无码老熟妇| 99热个人在线| 99在线一区| 五月丁香综合在线| 99热九九这里只有精品| 思思热久在线观看视频| 深爱激情五月天婷婷网| 九九精品视频在线观看| 丁香 久久| 热久精品| 夜夜嗨一区二区三区直播内容| 99碰碰碰| 久热91精品| 婷婷激情五月综合| 激情二色月| 婷婷五月天综合久久| 伊人婷婷大香蕉| 五月综合久久| 丁香花综合永久入口| 1999天天操夜夜操| 久久狠狠高潮亚洲精品 天天摸夜夜摸夜夜狠狠摸 | 婷婷五月天天| 激情五月婷婷视频一区二区三区| 丁香婷婷大香蕉| 天天操夜夜玩!| 日本高清综合网五月丁香| 99熟女| 国产亚洲精品久久久久久豆腐| 婷婷丁香五月天操逼| 免费亚洲婷婷中文字幕| 婷婷五月天伊人网在线观看视频| 婷婷五月天激情电影小说| 九九这里有精品| 激情五月成年| AAA久久| 涩涩涩.com| 久久女婷| 色偷偷人人| 九九蜜臀精品| 久久人人妻| 免费观看全黄做爰的视频| 在线观看亚洲AV| 五月丁香天堂网婷婷| 91久久九久久九久久九久久九久久| 五月天色五月| 强伦轩人妻一区二区电影| 丁香婷婷啪啪啪| 丁香九月激情| 中文字幕婷婷在线| 亚洲婷婷五月草久| 玖玖爱伊人| 超碰免费电影| 国产淫熟妇| 九九热超碰| 久久99日本精品视频免费观看| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 九九色色网| 色婷婷播放| xx综合网| 五月花激情| 久久久婷婷色五月资源网| 天天噜天天爱| 久久色情| 97黑人精品区| 可似看的AV| 超碰在线caop| 婷婷五六月丁香| 婷婷永久在线| 色婷六月| 99精品热| 日美三级| 婷婷激情啪啪| 噼里啪啦完整版中文在线观看| 亚洲精品亚洲人成人网| 五月丁香六月婷婷色情| www超碰com| 丁香五月 六月婷婷首页| 狠狠操天天干| 丁香六月开心| 玖玖婷婷五月天| 色吧婷婷| 91色涩| 六月丁香婷婷综合狠狠爱夜夜爱| 免费不卡狠操美女视频网 | 99性爱视频网站| 综合色图婷婷| 五月天夜夜爱夜夜操| 成人国产欧美大片一区| 99这里只有免费的精品| 久久天天| 色婷婷五月天天天天天| 久久激情网| 天天干夜夜操A片| 婷婷五月在线视频| 欧美欧盟性爱网| 亚洲第一综合| 六月丁香成人| 99精品偷自拍| 亚洲综合五月天综合| 欧类av怡春院| 天天射综合网天天插| 激情婷婷丁香| 3www激情| 热久久婷婷| 激情五月天小说网| 九九热精品99| 亚洲成人在线免费| 就是色婷婷五月亚洲色| 超碰人人色| 久久久婷婷婷| 婷婷五月天99| 99久99久| 99在线观看精品视频| 婷婷五月天AV在线| 伊人久久大香网| 久久中文人妻系列| 国产毛片欧美毛片久久久| 色情免费视频播放| 91九九热| 日本九九视频| 久久综合干| 天天射美女| 人人干99| 99视频在线精品免费观看2| 99碰碰中文| 特黄三级片| 91成人电影| 人人播| AV五月丁香| 99色婷婷视频| 大香蕉五月天| 婷色五月| 色深爱五月| 综合 蜜月 婷婷| 婷婷五月电影院| 思思热99er在线视频| 狠狠干综合| 欧洲第一久色| 91操在线| 99色色| 五月六月丁香婷婷在线观看| 丁香六月丁香婷婷激情| 婷婷涩五月天综合| wWW九九在线播放| 亚洲天堂热| 99热精品一区| 九伊人网| 五月婷婷深深爱| 韩国激情五月天综合网| 九九精品热播| 性做久久久久久久免费看| 色色色色网色色网色色| 99精品偷拍视频| 亚洲色啪| 激情综合网激情五月天| 五月婷婷黄色| 在线视频九色97| 俺去也五月天婷婷| 色丁香综合影院| 中文字幕av在线播放| 久久精品99国产精品日本| 婷婷六月视频| 激情五月深爱五月观看| 婷婷中文字暮| 激情五月天婷婷五月天| 久久只有精品| 9l视频自拍9l视频自拍九色学生| 色爱综合网| 亚洲九九99精品视频在线播放| 久久久精品AV| 99日本视频在线观看专区| 超碰在线观看9| 五月情涩综合婷婷| 六月丁香婷婷色狠狠久久| 亚洲精品久久久久久久久久吃药| 亚洲视频操| 婷婷丁香人妻天天久久| 在线不卡视频| 亚洲天堂AV综合网| 女人高潮内射99精品| 久操无码| 五月丁香六月婷婷a v| 色丁香五月婷婷| yazhochengrenavwang| 天天色粽合合合合合合合| 狠狠爱婷婷丁香| 色狠狠色噜噜AV天堂五区消防| 婷婷综合仓库中文| 99色网站| 高清视频一区| 激情五月天激情五月天| 天天艹天天综合网| 婷婷色五月开心五月| 五月天大香焦| 五月天综合网| 91ncm视频| 五月综合激情视频在线| 久婷婷五月综合欧美| 色婷婷无吗| 日本视频久久| 国产精品18久久久| 色在线99| 日本色婷婷| 美女五月狠狠| 亚洲精品乱码久久久久久按摩观| 亚洲AV日韩在线观看| 五月婷婷色欲| 99ER热精品视频| 日本99热| 亚洲操b| 日日爽日日| 婷婷五月丁香六月天亚洲综合| 午夜青草资源| 中文无码精品一区二区三区| 天天做天天爱天天爽在| 香蕉综合在线| 亚洲AV成人片无码网站| 久久久激情视频| 99久久婷| 亚洲XX网| 外国碰视频网站97| 日韩性视频| 久99精品视频| 99人人操人人爱久久久| 日韩综合久| 9精品视频在线| 激情五月天福利| 91人人爽人人操| 91精品国产色猫| 9月色婷婷| 婷婷五月色網站| 丁香五月六月欧美| 欧美天天五月丁香免费观看| 婷婷五月蜜桃成人桃色丁香| 亚洲性爱99| 亚洲综合视频一下| 狠狠色狠狠干| 五月天色导航| 色色色免费视频| 大香蕉综合| 蜜臀av无码久久久久久久久| 国产精品色色色色| 思思 热 99| 国产婷婷色综合AV蜜臀AV| 欧美激情综合色综合啪啪五月| 五月婷啪啪| 大香蕉综合网| 激情久久久久| 性无码专区无码| 影音先锋AV男人站| 五月天久久网站| 久久日韩婷婷五月| 丁香五月综合| 五月天色导航| 99无码免费视频| 精品无码人妻一区| 99热99色| 五月丁香激情综合网| 激情久久丁香| 成人片在线播放| 999热视频精品99免费在线| 婷婷五月天精品| 碰97久久| 五月丁香好婷婷姑娘综合网| 啪啪六月婷婷| 亚洲精品亚洲人成人网| 亚洲激情综合| 香蕉曰比| 九九激情综合| 婷婷丁香五月六月激情| 婷婷十月丁香| AAA久久| 99在线精品免费视频| 久久婷婷五月综合啪| 日本美女上人| 天天操天爱综合| 99热爱爱干干日| 日本人人超碰| 九 九九九AV| 丁香五月激情宗合网| 五月天停停成人网| 婷婷久热| 国产肥白大熟妇BBBB视频| 国产成人AV在线播放| 思思热性操| 成人在线网址| 久草热久草在线视频| 色欲久久久久久综合网综合网| 91操色| 干一干xxxx| 激情第四色| 五月天激情网址| 九九热这里只有精品9| 97色婷| 国产肥白大熟妇BBBB视频| 97操碰碰无码视频| 小视频一区 | 停停六月 综合| 激情99热| 亚洲精品99| 色级婷婷| 欧美韩日AAA网站| WWW.桔色成人.COM| 果冻传媒A片一二三区| 色婷婷99| 久久丝袜婷婷| 亚洲婷婷五月天| 亚洲综合婷婷五月| 亚洲视频伍月婷婷| 国产无遮挡又黄又爽免费网站| 三级99热| 五月天激情久色| 少妇性按摩无码中文A片| 久久网日本| 思思精品热在线| 亚洲精品国产A久久久久久| 日本老女人黄页在线播放| 99热碰碰| 狠狠色婷婷色| 99热6这里只有精品6| 五月丁香婷婷啪啪| 亚洲天堂啪啪| 日本色爽| 99精品视频在线观看| 国产亚洲色婷婷99精品| 国产激情综合五月久久| 9精品视频在线观看| 色婷婷小说网| 2025神马午夜福利| 色情五月天se| 五月婷婷深深爱| 五月欧美色播| 欧美大香蕉视频| 丁香五月婷婷av| 91九色视频在线观看| 免费人人操| 五月天婷婷色播| 婷婷五月天影院| 丁香色色色| 亚洲超碰在线| www色色色com| 丁香六月综合激情| 久久九九精彩| 五月天婷婷基地综合网| 婷婷五月丁香欧洲| 色色a| 婷婷综合伊人| 婷婷激情图片| 操人久久| 欧美日韩999|