亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

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

基于Qt與libvirt構(gòu)建跨平臺虛擬機(jī)管理器:從連接到顯示 簡介qt-virt-manager 是基于 Qt/C 開發(fā)的圖形化虛擬機(jī)管理工具面向系統(tǒng)管理員與運維開發(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)境下提供一致體驗適合需要整合多種虛擬化技術(shù)、簡化日常管理流程的系統(tǒng)工程師也適合作為虛擬化入門學(xué)習(xí)與教學(xué)演示的配套資源。1. Qt虛擬機(jī)經(jīng)理不用再羨慕virt-manager的圖形化體驗我最初拿到 qt-virt-manager 這套資源時第一反應(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ā)者和運維能拿到一套可編譯、可二次修改的虛擬化管理源碼。適合誰適合正在做桌面虛擬化管理工具、或需要在自定義界面里操作虛擬機(jī)的朋友新手也能照著源碼把連接鏈路跑通。2. 連接后端URI、驅(qū)動樹和安全認(rèn)證的拆解真正上手這套 Qt 虛擬機(jī)經(jīng)理之前建議先把連接層拆明白。因為所有功能——列表、啟動、快照、顯示——都建立在那一條連接 URI 上。URI 寫錯一個斜杠后面全白搭。2.1 先弄清 libvirt 驅(qū)動樹系統(tǒng)連接與用戶會話連接libvirt 不是虛擬化軟件本身它是一個統(tǒng)一管理接口。你用virConnectOpenAuth傳進(jìn)去的 URI決定它選擇哪個驅(qū)動。驅(qū)動名來自編譯進(jìn) libvirt 的那一組后端模塊常見的有qemu、vbox、lxc、bhyve、hyperv、openvz、phyp等。注意URI 里的:///system和:///session兩個路徑代表完全不同的權(quán)限邊界system走系統(tǒng)的 libvirtd 守護(hù)進(jìn)程需要 root 或加入libvirt組session走當(dāng)前用戶自己的進(jìn)程不需要 root但它只能管理用戶自己名下的虛擬機(jī)。我用一個表把這組 URI 記下來排查的時候?qū)χ春芸旌蠖薝RI 示例說明QEMU/KVMqemu:///system最常用連接系統(tǒng)級 libvirtdVirtualBoxvbox:///system通過 vbox 驅(qū)動管理 VirtualBox 實例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不需要改界面代碼只需要改連接配置項。我在 qt-virt-manager 的源碼里看到它把 URI 作為配置字符串放到首選項頁這個設(shè)計很實用——不要把一個后端寫死在構(gòu)造函數(shù)里運行時切換能省去重新編譯。2.2 遠(yuǎn)程連接與認(rèn)證ssh 和 tcp 兩條路的參數(shù)差異跨機(jī)器管理虛擬機(jī)時URI 會帶上認(rèn)證方式。常見的有兩種寫法qemussh://userhost/system和qemutcp://host:16509/system。先說 ssh 這條。它依賴本機(jī) ssh 客戶端第一次連接時 libvirt 會通過 sshd 跳轉(zhuǎn)到遠(yuǎn)端再用遠(yuǎn)端 libvirtd 的權(quán)限模型驗證。好處是傳輸加密、認(rèn)證簡單因為你本機(jī)已經(jīng)生成過 ssh key坑點是如果你用密鑰而非密碼登錄libvirt 的認(rèn)證回調(diào)會被跳過它直接走 ssh 層這時如果遠(yuǎn)端沒有把本地公鑰加進(jìn)authorized_keys就會收到一個讓人摸不著頭腦的連接錯誤。再說 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è)置了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測試時勉強(qiáng)能連上但生產(chǎn)環(huán)境絕對不要這么干——libvirt 的 tcp 不加認(rèn)證等于把主機(jī)的域管理接口裸奔在局域網(wǎng)里。2.3 C 側(cè)封裝連接virConnectOpenAuth 與 URI 校驗qt-virt-manager 的連接層直接用 libvirt 的 C API用 Qt 的QString轉(zhuǎn)成const char*傳進(jìn)去。最關(guān)鍵的是認(rèn)證回調(diào)它決定你用什么方式完成 SASL/SSH 后的身份驗證。我一般會這樣封裝// 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; }這段代碼里有幾個參數(shù)值得解釋。VIR_CRED_AUTHNAME表示讓 libvirt 回調(diào)來填寫用戶名VIR_CRED_PASSPHRASE是密碼。cred[i].result必須用strdup分配內(nèi)存libvirt 會自己釋放。我一般不用QString::toLocal8Bit而是toUtf8因為 libvirt 對證書里的非 ASCII 用戶名處理有歷史包袱UTF-8 出錯概率最低。打開連接之后不要順手把virConnectClose寫進(jìn)析構(gòu)里就完事。如果界面里有多個窗口共享同一條連接你要自己維護(hù)引用計數(shù)。libvirt 的virConnectPtr不是線程安全的多個線程同時使用同一個指針時必須加鎖或保證串行訪問。我的做法是連接對象放在一個單獨的管理類里所有 libvirt 調(diào)用都經(jīng)過這個類的同步方法避免在多個線程里直接操作同一個virConnectPtr。2.4 連接層參數(shù)速查flags、超時與日志virConnectOpenAuth的 flags 參數(shù)有三個常用值0表示讀寫連接VIR_CONNECT_RO表示只讀VIR_CONNECT_NO_ALIASES表示不做 URI 別名解析。如果你只是做一個只讀監(jiān)控面板用VIR_CONNECT_RO就夠了這樣即便口令泄露也只能看不能改。超時參數(shù)不在這個函數(shù)里它由 libvirt 內(nèi)部的網(wǎng)絡(luò)超時和 SASL 協(xié)商超時決定默認(rèn)比較久。我一般會在連接前設(shè)置環(huán)境變量LIBVIRT_DEFAULT_URI同時把域名解析和連接放到 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ū)動單獨記 debug。這個區(qū)分很重要全局日志寫太多會把文件撐爆qemu 驅(qū)動的 debug 才是排查 XML 生成問題的地方。3. 域?qū)ο蟛僮鲝?XML 定義到生命周期封裝連接建立之后下一個要處理的是域domain的增刪改查。libvirt 把所有虛擬機(jī)定義抽象成 XMLqt-virt-manager 也需要按照這個思路設(shè)計數(shù)據(jù)模型——不要自己發(fā)明結(jié)構(gòu)體存虛擬機(jī)配置直接把 XML 當(dāng)作源數(shù)據(jù)界面只是它的視圖。3.1 用 XML 定義一個最小可運行的 KVM 域一個最小域定義長這樣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注意幾個參數(shù)的細(xì)節(jié)。內(nèi)存單位是 KiB2097152是 2 GiB如果你寫2會被解析成 2 KiB啟動時直接內(nèi)存不足。currentMemory表示當(dāng)前分配量可以小于memory用來做內(nèi)存熱插拔預(yù)留。vcpu的placementstatic表示固定 vCPU 數(shù)量如果改成placementauto會讓宿主機(jī)自動決定。虛擬機(jī)名稱我建議只用字母、數(shù)字、連字符和下劃線不要用中文。libvirt 對名稱中的非 ASCII 字符支持不徹底尤其在使用virDomainLookupByName時某些版本會返回domain not found但用virConnectListAllDomains又能看到它這就是名稱編碼問題導(dǎo)致的索引不一致。3.2 生命周期方法封裝創(chuàng)建、關(guān)閉、重啟與強(qiáng)制結(jié)束qt-virt-manager 的生命周期操作都封裝在一個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)于拔電源危險操作需要二次確認(rèn) return virDomainDestroy(domain); } };virDomainDefineXML只定義不啟動適合做配置校驗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 已運行。3.3 狀態(tài)輪詢與 Qt 事件循環(huán)不要在 GUI 線程里做阻塞調(diào)用這是我在讀這套資源源碼時最看重的一點。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é)果后用信號槽傳回主線程。因為virDomainPtr來自同一個連接工作線程之間如果同時調(diào)用需要保證它們操作的是不同域?qū)ο蠡蛘邔φ麄€連接加互斥鎖。我采取的方案是連接層有一個QMutex每次調(diào)用前l(fā)ock調(diào)完再unlock性能損失不大但能避免同一連接下的未知崩潰。3.4 定義與啟動的邊界持久域和臨時域用virDomainDefineXML創(chuàng)建的域是持久的重啟宿主機(jī)后依然存在用virDomainCreateXML創(chuàng)建的域是臨時的關(guān)閉虛擬化服務(wù)后自動消失。qt-virt-manager 的“新建虛擬機(jī)”頁面里有兩個選項很多新手會把“定義”和“創(chuàng)建”混淆導(dǎo)致每次重啟宿主機(jī)后虛擬機(jī)列表變成空的。我在資源代碼里看到它把兩個操作分別做成了按鈕如果用戶選擇了“臨時域”界面會顯示一個顯眼的警告條這個交互值得借鑒。4. 顯示輸出接入SPICE 與 VNC 參數(shù)以及 Qt 窗口內(nèi)嵌的幾種做法管理虛擬機(jī)繞不開顯示輸出。qt-virt-manager 要承擔(dān)的不只是“列表管理器”它還得把訪客畫面交給用戶看。這一章我拆解顯示協(xié)議選擇和 Qt 集成方式。4.1 先選協(xié)議SPICE 與 VNC 的差異表在配參數(shù)前先做技術(shù)選型。VNC 和 SPICE 在虛擬化場景里的地位不一樣對比項SPICEVNC圖形傳輸支持多顯示器、動態(tài)分辨率調(diào)整固定分辨率分辨率變更需要重建會話音頻原生支持音頻轉(zhuǎn)發(fā)需要額外走 PulseAudio 端口剪貼板支持雙向剪貼板依賴 viewer 實現(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這時不如直接配 VNC少一層折損。4.2 從域配置里取圖形端口和密碼解析 XML 而不是調(diào)用隱藏 API很多剛開始寫 Qt 虛擬化管理的人會去找virDomainGetGraphics這樣的函數(shù)我提醒一句libvirt 沒有這個公開 API。正確做法是用virDomainGetXMLDesc把整個 XML 拉回來再解析graphics節(jié)點// 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這個 flag 必須帶否則graphics節(jié)點里的passwd屬性會被省略成空。解析時用 DOM 而不是正則是因為 XML 屬性順序可能變正則容易漏掉多graphics節(jié)點的情況。多顯示器虛擬機(jī)通常有多個graphics標(biāo)簽?zāi)阈枰A羧慷皇侵蝗〉谝粋€。4.3 在 Qt 窗口內(nèi)呈現(xiàn)訪客畫面三種方案第一種方案是調(diào)用remote-viewer外部進(jìn)程把它的窗口嵌入到 Qt 主界面。做法是用 Linux 窗口系統(tǒng)提供的嵌入接口把子進(jìn)程的winId塞進(jìn)QWidget::createWindowContainer。好處是實現(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ā)。代價是你得把整個 spice-gtk 庫鏈進(jìn)項目對資源要求較高。第三種方案是 VNC 的幀緩沖開源庫比如 libvncclient你在 Qt 里用一個QWidget的子類接收幀緩沖數(shù)據(jù)然后轉(zhuǎn)成QImage渲染。這個方案不依賴外部程序但視頻編碼和解碼全得自己處理性能瓶頸明顯。我的評價是如果只是做管理工具第一種最省事如果要做完整桌面體驗第二種子碼流最穩(wěn)第三種只適合臨時測試。4.4 圖形參數(shù)調(diào)整autoport 與端口沖突autoportyes的意思是讓 libvirt 自動分配一個可用端口但自動分配意味著你不知道具體端口必須在域啟動后再去讀 XML才能拿到真實端口號。這在拼接spice://127.0.0.1:5900連接地址時是必須的。如果你指定固定端口port5900那么多個虛擬機(jī)不能同時設(shè)置相同端口否則后啟動的域會失敗。我在資源里看到它封裝了一個“等待端口就緒”的狀態(tài)機(jī)域啟動后每 500 毫秒輪詢一次 XML 里的graphics端口最多等 30 秒超過就報錯。這個設(shè)計很實用因為 QEMU 從創(chuàng)建到監(jiān)聽 socket 有延遲立即讀端口會拿到空值。5. 避坑排查連接、權(quán)限、顯示三類問題的根因清單這一章是我把常見問題整理成清單的部分。所有條目都遵循“現(xiàn)象 → 原因 → 解決”的順序直接對應(yīng) qt-virt-manager 里最容易踩的五個坑。5.1 連接報錯“認(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 密鑰組合讓整個鏈路不需要交互。在本地執(zhí)行ssh-keygen并把公鑰加到遠(yuǎn)端然后確認(rèn)遠(yuǎn)端/etc/libvirtd/libvirtd.conf里auth_tcp設(shè)為none或者與 ssh 認(rèn)證不沖突。如果你堅持要 SASL就要確保本機(jī)有可用的 keychain 代理而不是依賴回調(diào)輸密碼。5.2 啟動域提示權(quán)限不足但用戶已經(jīng)加入了 libvirt 組現(xiàn)象普通用戶在 qt-virt-manager 里能列出域但啟動時報internal error: process exited或者cannot access /var/lib/libvirt/images/xxx.qcow2。原因用戶雖然加入了libvirt組但磁盤鏡像文件的權(quán)限是 600屬于 root。libvirtd 啟動 QEMU 進(jìn)程時以 root 身份運行所以 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)限。另外一個隱蔽點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 連接同一個域卻正常。原因SPICE 協(xié)議在 TLS 與非 TLS 端口之間切換時客戶端用了錯誤的連接前綴。如果你在 libvirt 里沒有配置 TLS只監(jiān)聽了普通端口客戶端卻用spice://默認(rèn)走 TLS就會一直握手失敗。另一個原因是 spice-guest-tools 沒裝guest 內(nèi)沒有 SPICE 的顯卡驅(qū)動導(dǎo)致顯示輸出沒有推送到 SPICE 通道。解決在 Qt 代碼里拼接地址時顯式使用spice://127.0.0.1:端口同時確認(rèn) libvirt 的graphics節(jié)點里沒有開啟tlsPort。如果 guest 是 Windows先安裝 spice-guest-tools如果是 Linux確認(rèn) spice-vdagent 服務(wù)運行中。我還會用virsh domdisplay去對照實際生成的地址排除端口讀錯的可能。5.4 列表里能看到域但雙擊啟動無響應(yīng)現(xiàn)象qt-virt-manager 的域列表能正確顯示所有虛擬機(jī)狀態(tài)顏色也正常但雙擊啟動一個 shutdown 狀態(tài)的域時UI 沒有任何反饋后臺日志也沒有 libvirt 錯誤。原因極可能是同時連接了多個 libvirt 驅(qū)動列表展示的數(shù)據(jù)來自qemu:///system而雙擊后的啟動操作卻因為代碼內(nèi)部 URI 寫死或變量未更新被發(fā)送到另一個連接會話。更隱蔽的是界面上顯示的域是持久域但啟動操作調(diào)用的是virDomainCreate而不是virDomainCreateXML而當(dāng)前域?qū)ο笫菑牧斜砭彺胬锬玫膶ο筮^期。解決在程序初始化時只維護(hù)一個全局的連接狀態(tài)值。域列表的每個條目都必須保存它所屬的virConnectPtr指針雙擊時直接使用同一條連接。還要在啟動前調(diào)用virDomainGetState刷新一次狀態(tài)避免操作一個大緩存里已經(jīng)失效的域?qū)ο?。這個坑在虛擬化面板里非常常見尤其是實現(xiàn)了跨后端列表合并之后。5.5 狀態(tài)輪詢把界面卡死甚至是假死現(xiàn)象虛擬機(jī)數(shù)量超過 5 個時界面開始出現(xiàn)明顯卡頓數(shù)量達(dá)到 20 個時按鈕點擊后要等好幾秒才有反應(yīng)。原因在住線程里做了同步輪詢。virDomainGetInfo對每個域都要發(fā)一次 libvirt 調(diào)用如果虛擬機(jī)處于暫?;蜣D(zhuǎn)換狀態(tài)這個調(diào)用可能阻塞幾百毫秒。Qt 主線程一旦阻塞整個事件循環(huán)停擺表現(xiàn)為窗口無響應(yīng)。解決把所有輪詢邏輯移進(jìn)QThreadPool界面里只接收信號更新。輪詢間隔至少保持 2 秒不要低于 1 秒否則 QEMU 和 libvirt 內(nèi)部的鎖競爭會拖慢原本正常的操作。我在資源里看到它還實現(xiàn)了“輪詢暫停機(jī)制”當(dāng)用戶正在執(zhí)行快照或遷移操作時自動拉長輪詢間隔減少干擾。6. 進(jìn)階技巧把域列表接進(jìn) Qt 模型層讓界面自己刷新做到這一步你已經(jīng)能把連接、域操作、顯示輸出跑通。最后一個值得長期沿用的技巧是用QAbstractListModel管理域列表而不是在 QWidget 里直接 push 數(shù)據(jù)。這套模式的收益要等虛擬機(jī)數(shù)量變大、狀態(tài)頻繁變化時才能體會到模型驅(qū)動視圖數(shù)據(jù)變化自動通知界面代碼不用到處手動 update。一個簡易的模型頭文件長這樣// 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)時不要整個模型重置只更新對應(yīng)行并發(fā)送dataChanged信號。這樣列表視圖只重繪變化的行刷新成本大幅降低。我在實現(xiàn)時會額外加一個state到顏色的映射比如 1running用綠色5shutdown用灰色讓用戶一眼看出運行狀態(tài)。從那以后我每次把 qt-virt-manager 部署到新環(huán)境都強(qiáng)制走一遍流程先驗證virsh -c qemu:///system list --all能看到正常列表再啟動一個測試域再用 qt-virt-manager 連接并執(zhí)行一次啟動和關(guān)閉最后用virsh domstate反向校驗界面顯示和實際狀態(tài)一致。這套流程給過我很多次后悔藥也讓我少背了很多個“面板顯示正常但虛擬機(jī)起不來”的黑鍋。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久亚州高清| 96AV久久久| 蜜乳AV免费观看| 99最新日韩偷拍视频| 久久大香蕉| 国产精品探花色| 亚洲精品久久久久久久蜜桃臀| 97爱欧美| 日本在线不卡一二区| 91干熟女| 伊人操你| 国产精品久久久久久久久久久久久久吹 | 国产av尤物| 中国91AV| 老鸭窝成人| 久久极品一区二区| 欧美性爱中文字幕无线码| 桃花色涩综合影院| 麻豆久久精品亚洲精品88| 欧日a| 超碰97资源中文字幕| 人妻大香蕉| 亚洲丝袜色| 夜夜影视四色| 久久‘黄片视频| 老熟女91视频| 欧美少妇高潮视频| 久9爱经典视频| 亚洲少妇色图自慰直播| 密臀在线免费观看| 日韩三级网址| 亚 欧 美 综合| 国产热RE99久久6国产精品首| 在线观看色视频| 精品无码久久久久久国产浪潮| 精品国产Av无码久久久伦古装| 另类成人首页一区| 久久日本熟女精品一区| 人妻少妇精品久久久| www.色婷婷| 一级片在线观看高清无码| 中文字幕在线免费观看2| 天美传媒AV在线播放| 国产农村一一级特黄毛片| 精品视频一区二区| 无套后入双马尾| 欧美丝袜91| 国产白丝AV| 亚洲日韩天堂| 欧美极品美女aaaaaa级黄片| 国产成人自拍视频视频| 1769一区| 欧美一级美片在线观看免费| 2020中文在线一区二区三区| 人人干人人搞人人摸| 亚洲无码超碰免费| 午夜寂寞欧美| 另类综合另类| 亚洲最大91网| 97这里只精品| 欧洲自拍第一页| 女优大全 - 91n| 96一区二区| www.婷婷五月天| 五月婷婷影院| 欧美老妇女内射网址| 伊人991| 日本不卡二三区| 一二三啪啪专区| 77国产精品| 中日韓欧美高清| 少妇无码av专区线| 亚洲欧美激情在线视频| 亚洲少妇诱惑| 国产搭汕a级片| 大香蕉一级黄色片久久| 精品人妻一区二区视频| 亚州色图第三区| 中文字幕一区二区三区人妻少妇在线| 在线强奷到舒服的无码视频| 大香蕉123| 欧美三级免费伊人| 久操频道免费在线呗看| 秋霞操逼片| 色婷婷电影网| 亚洲AV无码久久精品蜜桃小说| 欧美人妻一区二区| 无码高清国产AV| 天天看少妇| 9ⅰ久久久天天| 国产精品美女| 这里只有精品久久| 中文字幕一区二区三区四五区| 日熟女| 久久久久久久一级黄色打同平台| 欧美国产成人在线| 热99这里有精品综合久久| 色五月综合| 男人把坤坤插入女人的下体| 丁香五六月啪啪| 婷婷在线视频| 九热超碰| 精品国产无码中文| 啊啊啊好舒服好爽啊啊啊视频| 91视频在线观看18| 丁香五月婷婷色| 玖色av| 韩国一级做A片免费的| 最新精品久久蜜桃| 欧美精品二区视频在线| 国产67194| 国产三级中文字幕粉嫩| 激情干在线| 男人的天堂日韩| 三男一女不戴套的A片| 久久草草欧美精品| 亚洲久久久久| 天天做日日做天天欢。| 久久久久久人| 动漫爆乳3D奶水一区在线观看| 肉丝中文无码高清| 亚洲一卡2卡3卡4卡乱码网站| 2019AV天堂| 一本色道综合久久欧美| 日本不卡卡一区| 欧美性爱第一页久久| 久久久久久久久久精| 日本熟妇人妻中出视频| 亚洲色欧| 色婷婷亚洲婷婷| 色97欧美| 999日韩中文精品观看视频。| 人妻夜夜爽天天爽三区麻豆AV网站| 欧美亚洲激情小说| 啪啪自拍九九综合| 丁香婷婷激情五月天无毒不卡| 日韩激情小说一区二区| 91中出视频| 久久国99999| 温婉少妇玩3p| 日韩精品-原创伙伴| 日日日啊啊啊| 日本色色色视频| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 久久久久久午夜男人的天堂| 日韩97| 美日韩一卡二卡三卡免费人妻精品| 91网站18禁| 蜜臀AV一区二区三区激情综合| 人人操人人摸人人看人人干| 天天干嫩逼网| 国产九九九九九九| 超碰性爱97| 久久av成人无码免费| 97色操| 九九九九九用不成了| 亚洲另类电影| 在线a v| 清纯唯美第一页| 中文字幕AV片| 高潮嗯啊性感美女久久久| 日本操大逼| 综合五月天| 无码人妻系列少妇| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 91夜夜蜜桃臀1区2区3区| 国产操逼视频在线观看| 97色碰| 97超碰公开| 熟女中出视频| 人妻嗯啊啊在线播放| 欧美久久人人网| 亚洲av国产av综合av卡| 精品一区二区三区蜜桃臀赵总| 国产精品999aaa| 色色97爱| 国产精品麻豆成人AV艾秋| 国产精品人妻免费精品| 神马九九九| 国产夜夜操| 国产精品青草综合久久| 欧美一区二区观看在线| 日本精品无码三级网站| 国产无码三级视频在线观看| 九九九九国产| 青青草久草| 欧美日本视频一区| 久久久久久少妇| 97 九色| 欧美香蕉视xxx| 久久老子无码午夜伦不卡| 久久这里是精品| A级片日韩欧美国产欧美视频精选观看| 色欲久久99国产精品久久久久久| 欧美性夜| 久九九九| 91丨豆花丨熟女| 无码人妻精品一区二区三区99不卡 | 国产网红精品| 国产探花精品在线| 国产女人操逼视频| 欧亚性爱视频免费看| 丰满的三级少妇欧美久久久| 欧美性生活综合| 无码自拍SM| 97精品熟女少妇一区| 91操人| 午夜亚洲WWW湿好大| 亚洲天堂少妇| 福利视频网站| 精品欧美老熟女一二区| 手机在线视频国内精品| 免费观看国产小粉嫩喷水精品午| 中文字幕一区二区免费在线| 丰满人妻一区二区三区色-百度| 在线观看一级α片刺激高潮视频| 亚洲色系另类精品国产| 国产亚洲精品自在线亚洲情侣| 青娱乐久久艹| 麻豆久久久久久久久丝袜| 久久超碰免费的| 性性久久| 欧美大的香蕉有线电视视频| 九九热三级片| 欧美精品三级黄片| 日本精品无码三级网站| 日本色婷婷| 欧美精品丝袜久久久中文字幕| 亚洲熟女乱色一区二区三区久久久| 在线观看综合精品亚洲| 在线观看国产黄色| 大香蕉AV丝袜| 日日骚一区二区三区| 国产色产精品在线观看| 国产热RE99久久6国产精品首| 欧美18禁91| 日韩人妻网站| 人妻熟女av国产网站| 在线综合 亚洲 欧美中文字幕| 国产熟女少妇一区| 噜噜噜亚洲精品| 九九热AV| 国产精品岛国片在线观看| 国产精品亚洲美女久久久久| 天天综合AV| 久久久一二三四区| 亚洲导航深夜福利| 欧美日日夜夜| 中文字幕黄色一起草| 国产东北女人在线视频| 狼人综合婷婷激情四射 | 久热精品色情| 超碰免费人妻人人| 亚洲久热| 国产精品诱惑| 免费的黄片wwwwww| 欧美熟女妇同| 在线亚洲 欧美 日本专区| 亚洲精品日日夜夜52| 97操在线| 日韩人妻一二三区视频| 日韩综合成人免费视频| 少妇高潮对白在线观看| 欧美猛交黑寡妇中文字幕| 无码高清操逼| 天天享受天天看| 91人妻少妇| 九热视频| 99re视频在线播放青草| 色玖玖| 91N综合网| 麻豆啪啪啪视频| 伊人四虎综合| 五月天开心网| 国产精品一级片在线看| 96精品在线| 五十路熟女人妻一区二区在线观看| 99在线观看| 精品午夜福利| 国产亚洲欧洲在线观看| 麻豆国产视频精品观看| 97超碰色中文字幕| 97色婷婷| 色在线综合| 蜜桃一区二区三区| 欧美性爱精品一区二区| 在线洲亚线| 激情五月天色播| 超碰免费人妻人人| 欧美一区二区三熟女剧情| 日本午夜福利影院| 精品国产Av无码久久久伦古装| 啊啊啊啊啊啊好湿好爽视频| 欧美人妻精品一区二区| 男人天堂2030| 久久超碰98| 精品久久久不卡一区二区| 成人国产精品三级A片| 99re99在线视频| 暖暖精品二区三区观看| 亚洲黄色网址视频| 2020久久免费视频| 亚洲97网站| 天美国产精品| 日韩中文字幕在线视频观看| 欧美97网| 狠狠做深爱婷婷久久二区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 国产粉嫩出水在线播放| 亚洲九九九| 亚州大图综合色图| 亚洲人成色9999精品久久| 国产高清成人mv在线观看| 酒色综合网| 青青草中日韩在线| 五月天综合网| 久久久久日本视| 激情网色| 亚洲色欲天天天堂色欲网女| 97色综合中文网| 大香蕉国产中文自拍| 99久久久| 亚洲色诱惑| 免费一级黄色录像影片| 91丝袜美女视频| 2019男人的天堂| 91AV天堂| 亚洲大胆人体av| 免费看污网站| 欧美黑人猛交春色影视大全| 亚洲成人在线播放| 亚洲AV无码国产成人| 围产精品一区二区三区视频播放| 91av一区二区在线观看| 午夜男女爽爽爽影院视频| 亚洲天堂2020| 亚洲欧美另类图片| 丝袜 中出 制服 人妻 美腿 中文字幕| 国产精品情侣啪啪| 激情自拍 校园春色| 精品性爱久久视频| 97电影院超碰| 欧美亚洲日本激情在线| 日韩99精品视频综合区| 综合久久9| 东京热大香焦| 久久久不卡区一区二区三区久久久| 婷婷丁香五月天亚洲天堂网| 国产精品久久天天干| 少妇天堂| 91亚洲网站| 熟女在线视频| 99精品无码| 国产精品无码久久久久2028| 中文字幕国产在线天堂| 国产91丝袜在线播放蜜月| 中文字幕制服欧美久久一区| 日本免费不卡二区| 91视频国品一二三区| 性开放中文AV高清无码免费看| 国产熟女无套内射| 亚洲情色 自拍| 亚精品无码毛片一区二区三区| 天天综合,91综合永久| 综合久久欧美| 婷婷五月成人| 美女超碰978| 日本 欧美 亚中文字幕| 色婷婷五月天| 久久99网站| 人妻精品视频一区二区| 欧美麻豆成人同性GⅤ在线| 国产高清精品福利| 亚洲一区二区精品福利| 亚洲欧洲国产综合av| 国产精品蜜乳AV| 婷婷中文网| 无码精品久久| 麻花传媒免费网站在线观看| 国内精品a| 少妇厨房愉情理伦片bd在线观看| 无遮挡一级毛片视频免费的| 日本欧美一区二区三区免费| 人妻乱仑一区二区三区| 色官网色综合| 老司机福利社视频在线观看| 四虎884| 国产免费小视频| 91殴美| 97啪啪| 久久精品福利影院| 强奸乱伦麻豆| 日韩欧美视频青青| 亚洲天堂色图| 久久少妇人妻| 少妇高潮九九九九| 日韩中文字幕视频| 欧美激情另类一区二区| 日本熟妇一区二区三区| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 国产午夜激片Av毛片不卡| 亚洲日韩美女中文字幕乱| 国产亚洲精品玖玖玖在线观看| 国产精品一区二区黄片| 97超碰色屌| 亚洲欧美综合网站| 中文?日韩?免费?精品| 这里只有精品视频在线观看麻豆| 欧美久久伊人| 亚洲国产一区二区三区在线| 精品无码久久久久| 操一操摸一摸| 老司机深夜影院18未满| 夜夜爽妓女| 91宗合网| 久久久久久99AV无码免费网站| 成片免费播放| 熟女网站最新| 在线毛片片免费观看| 99这里有精品| 中文精品少妇天堂| av无码av无码专区| 丝袜六区| 男人天堂2030| 黑人精品成人一区二区三区| 日韩在线97| 亚洲91色| 粉嫩国产精品久久粉嫩| 四虎免费在线播放| 国产精品久久久久久久黄无码| 97精品国产97久久久久久免费| 91无码人妻| 黄色免费网| 五月丁香色综合| 欧美97免费| 日韩亚洲中文字幕在线| 18禁久极品美女久久哦哟呀!| 多毛小伙内射老太婆| 亚洲s在线观看| 蜜桃狠狠色伊人亚洲综合网站| 人人操AV| 99re28在线观看| 亚洲最大网站av| 欧美色道啊| av在线人气| 国语少妇精| 超碰资源亚洲97| 校园春色五月天| 肉嘟嘟www视频在线观看高清| 亚洲色悠悠久久88| 日韩熟女操逼| 久久鲁夜| 丁香五月综合| 精品白丝一区| 一本一道人妻久久一区二区三区| 七月丁香婷婷| 嫩草 人人网精品| 国产宅男宅女在线观看| 欧美另类色| 欧美色www亚洲国产阿娇要播| 97综合在线观看| 色网在线视频观看免费| 曰韩香蕉97| 在线性黄高清免费视频| 淫纸中9区| 六月丁丁香| 精品一区二区三区国产| 中文字幕久久精视频久久大全| 午夜视频久久久久一区| 午夜精品久久久久久久| 色婷婷电影网| 九九九九九九九九九国产精品| 第45页一区二区| 岛国视频免费在线观看| 亚洲色综网| 婷婷丁香五月综合| 搡老女人911熟妇老熟女| B049AV在线播放| 日本高清一区二区在线| 欧美熟妇色| 熟妇艹鸡八| 国产色呦呦| 日1区2区3区2020| 哈哈操电影AV| 亚洲综合小说另类图欧美视频激情小说色五月天| 欧美综合另类| 天天影视射综合网| 91人妻视频在线| 国产精品无码AV网站| 九九九九九精品| 久久m| 成人 日韩欧美一区| 尤物视频视频官网| 日韩欧美蜜桃精品久久中文字幕久久 | 亚洲日韩精品一区二区| 99re在线视频| 亚洲自拍欧美国产首页网曝| 亚洲操逼无码| 亚洲精品国产专区在线观看| 夜夜操美女| 国产精品另类一区大香蕉| 日韩精品三区四区| 大香蕉啪啪啪| 欧美一级A片在线看视频性色| 久久久久久9| 有码专区最新中文字幕有码| 97国产天堂岛| 丝袜综合色图| 久九九九九九九热| 亚洲古典另类欧美在线| 中文字幕一区二区日韩网| 国产美女91| 在线 欧美 亚洲| 青女在线| 青青草吊丝| 色一射色一射| 99久热| av日韩手机在线影视| gogogo免费高清看中国国语| 97五月天| 天天天天天天天天综合| 久久久久国产一区二| 激情在线青青操| 人人色人人射人人妻| 日韩99精品视频综合区| 亚洲中文丝袜美腿诱惑字幕| 精品免费1| 一本大道不卡一二三区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 亚州色图片在线色| 婷婷大香蕉| 内射老妇BBWX0C0CK| 亚洲诱惑天堂| 天天综合网~69| 国产精品永久免费10000| 亚洲国产精品久久久久婷婷老年| 男人的天堂亚洲| AV一起草在线| 亚洲精品 欧美97色色| 99re6久热只有精品6在线直播 | 后入 亚洲 美女 射| 大学生口爆吞精| 婷婷激情丁香| 一区二区 日韩 欧美 国产 传媒| 色综合网1| 综合伊人激情| 国产美女高潮视频| 嗯嗯啊啊视频一区二区三区| 免费AV播放| 91操操操操| 亚欧操逼片在线观看 | 久久αⅴ| 国产精品久久久久久夜夜夜夜| 日本福利社| 在线观看成人性爱免费小视频| 97久久超碰国产精品| 一区二区精品更新提醒| a网站免费观看| 国产亚洲精品无码三区| 91高潮| 蜜臀久久久国产| 人妻少妇色综合| 九月丁香婷婷色| 日韩97在线| 欧美 亚洲 另类 综合| 加勒比无码一区二区三区| 激情干在线| 国产偷人伦激情在线观看| 日韩欧美天堂| 另类亚洲图色| 国产成人网址| 欧美极度丰满熟妇hd| se吧提供91精品国产91久久久久久 | 极品丝袜无码| 欧亚乱色熟女一区二区| 先锋影音av先锋一区| 国产精品视频在线观看| 久久久久久久久国产| 青草香蕉网| 天天爽天天干| 亚洲精品啪视频| 人妻二区| 丁香七月婷婷| 蜜臀网 一区| 久肏视频字幕| 超碰午夜| 久久国产对白激情浪潮 | 人妻丝袜日本| 中文字幕av片| 97超碰人操| 欧美日韩国产中文精品字幕自在自线,| 久久精品性| 老司机老司机午夜影院| 亚洲国产91精品一区二区久久| 91精品老女人| 日韩成人人妻网站| 精品无码久久久久| 97免费视频网| 色女99一级片在线观看| 超碰97爽| 99国产精品人妻人伦| 欧美国产日韩清纯唯美| 狠狠综合网| 91人妻尻屄视频| 人妻81p| 国产精品干干干| 午夜福利一区二区影院| 午夜男女爽爽大片免费观看| 国内一区二区免费| 97碰碰色| 亚洲在线a| 久久在肏| 超碰97综合| 精品国产乱码久久久久久久久久毛片 | 国产免费黄色一级大片| 欧美精品宗合| 搡老女人老91妇女老熟女| 91精品国产综合久久久蜜臀酒店| 91欧美网| 久久久久九九九九| 新亚洲无码| 欧美激情久操网| 懂色Av| 秋霞午夜成人福利片片| 自拍偷拍第26| ,成人免费啪啪视频| 久久精品福利影院| 蜜乳Av成人片网站| 色欲三区| 青娱乐久久艹| 搡老熟女老女人老熟妇免费视频| 91狼人| 久久性视频| 亚洲天堂综合AV| 东北女人av| n1038 一二三区| 久久久熟妇熟女国产| 天天综合网1| 十八禁电影伊人网| 欧美日韩不卡传媒| 外站AV在线| 在线视频 亚洲精品| 亚州熟女乱伦| 国产精品探花视频| 国产AV高清AV无码| 天天干天天拍| 综精品久久久aaaa| 抽查国产福利主播| 另类视频在线| 99在线精品观看视频中文| 九t超碰| 国产性爱强奸乱伦大全| 久96热在线观看视频| 青娱乐亚洲自拍| 欧美网站免费| 久久麻豆一区二区| 国产白嫩精品久久| 香港成人一级视频在线青青草| 91处女在线视频| 欧美激情内射| 国产精品直播在线观看直播| 日韩国产欧美伦理在线| 在线国产探花| 蜜臀av中字字幕网站| 裸体1区| 91痴汉| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 国内精品伊人久久久久影院会| 色色操| 亚洲一区二区三区麻豆传媒| 后入式999| 青娱乐啪啪视频| WWW操逼| 成人国产精品三级A片| 激激五月| 日本性一区| 亚州男人天堂| 五月婷婷六月丁香网址| 色情五月综合婷婷| 亚洲有码 欧美精品| 97一区二区三区视频| 99久在线精品99re8蜜桃| 亚洲无码精品AV久久久| 日韩在线观看字幕精品| 久久天天摸| 99re在线视频国产| 少妇久久久| 把腿张开老子CAO烂你| 91国产精品在线看| 不卡一区视频| 亚洲一区二区在线观看91| 国产三级多多影院2022国产AA一级毛片无码 | 日本97久久久精品| 999色欧美中文字幕| 久久久久久网址| 色噜噜人妻丝袜a∨先锋影| 丁香五月天婷婷姐| 99超碰网| 亚洲精品尤物yw在线影院| 噜噜吧,噜噜色,噜噜| 一及黄久一点| 久操国产在线| 不卡av在线中文字幕| 欧美黄页在线| 中文字幕第95页| 欧美夜夜草视频| 久热91| 久久久专区| 日韩少妇无码| 黑人精品成人一区二区三区| 草蕉影视亚洲无码| 亚洲天堂男| 欧美v亚洲v日韩v最新在线二区| 亚洲男人天堂2012| 啊啊啊啊好疼| 三级网色| 久久久18禁| 色妇综合网| 亚洲少妇综合在线播放| 精品人妻视频一区二区三区蜜桃视频| 日日躁夜夜躁狠狠躁超爽| 亚洲 日韩 丝袜 熟女 变态| 成人影 天天操 亚洲| 精品人妻15区| 午夜寂寞欧美| 中文字幕视频在线观看一区二区| 欧美亚洲中文字幕| 日本操BAV| 国产精品视频播放| 97在线免费观看视频| 超碰av在线| 91女优在线观看| 国产精品不卡高清在线观看| 久久超碰久| 天天射天天色成人| 久久精品店| 91丝袜熟女| 黄色免费一级在线毛片| 麻豆精品久久久久久久| 天天干18禁| 国产精品青草综合久久| AV色图| 6080YYY午夜理论片在线观看| 国产欧美一区二区| 天美传媒AV在线播放| www久久99| 操死我了嗯嗯嗯| 影视综合无码少妇| 欧美黑人与女人91~| 男人天堂网址| 91麻豆天美国产欧美日| 日韩一卡二卡三卡| 亚洲中文字幕网| 综合网亚洲在线| 青娱乐日韩无码| www.成人无码| 在线观看精品国产免费| 人妻内射一区二区在线视频| 天天日天天搞天天干| 情色五月天久久久| 人人看黄色视频| 青青草日逼视频| 人人妻人人爽| 亚洲色偷偷色噜噜狠狠99网| 日韩超碰97| 七久久久| 好色综合| 男人的天堂2018.| 伊人五月天婷婷| 久久久国产精品人妻丝袜| 以及麻豆国产入口在线观看免费| 日韩AV色图| 麻豆视频国产一区二区| a人欧美综合天堂麻豆| 国产极品精品美女视频| 国产九区| 亚洲AV性爱电影| 劲爆欧美人妖三区91| 亚洲欧洲日韩国产自在线| 久9爱经典视频| 操逼网免费无码视频| 91丝袜人妻| 久操大香蕉手机视频在线看| 亚洲乱妇p22| 最新加勒比丝袜在线| 日韩精品在线视频,日韩精品……| 蜜臀在线免费观看在线免费观看| 黄片免费视频2019| 超碰天天操你比| 国产www色在线观看| 人妻少妇无码 | 日本一级不卡一二区| 人人插人人搞人人操| 91狠狠综合久久| 97人人射| 四虎AV在线播放| 狠狠欧美| 色在线综合| 91激情综合| 亚洲av乱伦色图网站| 亚洲 欧美综合| 大香蕉免费中文| 91网九色蝌蚪操熟女| 亚洲成人妻日韩在线| 新婚人妻扶着粗大强行坐下| 东北女人高潮视频| 欧美日韩国产中文精品字幕自在自线, | 800zy一区二区| 天天插夜夜操| 精品大全99999| 久久黄黄| 性爱视频无打码在线观看| 青青草影视蜜久久| 啊啊啊 在线观看| 中国一级操逼视频| 亚洲色图欧美色图综合| 欧洲天天在线| 亚洲伊人a线观看视频| 日日嗨AV一区二区夜夜| 伊人久久88国产女| 涩综合导航| www.acm成人黄色毛片| 插入综合网| 国产日韩色综合| 男人天堂导航| 神马久久久久眼| 岛国大片在线观看网站入口| 亚洲综合在线91| 精品久久久久黄少妇| 国产熟女免费观看久久| 伊人性在线视频| 国产又大又粗又长视频在线| 免费的黄片wwwwww| 久久精品国产亚洲5555| 久久久免费懂色| 久久久一区二区三区四曲免费听| 国产又猛又粗又爽又黄| 99精品综合久久久久五月天| 熟妇人妻一区二区| 亚洲综合精品国产一区| 亚洲无线观看久久| 成人精品水蜜桃久久久久久久| 久久精品色欧美aⅴ一区二区| 91日韩国产欧美亚洲另类精盘州至城都| 亚洲图片欧美制度| 久久人人看| 国产多人在线观看视频| 狠狠色五月亚洲91| 丝袜美腿校园春色| 97色色网| 在线观看色视频| 91久久青青草原精品| 老鸭窝日丰县女人| 日韩久久超碰色| 日韩精品一区二区三区色欲| 国产精品ⅴ无码大片在线看.| 国产日韩美女小穴视频网站不卡| 91色综合激情| 丁香五月激情综合| 探花熟女,姿勢到位,體驗感也到位| 亚洲欧美黄| 亚洲天堂资源| 日韩一级二级在线| 九九无码视频| 乱伦一区二区三区‘| 酒色综合网| 人妻少妇久久| 青青草啪啪网| 天天天天干| 亚卅熟女乱色| 国产精品网址| 91综合色噜噜| 亚洲欧美洲综合| 青操影院| 中文字日本乱码| 91蜜臀熟女| 青草av在线| 在线a v| 日本孕妇一区二区视频操逼免费看 | 人妻久久久久久久久久久久久久久| 亚洲高清无码在线桃色| 韩国三级一线观看久| 蜜臀99久久精品久久久久| 亚洲熟妇白浆无码AV| 伊人久久国产免费观看视频| 久久极品一区二区| 欧美视频在线视频免费va| 操逼www.| 成人自拍三级在线观看| 婷婷色综合欧美日韩| 97视频播放| 天天日天天操VV| 亚洲人妻熟妇三十三区| 欧美图片偷拍| 99热国产| 再深点灬舒服灬太大了好硬好爽| 国产精品干干干| 国产亚洲色婷婷久久99精品91 - 百度| 中文字幕制服诱惑| 啊啊啊水好多| 九九九只有精品| 超碰视97中文| 狠操91,com| 日本 免费 一区二区三区 久久香蕉 | com 首页 18岁 禁区 女优 免费 精选 同城 | 国产大陆天天艹| 婷婷av在线中文字幕| 精品一级毛片在线观看| 中文字幕在线免费观看 | 国产免费久久精品99re韩国| 97爱爱影院| 成人久久精品| 九九热精彩视频| 亚洲精品 欧美精品| 色臀aV| 日日碰视频网| 精品人妻一区二区蜜桃视频 | a级理论午夜日本| 免費黃色視頻觀看一| 色综合色色| 这里只有精品视频在线| 亚洲色图久久精品蜜| 神马福利久草| 亚洲男人的天堂一区二区| 日本999精品视频| 欧美aⅴ99久久黑人专区| 精品一二三区女同 | 国产精品视频一区二区三区八戒| 艹少妇网站| 精品毛片久久久精品毛片| 肉嘟嘟www视频在线观看高清| 在线精品福利免费播放| 国产女生在线| 亚洲一本大道中文字幕无码在线| 国产精品无码在线| 欧美成人黄网色网站| 日韩不卡av一二三| 黄色毛片A片| 韩国一级AAA| 亚洲AV无码黄色强奸| 强奸乱伦动态污图免费 | 亚洲天堂日本| 天天爱综合网| 噜噜噜噜天天狠狠| 日韩射图| 97亚洲中文| 探花精品 一区二区| 国产中出内射一区二区| 国产乱色国产精品免费视| 亚洲日韩美女中文字幕乱| 爱av免费| 1024香蕉视频| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 人妻中文字幕精品无码| www.大香| av一区二区三区 中文| 999久久久精品国产| 一区二区久久天天干狠狠| 久久精品一区| 天天射夜夜| 日本孕妇孕交| 2020中文字幕在线观看| 人人弄人人摸| 成人性爱av.com| 激情专区综合| 亚洲国产精品乱码在线观看| 欧美情色男人的天堂| 无码男人天堂| 亚洲精品乱码久久久久久蜜桃麻豆| henhen91| 欧美性爱综合,免费| 久久东京伊人一本到鬼色| 日韩精品一区的| 亚殴在线| 欧美天堂日韩三级国产传媒| 日本加勒比无码专区一二三| 久久久久久十| 日韩三级在线观看网站| 国产精品久久久久中文字幕| 午夜丁香婷婷| 人妻插插人妻人| 欧美97视频| 公司1区2区3区精产精| 91骚熟女| 精品高清一区二区三区三州| 91九色精品熟女内射| 99re不伦| 后入福利| 亚洲精品久久久久毛片A片拉屎| 久久精品人人做人人看| 日本免费亚洲欧美| 麻豆国产原创AV色哟哟| 91欧美丝袜| 天天综合网网欲色| 久久一区二区高清免费| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 综合欧美亚洲| 亚洲啪啪视频一区二区| 日本在线不卡123| 麻豆区久久久久亚| 中国操逼无码| 99色在线视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 深夜激情 | 国产精品日本无码A片| 亚洲高清在线| 欧美日韩亚洲五月天婷婷| 操人妻视频| 人妻在线视频| 久久久穴999| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 操亚州| 97色碰| 女人高潮大叫一级毛片| 日韩精品第3页| 国产极品馒头逼| 五月婷婷爱六月丁香色| 不卡一区视频| 国产真乱mangent| 亚洲人妻一区二区三区| 五月天欧美色图| 欧美日韩啪啪电影| 欧美 亚洲 综合 制服| 97在线日韩中文字幕| 亚洲一曲日韩精品| 女一区二区| 九草九九九| 精品美女人人干| 五月丁香激情啪啪| 中文字幕人成乱码熟女香港| 天天干夜夜操一区二区| 少妇三P| 97色伦欧美| 婷婷丁香久久| 国产在线视视频有精品| 思思性爱| 国产精品美女在线一区| CCYY草草影院地址入口| 天美传媒AV在线播放| 啪啪啪男女亚洲中文字幕99| 欧亚揄拍偷拍精品视频 | 大香网站| 日本三级网页| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 国产污视频麻豆传媒一区二区| 久草成人福利导航| 女人的久久久| 91男女啊啊啊| 内射中出日韩在线观看视频| 天天综合网一91网| yazhousetuoumei| 亚洲男人的天堂V| 伊人久久亚洲色欲综合网站 | 嗯啊不要啊在线| 激情网五月天| 天天色综合图片| 久久国产99精品72福利| 后入人妻一区| 亚洲国产青青| 日韩BBN| 亚洲色电影在线| 在线免费观看高清无码视频| 香蕉欧美| www.久久最新地址| 婷婷九月色| 99精品丰满人妻无| 日夜干射色啊| 亚洲一区中文字幕| 日韩欧美大片免费高清啪啪| 国模艳艳啪啪一区| 伊人五月天| 精品999日本| 美女高潮国产高清| 日本操逼视频不卡直接放| 日韩激情中文字幕有码| 国产剧情一区在线观看| 超碰97最新人妻| 99久草| 影视综合无码少妇| 思思热在线观看| 热久日综合| 天天综合-91入口| 日韩欧美一级特黄大片| 日本美女性生活久久久久久久| 免费超碰97久久| 丁香五月激情网| 中日韩久久人妻一区二区| K8久久久久| 亚洲国产欧美另类自拍| 亚洲国产欧美日韩人妻日中文| 亚洲日韩久久精品一区| 搡老女人老91妇女老熟女| 欧美特大黄一级片片免费| 久久夜嗨| 久久久久久九九九九| 欧美日韩第一页| 亚洲色图 图片| 一级岛国大片| 久久99黄色卞西瓜| 91美女在线| 九九久久综合| 欧美,亚洲,日韩,v,天堂,手机在线观看| 国产狂喷潮在线精品| 粉嫩国产精品久久粉嫩| 人人操超碰在线| 在线人人人人人人精品超| 久久夜夜夜| 久久久久久亚洲Av无码| 男人天堂.AB| 肏逼视频日本| 久久国产99精品72福利| 蜜臀99久久精品久久久久| 丁香五月激情啪啪| 久久伊人影院| 美女尤物福利视频| 亚洲在饯| 嫩草 人人网精品| 91国产操逼视频| 四虎AV影视国产精品亚洲精品| 中日韩一区二区三区欧美| 淫色网综合| 人人操,人人插| 亚州色图欧美| 风流老熟女一区二区三区l| 啊啊啊啊啊啊啊在线| 国产在线视视频有精品| 天天影视91看看| 国产av尤物| 欧美Aⅴ| 久久久久78| 亚洲精品乱码久久久久久蜜桃麻豆| 97在线观看免费| 婷婷爱五月| 国产在线综合网| 色麻豆AV| 青草av在线| 欧美亚洲自拍另类人妻| 久久久111| 性一交一乱一交A片久久四色| 天美91| 日欧毛片久久| 成人在线日韩| 天堂69亚洲精品中文字| 精品欧美日韩在线观看| 99操| 久久受www免费人成| 骚熟女AV网| 欧洲中文字幕| 熟女乱伦二区| 国产精品黑人一区二区三区| 中文字幕精品专区搜索结果91| 免费视频无码| 99精品国产户外露出| 骚逼高潮久久精品| 日本加勒比无码专区| 黄色网址久久精品欧美喷水| 一级做受视频免费是看美女| 男人天堂无码| 日本99一区二区| 五月丁香综合激情|