<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Maple Blog</title><description>分享网络技术、服务器部署、内网穿透、静态网站搭建、CDN优化、容器化部署等技术教程与实践经验的个人技术博客，专注于云原生、无服务器架构和前后端开发，作者为作者是云汐月</description><link>https://blog.oowo.cc/</link><language>zh_CN</language><item><title>[复盘] 关于我的小博客遭遇了开站以来最大的一次攻击——20万请求、1Gbps峰值瞬发</title><link>https://blog.oowo.cc/posts/my-static-blog-ddos-vercel-to-cloudflare-migration/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/my-static-blog-ddos-vercel-to-cloudflare-migration/</guid><description>本文您将看到：国宾待遇、赛博拆迁、移形换影、嘲讽拉满。……难道这就是黑暗森林？</description><pubDate>Sun, 04 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;本站建站之初坚持使用 &lt;strong&gt;静态 (Static)&lt;/strong&gt; 架构，就是为了防这一手。
你想啊，一个静态网站，没有数据库，没有后端计算。所有的攻击流量本质上都是打在 &lt;strong&gt;CDN 的边缘节点&lt;/strong&gt; 上。
换句话说，攻击者不是在打我，是在打 &lt;strong&gt;整个 CDN 厂商&lt;/strong&gt;。
理论上这不仅难打死，而且没必要——毕竟静态站背后没有利益，纯粹是白打。&lt;/p&gt;
&lt;p&gt;但我万万没想到，2026 年的第 3 天，真的有人花钱给我看了个赛博烟花。&lt;/p&gt;
&lt;h2&gt;起因&lt;/h2&gt;
&lt;p&gt;2026 年的第 3 天，原本以为是个平静的元旦假期，我照惯例优化了一下图床，把主站域名 &lt;code&gt;oowo.cc&lt;/code&gt; 迁移到 &lt;code&gt;华为云&lt;/code&gt; 做根据地域的 Cloudflare 优选。&lt;/p&gt;
&lt;p&gt;就在愉快的Coding时，Outlook弹出的通知打破了宁静。&lt;/p&gt;
&lt;h2&gt;第一章：初现端倪&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104202654346.CP0An4oC_Z1VQ26O.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“Your site is growing!”&lt;/strong&gt;
看到这条邮件时，我还在想：哇奥，博客流量见长啊？是不是哪篇文章火了？
我一开始真没当回事，一直专心在调整手上的新DNS。&lt;/p&gt;
&lt;p&gt;结果第二条出现了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104202720202.C04f-0K5_Z1UgNvQ.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Vercel Hobby Plan 的 100GB 流量已耗尽。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;众所周知，Vercel 还是比较良心的，&lt;strong&gt;但是到额之后不会立刻停机，通常可以跑到300%倍流量才会 Pause 项目&lt;/strong&gt;
我心想：这得多大的流量才能瞬间秒杀 100G？&lt;/p&gt;
&lt;p&gt;事实证明，我还是太年轻了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104202734694.B_uQMjmx_1vl8Gl.webp&quot; alt=&quot;&quot; /&gt;
很快啊，我很快就注意到这条 标题带Emoji的通知了。
这时我意识到不对劲，于是就前往Vercel控制台看了一眼。&lt;/p&gt;
&lt;h2&gt;第二章：被打死了&lt;/h2&gt;
&lt;p&gt;好嘛，真是被刷了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104180545889.CUfreaQN_1c3SJi.webp&quot; alt=&quot;IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104180545889.png&quot; /&gt;
流量曲线不是“增长”，是&lt;strong&gt;垂直起飞&lt;/strong&gt;。
由于超出3倍允许用量，被 Vercel 直接给 &lt;strong&gt;pause&lt;/strong&gt;了。&lt;/p&gt;
&lt;h3&gt;看眼流量详细&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104174017440.C0_EjmaV_Z2wPNW3.webp&quot; alt=&quot;IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104174017440.png&quot; /&gt;
可以看到Vercel也是燃尽了，没配置过防火强，默认的流量明细内能看到Vercel被请求了&lt;strong&gt;14.6 万&lt;/strong&gt; 次请求。
主要的攻击请求都被 Vercel 的防火强识别命中，命中的规则也是 &lt;strong&gt;DDoS Mitigation&lt;/strong&gt;，命中次数就到到了 &lt;strong&gt;15.9M&lt;/strong&gt;。
但还是有不少漏网之鱼是真正打进去了，漏进来的 2% 足以致命。&lt;/p&gt;
&lt;h2&gt;第三章：谁在打我？&lt;/h2&gt;
&lt;p&gt;我扒了一下日志，给我气笑了。&lt;/p&gt;
&lt;p&gt;这些肉鸡没有去刷我的 HTML 首页，而是死盯着我的一张图片素材( &lt;code&gt;/assets/home/home.png&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;没错，这张图片就是本站的 favicon，这张 favicon 是用于&lt;strong&gt;交换友链&lt;/strong&gt;专用的站点 Logo 。&lt;/p&gt;
&lt;p&gt;这张图片大小是十分标准的496KB，分辨率 1024x1024 的 png 图片。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;IP&lt;/th&gt;
&lt;th&gt;纯净度&lt;/th&gt;
&lt;th&gt;公共代理&lt;/th&gt;
&lt;th&gt;代理类型&lt;/th&gt;
&lt;th&gt;使用场景&lt;/th&gt;
&lt;th&gt;ASN&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;20.80.217.164&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;是&lt;/td&gt;
&lt;td&gt;匿名VPN服务&lt;/td&gt;
&lt;td&gt;数据中心 | VPN | 云厂商&lt;/td&gt;
&lt;td&gt;微软&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;52.156.152.157&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;是&lt;/td&gt;
&lt;td&gt;公共代理&lt;/td&gt;
&lt;td&gt;数据中心 | 公共代理 | 云厂商&lt;/td&gt;
&lt;td&gt;微软&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;48.222.214.47&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;是&lt;/td&gt;
&lt;td&gt;公共代理&lt;/td&gt;
&lt;td&gt;数据中心 | 公共代理 | 云厂商&lt;/td&gt;
&lt;td&gt;BHS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;没有 Referer，没有浏览器特征，对着我的 Favicon 也就是那张 &lt;code&gt;home.png&lt;/code&gt; 狂薅。&lt;/p&gt;
&lt;p&gt;那你都打我了，我只能老实了。&lt;/p&gt;
&lt;h2&gt;第四章：老实了，你打我我跑就是了&lt;/h2&gt;
&lt;p&gt;既然都被打Vercel懵逼了的同时流量还很大，那就不得不迁移平台了，需要一个流量刷光不会被pause的平台，并且对中国大陆的访问不至于很炸裂的平台。&lt;/p&gt;
&lt;p&gt;已经有的可以优先加速的平台就那么几个，既然这回被攻击之后，选平台就不能只看“好不好用”，得看“耐不耐操”。
对于一个面向大陆访问、偶有 DDoS 风险的静态博客，各大平台的表现如下：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;线路质量 (大陆)&lt;/th&gt;
&lt;th&gt;底层/CDN厂家&lt;/th&gt;
&lt;th&gt;抗D能力&lt;/th&gt;
&lt;th&gt;可选？&lt;/th&gt;
&lt;th&gt;辣评&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vercel&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Amazon/CF&lt;/td&gt;
&lt;td&gt;⚠️ &lt;strong&gt;一般&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;本次受害者&lt;/strong&gt;。开发者体验满分，软限制，但是跑超了还得死&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Netlify&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Amazon/Fastly&lt;/td&gt;
&lt;td&gt;💀 &lt;strong&gt;差&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;CI/CD是真好用，但是100G流量是硬限制，到了就死&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Render&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;B-&lt;/td&gt;
&lt;td&gt;Cloudflare&lt;/td&gt;
&lt;td&gt;⚠️ &lt;strong&gt;一般&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Vercel 的平替，速度平平无奇。用来跑后端还行，静态博客没必要选它。100G限制，超了就停&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Zeabur&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;AWS/GCP/腾讯云/火山云&lt;/td&gt;
&lt;td&gt;💸按量计费&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;国产之光，线路和体验极佳。但它是&lt;strong&gt;按流量计费&lt;/strong&gt;的！遇到 DDoS 就是“一夜一套房”。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ClawCloud&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;阿里云&lt;/td&gt;
&lt;td&gt;💸按量计费&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;就美国绑定自定义域名可以签发ssl证书，其它地区全炸了。亚太地区好像是被墙了，tcping只有香港和tw是绿的，大陆地区全红&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GitHub Pages&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Fastly&lt;/td&gt;
&lt;td&gt;🛡️ &lt;strong&gt;强&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;众生平等&lt;/strong&gt;。虽然免费且抗揍，但在国内的访问速度约等于 404，不仅防住了黑客，也防住了访客。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloudflare Pages&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;B-&lt;/td&gt;
&lt;td&gt;Cloudflare&lt;/td&gt;
&lt;td&gt;God 神&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;最后防线&lt;/strong&gt;。来，往这打！&amp;lt;br&amp;gt;优选后线路高度可用。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tencent EdgeOne&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;S&lt;/td&gt;
&lt;td&gt;腾讯云&lt;/td&gt;
&lt;td&gt;🛡️ &lt;strong&gt;S&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;免费版套餐无限流量，缺点就是eopages还是对有些函数支持不太行，备案之后访问是神。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Aliyun ESA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;阿里云&lt;/td&gt;
&lt;td&gt;⚠️ &lt;strong&gt;一般&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;腾讯的死对头&lt;/strong&gt;。阿里云和 EdgeOne 属于卧龙凤雏。&amp;lt;br&amp;gt;备案之后免费套餐就是国内访问的神，不备案？那就是屎。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最终综合考量维护复杂度和国内用户的访问体验，选择了 &lt;strong&gt;Tencent EdgeOne&lt;/strong&gt; 作为国内的Pages加速，国际段则使用 &lt;strong&gt;Cloudflare Pages&lt;/strong&gt;，使用 华为云 的 DNS 做 &lt;em&gt;GeoDNS&lt;/em&gt;。&lt;/p&gt;
&lt;h2&gt;第五张：迁移之后...真的安全了吗?&lt;/h2&gt;
&lt;p&gt;进行了一个光速的迁移，由于是直接部署编译并且更换了CNAME到 EO 给的地址，所以攻击路径直接被我引到腾讯云上了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104182956266.CZpLbjRo_Z7V4ev.webp&quot; alt=&quot;IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104182956266.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;正当我以为没事情了，一切交给腾讯云的WAF了，我就去改博客被攻击的文件名了。&lt;/p&gt;
&lt;p&gt;刚切到腾讯云 EdgeOne 不到五分钟，警报拉响。&lt;/p&gt;
&lt;p&gt;请求量瞬间从 &lt;strong&gt;400&lt;/strong&gt; 飙升到 &lt;strong&gt;几万&lt;/strong&gt;，峰值带宽直接干到了 &lt;strong&gt;1.0 Gbps&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/Pasted%20image%2020260104183729.DLDle6e0_1gRG4r.webp&quot; alt=&quot;IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104183536610.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;你没有看错，从 &lt;strong&gt;2026-1-3 22:00 - 2026-1-3 22:55&lt;/strong&gt; 这个时间段，总共被请求了 &lt;strong&gt;224.29万&lt;/strong&gt; 次CDN，也就是攻击者还在疯狂的刷我的 &lt;code&gt;head.png&lt;/code&gt; 这张图
查看攻击者排行，发现集中在香港、&lt;strong&gt;中国大陆&lt;/strong&gt;、美国、新加坡 这几个地区发起的请求。
甚至有人用中国联通的家宽攻击我，还有Cloudflare也上来了。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;IP信息&lt;/th&gt;
&lt;th&gt;威胁&lt;/th&gt;
&lt;th&gt;VPN?&lt;/th&gt;
&lt;th&gt;代理详细&lt;/th&gt;
&lt;th&gt;分类&lt;/th&gt;
&lt;th&gt;AS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;188.253.12.1&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;是&lt;/td&gt;
&lt;td&gt;匿名VPN服务&lt;/td&gt;
&lt;td&gt;数据中心 | VPN&lt;/td&gt;
&lt;td&gt;Akari&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;103.151.172.86&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;td&gt;否&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;数据中心&lt;/td&gt;
&lt;td&gt;KIDC Limit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;154.92.130.36&lt;/td&gt;
&lt;td&gt;88&lt;/td&gt;
&lt;td&gt;是&lt;/td&gt;
&lt;td&gt;匿名VPN服务&lt;/td&gt;
&lt;td&gt;数据中心 | VPN&lt;/td&gt;
&lt;td&gt;Stacks Inc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;212.135.214.5&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;是&lt;/td&gt;
&lt;td&gt;Skyline VPN&lt;/td&gt;
&lt;td&gt;数据中心 | VPN&lt;/td&gt;
&lt;td&gt;CYBERVERSE JP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;203.198.248.246&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;否&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;家宽&lt;/td&gt;
&lt;td&gt;HKT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;103.156.242.229&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;td&gt;否&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;数据中心&lt;/td&gt;
&lt;td&gt;Raid Networks Co., Ltd.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;185.220.238.121&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;否&lt;/td&gt;
&lt;td&gt;匿名VPN服务&lt;/td&gt;
&lt;td&gt;数据中心 | VPN&lt;/td&gt;
&lt;td&gt;Akari&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;39.64.20.174&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;否&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;家宽&lt;/td&gt;
&lt;td&gt;China Unicom Shandong Province Network&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;46.3.240.103&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;是&lt;/td&gt;
&lt;td&gt;匿名VPN服务&lt;/td&gt;
&lt;td&gt;数据中心 | VPN&lt;/td&gt;
&lt;td&gt;Akari&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;104.28.211.105&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;td&gt;是&lt;/td&gt;
&lt;td&gt;(CPN) Consumer Privacy Network&lt;/td&gt;
&lt;td&gt;数据中心 | CPN&lt;/td&gt;
&lt;td&gt;Cloudflare&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3&gt;小打小闹该结束了。&lt;/h3&gt;
&lt;p&gt;不想跟他们玩了，直接修改 &lt;code&gt;head.png&lt;/code&gt; 改到别的地方和文件名，push！结果效果嘛……？
&lt;img src=&quot;./images/my-static-blog-ddos-vercel-to-cloudflare-migration/Pasted%20image%2020260104184435.png&quot; alt=&quot;Pasted image 20260104184435.png&quot; /&gt;
修改文件名之后，攻击依旧没有停止，但是状态码返回了200万次 404 是怎么回事呀？好难猜呀！&lt;/p&gt;
&lt;p&gt;它们还在傻傻地请求旧链接。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./images/my-static-blog-ddos-vercel-to-cloudflare-migration/Pasted%20image%2020260104184504.png&quot; alt=&quot;Pasted image 20260104184504.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;看着后台日志里那 &lt;strong&gt;200多万次&lt;/strong&gt; 的 &lt;code&gt;404 Not Found&lt;/code&gt;，我甚至有点想笑。你们继续刷吧，这点 404 流量，跟挠痒一样。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;第五章：赛后总结&lt;/h2&gt;
&lt;p&gt;第二天之后很显然流量比昨天少不少了，命中的次数也少很多了。估计是对面发现打了一晚上全是 404，或者那个买来的 DDoS 攻击时间到了。
&lt;img src=&quot;./images/my-static-blog-ddos-vercel-to-cloudflare-migration/Pasted%20image%2020260104190504.png&quot; alt=&quot;Pasted image 20260104190504.png&quot; /&gt;
&lt;img src=&quot;./images/my-static-blog-ddos-vercel-to-cloudflare-migration/Pasted%20image%2020260104190244.png&quot; alt=&quot;Pasted image 20260104190244.png&quot; /&gt;
虽然流量还在跑，但 404 页面只有几 KB，相比之前的大图，流量消耗直接降低了 99%。
就是截止目前还是有莫名其妙的东西在扫我改过名字的favicon文件，状态码200已经达到了20.6万次。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;番外篇：乐子来了&lt;/h2&gt;
&lt;p&gt;被打的第二天中午，群友的静态站也被打了
&lt;img src=&quot;https://blog.oowo.cc/_astro/7cf756f8f787326b870195af99f7c0f4.BnRfJDzR_14HJbe.webp&quot; alt=&quot;Pasted image 20260104190244.png&quot; /&gt;
该群友也是使用的Vercel，也是静态站。表示被打爆了切CF了。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;我人还在，站还活着，不仅白嫖了腾讯的带宽，还水了这篇博文。 &lt;strong&gt;这波啊，这波是双赢（我赢两次）。&lt;/strong&gt; 😎&lt;/p&gt;
&lt;p&gt;其实Edgeone Page 无备案也不那么难用嘛~
&lt;img src=&quot;https://blog.oowo.cc/_astro/IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104194031307.IeUeZzpJ_wreIv.webp&quot; alt=&quot;IMG-my-static-blog-ddos-vercel-to-cloudflare-migration-20260104194031307.jpeg&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>VPS常用脚本</title><link>https://blog.oowo.cc/posts/vps-scripts/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/vps-scripts/</guid><description>收集的常用脚本包括快捷配置脚本~</description><pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;MJJ你们好，这个地方会放上我开始MJJ以来用过的所有脚本和网站，会给脚本做简单的分类和介绍，同时给出项目原地址，方便大家溯源查找，当你想不起来某个脚本的时候，可以来这里看看哦。&lt;/p&gt;
&lt;h3&gt;初始化脚本&lt;/h3&gt;
&lt;h4&gt;新机到手初始化密码&amp;amp;新建用户&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -sSL https://raw.githubusercontent.com/Mapleawaa/VPS-Init-Tools/refs/heads/main/init-cn.sh)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;融合脚本&lt;/h3&gt;
&lt;h4&gt;&lt;a href=&quot;https://github.com/spiritLHLS&quot;&gt;融合怪&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh &amp;amp;&amp;amp; chmod +x ecs.sh &amp;amp;&amp;amp; bash ecs.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692ef5387313ea6c250ea0b2.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;最强大的一键脚本之一，顺序测试和单项测试覆盖极为广泛，基本一键完成。&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;https://www.nodeseek.com/post-297125-1&quot;&gt;NodeQuality&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -sL https://run.NodeQuality.com)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692ef6067313ea6c250ea390.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;MJJ最喜爱的一键脚本，也是最方便的，买机卖机都是默认看这个作为测试结果&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;https://kejilion.sh/index-zh-CN.html&quot;&gt;脚本工具箱&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -sL kejilion.sh)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692f07457313ea6c250f36a9.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;超多功能，一键开启linux管理之旅&lt;/p&gt;
&lt;h3&gt;ip质量&lt;/h3&gt;
&lt;h4&gt;&lt;a href=&quot;https://github.com/xykt/IPQuality&quot;&gt;IP质量体检脚本&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -Ls https://IP.Check.Place)
//指定检测网卡
bash &amp;lt;(curl -Ls https://IP.Check.Place) -i eth0
//指定代理服务器
bash &amp;lt;(curl -Ls https://IP.Check.Place) -x http://username:password@proxyserver:port
bash &amp;lt;(curl -Ls https://IP.Check.Place) -x https://username:password@proxyserver:port
bash &amp;lt;(curl -Ls https://IP.Check.Place) -x socks5://username:password@socksproxy:port
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692ef6d67313ea6c250ea633.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;https://ipdata.co/&quot;&gt;ipdata&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692efb597313ea6c250eb79f.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;网络质量&lt;/h3&gt;
&lt;h4&gt;&lt;a href=&quot;https://github.com/xykt/NetQualit&quot;&gt;网络质量体检脚本&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -Ls https://Net.Check.Place)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692ef76f7313ea6c250ea80d.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;https://github.com/nxtrace/NTrace-core&quot;&gt;nexttrace&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;curl -sL nxtrace.org/nt |bash
nexttrace 1.0.0.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692f107d7e390957debc06d5.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;https://ping.pe/&quot;&gt;pingpe&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692efad77313ea6c250eb5e7.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;https://www.itdog.cn/&quot;&gt;itdog&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692efb0a7313ea6c250eb691.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;https://bgp.tools/&quot;&gt;BGPTOOLS&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692efbc37313ea6c250eb9a0.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;流媒体测试&lt;/h3&gt;
&lt;h4&gt;&lt;a href=&quot;https://github.com/lmc999/RegionRestrictionCheck&quot;&gt;流媒体测试&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;bash &amp;lt;(curl -L -s check.unlock.media)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692ef7dc7313ea6c250ea98c.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;最全的流媒体测试平台，常见不常见的基本全都有&lt;/p&gt;
&lt;h3&gt;性能测试&lt;/h3&gt;
&lt;h4&gt;bench&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;wget -qO- bench.sh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692ef9b67313ea6c250eb240.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;https://github.com/masonr/yet-another-bench-script&quot;&gt;yabs&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;curl -sL https://yabs.sh | bash
或者
wget -qO- yabs.sh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692f01d37313ea6c250f2486.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;网络调优(BBR/TCP)&lt;/h3&gt;
&lt;h4&gt;&lt;a href=&quot;https://blog.ylx.me/&quot;&gt;BBR&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;wget http://sh.xdmb.xyz/tcp.sh &amp;amp;&amp;amp; bash tcp.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://pic1.imgdb.cn/item/692efa157313ea6c250eb368.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;&lt;a href=&quot;https://xdmb.xyz/&quot;&gt;TCP&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;wget sh.xdmb.xyz/d11.sh &amp;amp;&amp;amp; bash d11.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一般不太用，这个参数太暴力&lt;/p&gt;
&lt;h3&gt;大杂烩&lt;/h3&gt;
&lt;h4&gt;&lt;a href=&quot;https://github.com/kkkgo/UE-DDNS&quot;&gt;DDNS脚本&lt;/a&gt;&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;curl -skLo ue-ddns.sh ddns.03k.org  
sh ue-ddns.sh
然后根据提示完成操作
最后设置定时任务
sudo apt-get update
sudo apt-get install cron
crontab -e
*/10 * * * * /root/(你脚本的名字)@cloudflare_IPV4_URL.sh
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>【又测又评】AKILE JPIIJ-ONE | 5G口 IIJ 回程 | 10元/月 300G 流量</title><link>https://blog.oowo.cc/posts/akile-jpiij-one-5g-iij-backhaul-review/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/akile-jpiij-one-5g-iij-backhaul-review/</guid><description>VPS评测~</description><pubDate>Mon, 10 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
AK 家特有的炒鸡属性，导致本机无法直接在商城购买，只能前往二手市场购买二手机或等待补货
本评测型号 原价仅需 &lt;strong&gt;10 元&lt;/strong&gt; ，二手市场均价在 &lt;strong&gt;12-15元&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;本期测评您将看到&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;十元性价比？、晚高峰集体失联、流媒体大满贯、玄学の路由&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;首先过一遍本次参测的机器信息&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项目&lt;/th&gt;
&lt;th&gt;配置&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;价格&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10元/月&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1核 Intel Xeon Gold 6138 @ 2.00GHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;内存&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;512MB (实际可用475MB)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;硬盘&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;流量&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;300GB/月，超出限速&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ASN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AS61112 AKILE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;虚拟化&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;KVM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🎈&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;有&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;⚡ 性能测试&lt;/h2&gt;
&lt;h3&gt;CPU : XEON 6138&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;单核跑分&lt;/strong&gt;: 629.51 分&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;海鲜市场 25 元还包邮，钥匙扣的好选择&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;内存性能&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Copy:   9367.6 MB/s
Scale:  11181.8 MB/s
Add:    11939.8 MB/s
Triad:  11811.6 MB/s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;512MB 要什么内存性能？&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;硬盘性能&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;块大小&lt;/th&gt;
&lt;th&gt;读取IOPS&lt;/th&gt;
&lt;th&gt;写入IOPS&lt;/th&gt;
&lt;th&gt;总和IOPS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;4K&lt;/td&gt;
&lt;td&gt;26.0k&lt;/td&gt;
&lt;td&gt;26.0k&lt;/td&gt;
&lt;td&gt;51.9k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;64K&lt;/td&gt;
&lt;td&gt;1580&lt;/td&gt;
&lt;td&gt;1630&lt;/td&gt;
&lt;td&gt;3210&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;512K&lt;/td&gt;
&lt;td&gt;186&lt;/td&gt;
&lt;td&gt;203&lt;/td&gt;
&lt;td&gt;389&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;94&lt;/td&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;195&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;MJJ 够用～&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;🌐 网络线路&lt;/h2&gt;
&lt;h3&gt;回程路由&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;电信&lt;/strong&gt;: 163普通线路（东京 IIJ → 香港/广州 CN2）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;联通&lt;/strong&gt;: 4837普通线路（东京 IIJ → 上海/广州联通）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移动&lt;/strong&gt;: CMI普通线路 （部分地区能随到 CMIN2 &lt;strong&gt;神奇路由&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;评价&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;三网回程均走IIJ接入，电信走163但绕日本（不可用）&lt;/li&gt;
&lt;li&gt;联通4837稳定，延迟可控&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;探针延迟表现（晚高峰）&lt;/h3&gt;
&lt;h2&gt;&lt;img src=&quot;https://idcflare.com/uploads/default/optimized/3X/f/e/fe4eb0206496ec6a67999506e73e55b2d7fb3435_2_1380x476.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/h2&gt;
&lt;h2&gt;🎬 流媒体解锁&lt;/h2&gt;
&lt;h3&gt;御三家&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Netflix&lt;/strong&gt;: 完整解锁，识别为美区（原生IP），支持非自制剧&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Youtube&lt;/strong&gt;: 东京NRT20S05节点，识别日本&lt;/li&gt;
&lt;li&gt;⚠️ &lt;strong&gt;Disney+&lt;/strong&gt;: 显示&quot;即将开通&quot;（实际未解锁）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;跨国平台大满贯&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;状态&lt;/th&gt;
&lt;th&gt;备注&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Netflix&lt;/td&gt;
&lt;td&gt;✅ 原生&lt;/td&gt;
&lt;td&gt;识别美区&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amazon Prime&lt;/td&gt;
&lt;td&gt;✅ 原生&lt;/td&gt;
&lt;td&gt;日区&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;YouTube&lt;/td&gt;
&lt;td&gt;✅ 原生&lt;/td&gt;
&lt;td&gt;日本东京节点&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TikTok&lt;/td&gt;
&lt;td&gt;✅ 原生&lt;/td&gt;
&lt;td&gt;日区&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spotify&lt;/td&gt;
&lt;td&gt;✅ 原生&lt;/td&gt;
&lt;td&gt;日区注册&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iQiYi&lt;/td&gt;
&lt;td&gt;✅ 原生&lt;/td&gt;
&lt;td&gt;日区&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TVB Anywhere+&lt;/td&gt;
&lt;td&gt;✅ 原生&lt;/td&gt;
&lt;td&gt;日区&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Instagram&lt;/td&gt;
&lt;td&gt;✅ 原生&lt;/td&gt;
&lt;td&gt;授权音频&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sora&lt;/td&gt;
&lt;td&gt;✅ 可用&lt;/td&gt;
&lt;td&gt;可用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ChatGPT&lt;/td&gt;
&lt;td&gt;❓&lt;/td&gt;
&lt;td&gt;不知道为什么识别未知&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude&lt;/td&gt;
&lt;td&gt;✅ 原生&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;td&gt;✅ 原生&lt;/td&gt;
&lt;td&gt;日区&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;厉不厉害你 &lt;strong&gt;AKDNS&lt;/strong&gt; ，这就是主打解锁商家的逆天之处&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;📧 邮件端口&lt;/h2&gt;
&lt;p&gt;不用想用不了滴&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;🔒 IP质量&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;欺诈得分&lt;/strong&gt;: 65/100（较高）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;滥用得分&lt;/strong&gt;: 0（干净）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ASN滥用得分&lt;/strong&gt;: 0.0028（低）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用类型&lt;/strong&gt;: Hosting / Business&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;是否数据中心&lt;/strong&gt;: 多数据库识别为是&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;是否VPN/代理&lt;/strong&gt;: 部分数据库识别为是&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;黑名单记录&lt;/strong&gt;: 0条恶意记录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;正常水平&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;🚀 就近节点测速&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;位置&lt;/th&gt;
&lt;th&gt;上传&lt;/th&gt;
&lt;th&gt;下载&lt;/th&gt;
&lt;th&gt;延迟&lt;/th&gt;
&lt;th&gt;丢包&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;日本东京&lt;/td&gt;
&lt;td&gt;1603.88 Mbps&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4846.27 Mbps&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1.04ms&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;新加坡&lt;/td&gt;
&lt;td&gt;1588.75 Mbps&lt;/td&gt;
&lt;td&gt;2135.24 Mbps&lt;/td&gt;
&lt;td&gt;67.48ms&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;联通上海5G&lt;/td&gt;
&lt;td&gt;480.42 Mbps&lt;/td&gt;
&lt;td&gt;2760.67 Mbps&lt;/td&gt;
&lt;td&gt;71.03ms&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;电信Suzhou5G&lt;/td&gt;
&lt;td&gt;1013.11 Mbps&lt;/td&gt;
&lt;td&gt;533.18 Mbps&lt;/td&gt;
&lt;td&gt;217.28ms&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;东京本地测速接近5Gbps下载&lt;/strong&gt;，带宽给的相当足
国内联通方向表现最好（71ms延迟 + 2.7Gbps下载）
电信方向延迟较高（217ms），且下载速度被限制，电信还是加钱上 CN2 吧&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;🔍 PING值检测（测试时间在晚高峰）&lt;/h2&gt;
&lt;h3&gt;正常响应（&amp;lt;100ms）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;CNN: 19ms&lt;/li&gt;
&lt;li&gt;OpenAI: 62ms&lt;/li&gt;
&lt;li&gt;TG新加坡: 66ms&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;高延迟（&amp;gt;1500ms）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Apple: 1672ms&lt;/li&gt;
&lt;li&gt;Twitch: 1684ms&lt;/li&gt;
&lt;li&gt;Sora: 1686ms&lt;/li&gt;
&lt;li&gt;BBC/NYTimes: 1700+ms&lt;/li&gt;
&lt;li&gt;Microsoft/Bing: 1727-1745ms&lt;/li&gt;
&lt;li&gt;YouTube: 1766ms&lt;/li&gt;
&lt;li&gt;各大主流平台: 1800-2100ms&lt;/li&gt;
&lt;li&gt;Netflix: &lt;strong&gt;5716ms&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;大部分海外平台延迟爆表（1500ms+），Netflix更是突破5秒，但实测流媒体解锁正常，疑似测速时段整段拥堵或者是 DNS 问题🤔&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;💰 总结&lt;/h2&gt;
&lt;h3&gt;✅ 优点&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;性价比炸裂&lt;/strong&gt;: 10元/月解锁Netflix美区 + 一堆流媒体&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;硬盘性能优秀&lt;/strong&gt;: 4K IOPS破5万&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;带宽充足&lt;/strong&gt;: 东京本地近5Gbps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;流媒体全解&lt;/strong&gt;: 主流平台基本全通&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;❌ 缺点&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;邮件端口全封&lt;/strong&gt;: 需要发邮件的直接劝退&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP质量一般&lt;/strong&gt;: 欺诈得分65，部分服务可能受限&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;晚高峰炸裂&lt;/strong&gt;: 大量平台延迟&amp;gt;1500ms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;电信回程拉跨&lt;/strong&gt;: 延迟高且速度受限&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;炒鸡属性&lt;/strong&gt;: &lt;strong&gt;商城买不到，只能蹲二手&lt;/strong&gt;（直接死刑）&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;对于人群&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;✅ 适合&lt;/th&gt;
&lt;th&gt;❌ 不适合&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;- 预算极限想买解锁落地&lt;/td&gt;
&lt;td&gt;- 需要发送邮件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;- 需要日本原生IP解锁流媒体&lt;/td&gt;
&lt;td&gt;- 对延迟稳定性要求高&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;- 轻量建站/机器人托管&lt;/td&gt;
&lt;td&gt;- 电信用户做主力机&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;- 联通用户&lt;/td&gt;
&lt;td&gt;- 需要商城直接购买&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;最终评分&lt;/strong&gt;: ⭐⭐☆☆☆ (2/5星)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;s&gt;第一次写测评，买到一些网红破烂机有感，下次会多买点破烂滚来更新性价比破车&lt;/s&gt;&lt;/p&gt;
</content:encoded></item><item><title>过完星穹铁道新剧情的玩家 belike</title><link>https://blog.oowo.cc/posts/star-rail-story-reaction/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/star-rail-story-reaction/</guid><description>虽然是站桩动画 但是我们项目组想赚钱</description><pubDate>Wed, 05 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;./images/Pasted%20image%2020251206210725.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>关于AI Code 客户端 Qwen-Code 的小白吐槽</title><link>https://blog.oowo.cc/posts/qwen-code-newbie-rant/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/qwen-code-newbie-rant/</guid><description>二开Gemini CLI的工具都要先保持质疑！！！</description><pubDate>Mon, 13 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;本文是碎碎念加小吐槽，仅基于本人观点和本人视角，作为一个新手小白的角度随笔文章。欢迎各位指出问题和友善交流。&lt;/p&gt;
&lt;p&gt;如题，原本我是很喜欢用 Qwen-Code-Cli 的，甚至你是可以看到我在推荐性价比编程方式的时候也在推荐 Qwen-Cli。&lt;/p&gt;
&lt;p&gt;但是最近在维护我的 PVE-Tools 9 项目的时候发现了一个很严重的问题&lt;/p&gt;
&lt;h2&gt;第一：死循环读文件失败&lt;/h2&gt;
&lt;p&gt;使用 &lt;code&gt;coder-model&lt;/code&gt; 模型，修改程序中出现明确问题时，会陷入一直重复读取的死循环。&lt;br /&gt;
具体死循环过程：&lt;br /&gt;
&lt;code&gt;读取文件 Line1-500 --&amp;gt; 错误，使用 read_file 重新读取 --&amp;gt; 错误，重新搜索读取 --&amp;gt; 读取成功&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;分片 Read 同时会出现读取文件读一半出现错误，写文件写一半出现错误这种十分烦人的情况。&lt;br /&gt;
&lt;code&gt;/quit&lt;/code&gt; 结束对话的总结部分，可以看到 &lt;code&gt;60 ✅ 13 ❌&lt;/code&gt;这样的统计信息。光读取报错就已经有些烦人了。&lt;/p&gt;
&lt;h2&gt;第二：Token 速度、代码质量堪忧&lt;/h2&gt;
&lt;p&gt;首先我的代码文件 共 2665 行，是 shell 脚本。&lt;br /&gt;
使用 &lt;code&gt;coder-model&lt;/code&gt; 会出现修改问题改不明白、等待时间长这两个影响最大的问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Token 速度堪忧&lt;/strong&gt;：我提出明确代码出现的错误表现，携带日志插入上下文中的日志文件让模型读取，提示明确的错误点让其自动修改，Qwen 能改，但是平均一条修改内容只有一 15 行左右的代码需要平均 15mins 才能完成思考–&amp;gt; 修改–&amp;gt; 检查 这三个流程。首字时间是 12 tokens/s，多天不同时间测试均能复现问题。可能是负载上去了分给用户的资源不足？但是&lt;strong&gt;明显第一周使用的时候体验最好&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;代码质量堪忧&lt;/strong&gt;：我此处说的 代码质量堪忧 主要体现在 Debug 场景，回到一开始提到的问题就是一读代码出现问题陷入循环，造成无用上下文，输出的代码在使用编辑器编辑的时候会出现携带不应该出现的上下文，随后检查的时候发现错误，读取内容并且修改回去，重复调用工具塞满上下文。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;总结，我还是很喜欢 Qwen-Coder 这个模型，作为成本较低的开发选择还是不错的，就是 Qwen-Code-Cli 有这些奇奇怪怪的小问题，不知道佬们有没有一样的体验。目前我自用的方案已经大换血了：主力使用 N 佬的 API 搭配 Claude Code，国产模型主要用 硅基流动 / 官网 / 魔搭的 GLM4.6 配 Roo-Code，解决问题的速度比原先依赖 Qwen-Code 快了不少，开发体验也好了不少，算是新手小白的一个小毕业配置 (？)&lt;/p&gt;
&lt;p&gt;&lt;s&gt;怪不得佬们都在折腾 Claude ，是真好用啊，这 A​出 z怎么这么坏啊&lt;/s&gt;&lt;/p&gt;
</content:encoded></item><item><title>一个用于 1Panel WAF 的现代化的拦截页面</title><link>https://blog.oowo.cc/posts/1panel-waf-modern-blocking-page/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/1panel-waf-modern-blocking-page/</guid><description>一个用于 1Panel WAF 的现代化的拦截页面</description><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;&lt;a href=&quot;https://github.com/Mapleawaa/1Panel-WAF-Block-Page&quot;&gt;GitHub - Mapleawaa/1Panel-WAF-Block-Page: 用于 1Panel 专业版的 WAF 拦截界面&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./images/Pasted%20image%2020251206205249.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;用于 1Panel 专业版的 WAF 拦截界面&lt;/p&gt;
&lt;h1&gt;没错就是这么简单&lt;/h1&gt;
&lt;p&gt;:::warning
只有 1Panel &lt;strong&gt;专业版&lt;/strong&gt; 才可以修改自定义界面。
:::&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;界面展示&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./images/Pasted%20image%2020251206205741.png&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;./images/Pasted%20image%2020251206205736.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;内容修改&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;./images/Pasted%20image%2020251206205714.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;对 WAF 界面加载速度的影响&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;表情包图已经写死 Base64 在界面内，不影响加载速度&lt;/em&gt;&lt;br /&gt;
背景图源因为是 EdgeOne Function 在初次加载的时候可能会有 1s 的加载时间，可调整质量加快速度。（&lt;em&gt;可也以删去背景图部分，默认纯白背景&lt;/em&gt;）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./images/Pasted%20image%2020251206205754.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Trae 接阿里云百炼被反薅了 T.T</title><link>https://blog.oowo.cc/posts/trae-aliyun-bailian-unexpected-bill/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/trae-aliyun-bailian-unexpected-bill/</guid><description>还好账户里没钱（ 不然我的钱钱就消失了不给我开用完即停真坏死了！！</description><pubDate>Mon, 25 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;./images/Pasted%20image%2020251206211440.png&quot; alt=&quot;Pasted image 20251206211440.png&quot; /&gt;
&lt;img src=&quot;./images/Pasted%20image%2020251206211450.png&quot; alt=&quot;Pasted image 20251206211450.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;事情是这样的，今天看到有佬测试过 DeepseekV3.1 写代码，提到了 Qwen-Coder 写代码比 Claude 好一点，我就去阿里云搞了个 KEY 玩一下，想着百万 Token 额度应该够品鉴一下的吧（？）&lt;/p&gt;
&lt;p&gt;于是就在 Trae 配置好供应商阿里云，debug 和 review 了一下我上个月写的 JavaMC 模组。&lt;br /&gt;
没想到品鉴了半个小时左右，我就去和朋友玩三角娄子去了，打完收到一条短信：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;【阿里云】尊敬的Mal*0224：您的1个百炼大模型推理实例因欠费2.81元，累计欠费2.81元，预计将在2025-08-25 22时停止服务。请您尽快充值。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还好账户里没钱（ 不然我的钱钱就消失了&lt;/p&gt;
</content:encoded></item><item><title>快速部署新一代探针服务 —— Komari</title><link>https://blog.oowo.cc/posts/deploy-new-generation-probe-komari/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/deploy-new-generation-probe-komari/</guid><description>是否厌倦了哪吒V1繁琐的配置、一层包一层的配置选项……本文教你如何快速搭建一个全新的小鸡监控探针平台。</description><pubDate>Thu, 07 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;是否厌倦了哪吒V1繁琐的配置、一层包一层的配置选项……&lt;s&gt;（没有拉踩的意思，大家一起进步）&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;本文教你如何快速搭建一个全新的小鸡监控探针平台。&lt;/p&gt;
&lt;h2&gt;原文介绍&lt;/h2&gt;
&lt;p&gt;Komari 是由&lt;a href=&quot;https://www.nodeseek.com/space/16791&quot;&gt;Doornail&lt;/a&gt;开发的一款轻量级的自托管服务器监控工具，旨在提供简单、高效的服务器性能监控解决方案。它支持通过 Web 界面查看服务器状态，并通过轻量级 Agent 收集数据。Komari完全开源，包括前端网页。&lt;a href=&quot;https://github.com/komari-monitor/komari&quot;&gt;komari-monitor/komari&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Komari使用Websocket通信，&lt;strong&gt;只要你的CDN支持、就可以通过CDN与Agent建立连接&lt;/strong&gt;，无需准备多个域名。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Demo站点: &lt;a href=&quot;https://www.nodeseek.com/jump?to=https%3A%2F%2Fkomari.akz.moe&quot;&gt;https://komari.akz.moe&lt;/a&gt; , 账号 &lt;code&gt;admin&lt;/code&gt; 密码 &lt;code&gt;azVlSV80dhM6&lt;/code&gt;
(Demo站点将只开放一段时间，&lt;strong&gt;请不要&lt;/strong&gt;将允许远程控制的Agent安装到Demo站点)
(另：Demo站点用的白嫖的AWS EC2，随时停机)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;快速开始&lt;/h2&gt;
&lt;h3&gt;需要的材料&lt;/h3&gt;
&lt;p&gt;1.一台24小时在线的主机端，运行任意发行版系统。&lt;/p&gt;
&lt;h3&gt;1. 使用一键安装脚本&lt;/h3&gt;
&lt;p&gt;适用于使用了 systemd 的发行版（Ubuntu、Debian...）。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://raw.githubusercontent.com/komari-monitor/komari/main/install-komari.sh -o install-komari.sh
chmod +x install-komari.sh
sudo ./install-komari.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. Docker 部署 &lt;strong&gt;「推荐」&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;创建数据目录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p ./data
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行 Docker 容器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run -d \
  -p 25774:25774 \
  -v $(pwd)/data:/app/data \
  --name komari \
  ghcr.io/komari-monitor/komari:latest
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;国内服务器部署可以使用 &lt;code&gt;ghcr.nju.edu.cn&lt;/code&gt; 加速拉取&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;查看默认账号和密码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker logs komari    
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;你也可以通过环境变量 &lt;code&gt;ADMIN_USERNAME&lt;/code&gt; 和 &lt;code&gt;ADMIN_PASSWORD&lt;/code&gt; 自定义初始用户名和密码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;3. 二进制文件部署&lt;/h3&gt;
&lt;p&gt;访问 Komari 的 &lt;a href=&quot;https://github.com/komari-monitor/komari/releases&quot;&gt;GitHub Release 页面&lt;/a&gt; 下载适用于你操作系统的最新二进制文件。&lt;/p&gt;
&lt;p&gt;运行 Komari：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./komari server -l 0.0.0.0:25774
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在浏览器中访问 &lt;code&gt;http://&amp;lt;your_server_ip&amp;gt;:25774&lt;/code&gt;，默认监听 &lt;code&gt;25774&lt;/code&gt; 端口。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;默认账号和密码可在启动日志中查看，或通过环境变量 &lt;code&gt;ADMIN_USERNAME&lt;/code&gt; 和 &lt;code&gt;ADMIN_PASSWORD&lt;/code&gt; 设置。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;确保二进制文件具有可执行权限（&lt;code&gt;chmod +x komari&lt;/code&gt;）。数据将保存在运行目录下的 &lt;code&gt;data&lt;/code&gt; 文件夹中。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;配置反向代理&lt;/h2&gt;
&lt;p&gt;此处使用 1Panel V2 + OpenResty 进行反向代理，宝塔面板操作同理。V1 V2操作无差别&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果你使用Cloudflare创建的证书请直接导入1Panel面板。不过此处&lt;strong&gt;并不建议使用CF证书避免泄露源站&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;1.创建证书&lt;/h3&gt;
&lt;p&gt;在 1Panel中的&lt;strong&gt;网站&lt;/strong&gt;选项卡中选择&lt;strong&gt;证书&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807182338833.C4HbqfXW_ZEEcJR.webp&quot; alt=&quot;image-20250807182338833&quot; /&gt;&lt;/p&gt;
&lt;p&gt;配置好&lt;strong&gt;Acme账户&lt;/strong&gt;和&lt;strong&gt;DNS账户&lt;/strong&gt;，此处ACME账户更推荐创建ZeroSSL，原因见:&lt;a href=&quot;https://ffis.me/archives/2110.html&quot;&gt;为什么选择ZeroSSL&lt;/a&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807182440568.CasXcUgo_1tgngo.webp&quot; alt=&quot;image-20250807182440568&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 创建反向代理&lt;/h3&gt;
&lt;p&gt;前往&lt;strong&gt;网站&lt;/strong&gt;选项卡，点击创建网站，在弹出界面的上部选择反向代理，并填写好需要监听的域名&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807182709011.CVjBhIq6_Nrsnz.webp&quot; alt=&quot;image-20250807182709011&quot; /&gt;&lt;/p&gt;
&lt;p&gt;此处选择&lt;strong&gt;启用HTTPS&lt;/strong&gt;，并且勾选我们已经创建好的证书。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807182853695.CC3qUT7q_1QQNlt.webp&quot; alt=&quot;image-20250807182853695&quot; /&gt;&lt;/p&gt;
&lt;p&gt;确认无误，保存继续。&lt;/p&gt;
&lt;h2&gt;CDN配置&lt;/h2&gt;
&lt;h3&gt;1. 域名解析配置&lt;/h3&gt;
&lt;p&gt;此处使用Cloudflare托管域名，开启小黄云隐藏源站，方便可控。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;请先添加好解析，并且勾选小黄云。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807183125445.CizBWvae_Z2mJGVS.webp&quot; alt=&quot;image-20250807183125445&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. SSL/TLS配置&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;SSL/TLS &amp;gt;&amp;gt; 概述&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807183646861.DuOm_Ggu_1qyVSu.webp&quot; alt=&quot;image-20250807183649257&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果你使用的是上文自建证书，请确保此处的加密模式使用的是&lt;strong&gt;完全 / FULL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你是用的是Cloudflare的自签证书，请选择&lt;strong&gt;完全(严格)&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;3. 启用gRPC和HTTP/3&lt;/h3&gt;
&lt;p&gt;此处非必须，如需要部署哪吒面板必须得选项，如果想回哪吒记得开起来&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;网络 &amp;gt;&amp;gt; gRPC&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807183741307.DCkMKatD_Z1IOwEQ.webp&quot; alt=&quot;image-20250807183741307&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;速度 &amp;gt;&amp;gt; 优化 &amp;gt;&amp;gt; 协议优化&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807184016304.DVEi4GhP_Z2wqDKB.webp&quot; alt=&quot;image-20250807184017896&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;访问管理面板&lt;/h2&gt;
&lt;p&gt;输入你的设置好反向代理的域名，如果上述配置均无问题，你可以正常进入管理面板无警告提示。&lt;/p&gt;
&lt;h3&gt;登录&lt;/h3&gt;
&lt;p&gt;点击右上角的登录按钮，默认用户名为admin，默认密码请前往日志中查找。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807184254701.BraNOdK8_2tfMmp.webp&quot; alt=&quot;image-20250807184254701&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;修改密码&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;前往 &lt;strong&gt;账户&lt;/strong&gt;选择卡，在界面上根据提示修改默认管理员用户名和密码&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;添加被控端&lt;/h2&gt;
&lt;h3&gt;1. 编辑被控信息&lt;/h3&gt;
&lt;p&gt;选择&lt;strong&gt;服务器&lt;/strong&gt;选项卡，点击右上角的添加节点，顾名思义，先填写这个节点的名称&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;可以是 &lt;code&gt;服务商+国家+记忆点&lt;/code&gt; 的命名方式，规范化命名。&lt;/p&gt;
&lt;p&gt;例如 : 搬瓦工 美西 DC1&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807184600361.CroHEQAk_tLAvQ.webp&quot; alt=&quot;image-20250807184600361&quot; /&gt;&lt;/p&gt;
&lt;p&gt;添加节点之后在你的节点列表中出现了一个刚才创建的节点。&lt;/p&gt;
&lt;p&gt;点击铅笔图标进入编辑，你可以在此处修改详细的信息&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807184850807.7-Af_Yz0_Z1pDUhE.webp&quot; alt=&quot;image-20250807184850807&quot; /&gt;&lt;/p&gt;
&lt;p&gt;随后点击钱币图标进入费用编辑，顾名思义，填写小鸡的价格、续费信息等&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807185029932.CGDOgjHS_1h3KBO.webp&quot; alt=&quot;image-20250807185029932&quot; /&gt;&lt;/p&gt;
&lt;p&gt;一切信息添加妥当后，进入部署环节。&lt;/p&gt;
&lt;h3&gt;2. 部署到节点&lt;/h3&gt;
&lt;p&gt;点击创建好的节点操作按钮中的下载图标，进入安装脚本的配置环节。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807185224983.B3QFvSO1_Z16Jqru.webp&quot; alt=&quot;image-20250807185224983&quot; /&gt;&lt;/p&gt;
&lt;p&gt;此处如果没有特殊需求，直接点击复制。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果服务器在国内遇到Github拉取困难，请选择&lt;code&gt;Github代理&lt;/code&gt;，并且填写一个代理地址，这个地址会增加到&lt;code&gt;raw.githubusercontent.com&lt;/code&gt;前，加速下载被控程序&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;其他配置需求已经很浅显易懂了，根据自己的需求配置即可。&lt;/p&gt;
&lt;p&gt;接下来把命令直接粘贴到你的服务器SSH中，当出现下面的结果时，部署成功。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807185453852.DpgbnEM1_2r7nU4.webp&quot; alt=&quot;image-20250807185453852&quot; /&gt;&lt;/p&gt;
&lt;p&gt;此时回到你的面板端，刷新一下即可在你的节点列表中找到你的服务器。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/_astro/image-20250807185620258.BW5XLGI7_1jioLv.webp&quot; alt=&quot;image-20250807185620258&quot; /&gt;&lt;/p&gt;
&lt;p&gt;你可以回到展示主页，查看一下读取的信息是否正确。&lt;/p&gt;
&lt;h1&gt;End&lt;/h1&gt;
&lt;p&gt;到此处，你的基本配置已经完成，如果没有出错，你已经获得了一个Komari探针。恭喜你！&lt;/p&gt;
&lt;h2&gt;故障排查&lt;/h2&gt;
&lt;h3&gt;1. 被控端迟迟不上线&lt;/h3&gt;
&lt;p&gt;等待5~10分钟后被控端还是无上线迹象，请在被控端输入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;journalctl -u komari-agent -f
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看日志信息寻找原因。如果遇到自己无法解决的问题请向原作者提出Issue或者在TG群内获得帮助。&lt;/p&gt;
&lt;h3&gt;2. &lt;a href=&quot;https://www.nodeseek.com/post-416326-1&quot;&gt;komari探针有时丢包率整齐划一奇高怎么回事&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;作者反馈是一个已知问题，等待更新&lt;/p&gt;
&lt;h3&gt;……未完&lt;/h3&gt;
</content:encoded></item><item><title>快速调整生物钟教程——物质改观方法让你一个星期调整过来</title><link>https://blog.oowo.cc/posts/reset-circadian-rhythm-7day-supplement-guide/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/reset-circadian-rhythm-7day-supplement-guide/</guid><description>亲测有效，睡不着的快来～</description><pubDate>Fri, 25 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;熬夜的危害大家都背得滚瓜烂熟，但放假最后一天要把自己从凌晨四点拖回人间，依旧抓狂。下面这套流程我自己跑了十来次，翻车两次，最近一次成功，记录一下，留着下次备用。&lt;/h2&gt;
&lt;h3&gt;第一条：睡前一小时手机必须出卧室。别充电放床头，谁骗过自己谁心里有数。真不放心，就丢到客厅插排，再不行交给舍友锁抽屉。&lt;/h3&gt;
&lt;h3&gt;第二条：给它找个替身。我只试过三种：&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Kindle 原装系统，里面没有浏览器。&lt;/li&gt;
&lt;li&gt;十年前的蓝屏 MP3，只能放歌。&lt;/li&gt;
&lt;li&gt;纸质书，随便一本不惊悚的散文。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;选哪个都行，规则就一句：不能无限下滑。
我把歌单贴在最后，懒得挑可以直接用。&lt;/p&gt;
&lt;h3&gt;第三条：灯光改一下。睡前把窗帘拉开一条缝，让早晨自然光打在脸上。遮光帘党就早上用手机开个窗帘，顺便留个缝，差别不大。过程里别管“褪黑素分泌曲线”“昼夜节律”这些黑话，只要让你五点十五被光晃醒就行。&lt;/h3&gt;
&lt;h3&gt;第四条：第二天起床时千万别赖床。醒了就坐起来，给自己 10 秒犹豫时间，超过直接掀被子找冷水。别问原理，问就是都曾原地昏睡回笼两小时。&lt;/h3&gt;
&lt;h3&gt;第五条：连续跑七天。中间但凡破防一次，就重新计数。想偷懒可以挑周五晚上先跑，周末不上班，失败了也不影响打工。&lt;/h3&gt;
&lt;h3&gt;第六条：特殊情况（加班到两点）。第二天照旧起，白天要崩溃就眯二十分钟，晚上继续按计划睡。只要别连续崩，一觉能救回来。真出差党或倒班党可以用眼罩＋遮光帘，思路一样。&lt;/h3&gt;
&lt;h2&gt;用品清单：&lt;/h2&gt;
&lt;p&gt;网易云歌单 2011602763，纯钢琴，没有歌词。
B 站 BV1Nf4y1a7YM 那套身体扫描冥想，不想听歌就听它。
剩下的就是杯子一杯温牛奶，家里能用到的版本即可。&lt;/p&gt;
&lt;h2&gt;最后用一句话总结：身体很想偷懒，脑子也很会骗你，但门把手和手机之间多走两步，就能把大脑按在地上摩擦。&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;我写完这篇凌晨 3 点 20，不能更现身说法了。现在睡觉，各位早上见。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>PVE系统下vGPU原理与部署全指南</title><link>https://blog.oowo.cc/posts/pve-vgpu-principle-deployment-guide/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/pve-vgpu-principle-deployment-guide/</guid><description>本文章适合初次接触Proxmox VE（PVE）虚拟化技术，希望了解vGPU概念并完成基础部署的用户。</description><pubDate>Tue, 25 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;壹、vGPU技术核心原理与架构解析&lt;/h2&gt;
&lt;h3&gt;1.1 什么是vGPU？&lt;/h3&gt;
&lt;p&gt;vGPU（虚拟图形处理单元）是一种通过&lt;strong&gt;硬件虚拟化技术&lt;/strong&gt;，将物理GPU分割为多个虚拟GPU实例的技术。它通过硬件调度器和专用驱动程序实现GPU资源的细粒度划分与调度管理。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心优势&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;资源隔离&lt;/strong&gt;：每个虚拟机独享独立显存与算力，确保工作负载互不干扰&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;性能保障&lt;/strong&gt;：通过NVIDIA vGPU或Intel GVT-g等技术实现接近物理GPU的性能（95%以上性能保持）&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;灵活分配&lt;/strong&gt;：按需动态调整虚拟机显存大小，支持热插拔&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;资源监控&lt;/strong&gt;：提供细粒度的性能监控和调优能力&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;成本优化&lt;/strong&gt;：提高GPU硬件利用率，降低总体拥有成本（TCO）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.2 vGPU技术架构&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/src/assets/images/pve-vgpu-principle-deployment-guide-images/mermaid-1.png&quot; alt=&quot;mermaid&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;1.3 vGPU与直通（Passthrough）的区别&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;特性&lt;/th&gt;
&lt;th&gt;vGPU&lt;/th&gt;
&lt;th&gt;GPU直通&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;硬件利用率&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 支持多虚拟机共享GPU&lt;/td&gt;
&lt;td&gt;❌ 单虚拟机独占GPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;配置复杂度&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⚠️ 需特定驱动和授权&lt;/td&gt;
&lt;td&gt;⚠️ 需IOMMU/VT-d支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;性能损耗&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⚠️ 5%-15%（取决于负载）&lt;/td&gt;
&lt;td&gt;✅ 几乎无损耗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;灵活性&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 支持动态资源调整&lt;/td&gt;
&lt;td&gt;❌ 固定分配&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;成本效益&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 单卡多用户共享&lt;/td&gt;
&lt;td&gt;❌ 需配置多卡&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;应用场景&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;云桌面/轻量AI训练&lt;/td&gt;
&lt;td&gt;重负载图形工作站&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;贰、部署前准备&lt;/h2&gt;
&lt;h3&gt;2.1 硬件兼容性检查&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPU型号要求&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;NVIDIA：Tesla/Quadro系列（需购买vGPU授权）&lt;br /&gt;
&amp;lt;a href = &quot;https://mcyre.cc/posts/nvidia-vgpu-unlock/&quot;&amp;gt;这里查看支持的型号&amp;lt;/a&amp;gt;&lt;/li&gt;
&lt;li&gt;Intel：支持GVT-g的CPU+核显（如第11代酷睿处理器）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主板要求&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;启用BIOS中的&lt;strong&gt;Intel VT-d&lt;/strong&gt;或&lt;strong&gt;AMD-Vi&lt;/strong&gt;（IOMMU）功能&lt;/li&gt;
&lt;li&gt;确认GPU已正确安装且未被宿主机占用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2.2 软件环境&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;PVE版本：&lt;strong&gt;7.0或更高版本&lt;/strong&gt;（内核需5.11+）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;注意！请不要无脑使用PVE最新系统，请根据驱动支持的最大内核版本进行选择！！！&lt;/strong&gt;&lt;/em&gt;
&lt;em&gt;&lt;strong&gt;注意！PVE系统内核版本过低或过高均可能导致vGPU无法正常工作！！！&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;叁、开始部署vGPU&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;注意此处的解锁方法仅适用于家用显卡，对于专业显卡请跳转至&lt;em&gt;3.2&lt;/em&gt;安装驱动步骤。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;3.1 配置vGPU_Unlock&lt;/h3&gt;
&lt;h4&gt;3.1.1 安装依赖&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;创建vgpu_unlock文件夹&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir /etc/vgpu_unlock
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;创建profile_override.toml文件&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;touch /etc/vgpu_unlock/profile_override.toml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;创建&lt;code&gt;nvidia-vgpud.service.d,nvidia-vgpu-mgr.service.d&lt;/code&gt;服务文件&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir /etc/systemd/system/{nvidia-vgpud.service.d,nvidia-vgpu-mgr.service.d}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;写入路径信息&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo -e &quot;[Service]\nEnvironment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so&quot; &amp;gt; /etc/systemd/system/nvidia-vgpud.service.d/vgpu_unlock.conf
echo -e &quot;[Service]\nEnvironment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so&quot; &amp;gt; /etc/systemd/system/nvidia-vgpu-mgr.service.d/vgpu_unlock.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;重新加载服务&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl daemon-reload
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;执行完成后，cat下查看服务配置是否与输出内容一致&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /etc/systemd/system/{nvidia-vgpud.service.d,nvidia-vgpu-mgr.service.d}/*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;输出内容&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Service]
Environment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so
[Service]
Environment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;3.1.2 安装vGPU_Unlock&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;下载预编译好的libvgpu_unlock_rs.so文件&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p /opt/vgpu_unlock-rs/target/release
cd /opt/vgpu_unlock-rs/target/release
wget -O libvgpu_unlock_rs.so https://raw.githubusercontent.com/Mapleawaa/IceDocument/refs/heads/main/libvgpu_unlock_rs_20230207_44d5bb3.so
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;如文件失效或无法下载，请更换为以下链接：
JulyBlog提供：https://yangwenqing.com/files/pve/vgpu/vgpu_unlock/rust/libvgpu_unlock_rs_20230207_44d5bb3.so
OneDrive链接下载：https://1drv.ms/u/s!AgklE145BxGdmdtPAwysOPsp2sB5Mw?e=m5dls3
第二个备份网盘：https://pan.huang1111.cn/s/8QvnxFQ&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;3.2 安装vGPU驱动&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;安装显卡驱动需要用到的依赖&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt install build-essential dkms mdevctl pve-headers-$(uname -r)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;下载显卡驱动&lt;/strong&gt;
注意这里的驱动版本为GRID16.2版本。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget &quot;https://yun.yangwenqing.com/NVIDIA/vGPU/NVIDIA/16.2/NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm-patched.run&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如需要其他版本，请前往&lt;a href=&quot;https://alist.homelabproject.cc/foxipan/vGPU&quot;&gt;佛西大佬的博客网盘&lt;/a&gt;，下载对应可以使用的版本驱动。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;赋予执行权限&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod +x NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm-patched.run
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;安装驱动(默认回车直至安装完成即可)&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm-patched.run
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;重启&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;3.2.1 其他补充提示：&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;如之前安装过了显卡驱动，则需要先卸载，再安装
&lt;strong&gt;卸载显卡驱动&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;./NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm-patched.run --uninstall
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;移除显卡相关程序&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get remove --purge nvidia-*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;安装驱动(默认回车直至安装完成即可)&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm-patched.run
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3.3 检查服务状态&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;查看相关服务状态&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl status {nvidia-vgpud.service,nvidia-vgpu-mgr.service}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2024/02/3104229423.png&quot; alt=&quot;检查服务状态&quot; /&gt;
如果出现 &lt;code&gt;Active: failed&lt;/code&gt; 字样，则需要手动启动相关服务。或者有步骤配置错误，请检查。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;重新启动相关服务&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart {nvidia-vgpud.service,nvidia-vgpu-mgr.service}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;停止相关服务&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl stop {nvidia-vgpud.service,nvidia-vgpu-mgr.service}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;查看相关服务状态&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nvidia-smi  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2024/02/3159478274.png&quot; alt=&quot;nvidia-smi&quot; /&gt;
以及mdevctl types查看&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mdevctl types
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2024/02/1406127646.png&quot; alt=&quot;mdevctl types&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;肆、配置vGPU授权服务&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;为什么要配置授权服务器？&lt;/strong&gt;、
NVIDIA VGPU并非免费产品，需要对VGPU驱动购买许可才能正常使用VGPU。然而家用客户无法直接购买授权，这里我们使用一个取巧的方式，即通过一个&lt;strong&gt;授权服务器&lt;/strong&gt;来获取授权。
这里使用&lt;a href=&quot;https://hub.docker.com/r/collinwebdesigns/fastapi-dls&quot;&gt;FastAPI-dls&lt;/a&gt;作为授权服务器，通过&lt;code&gt;FastAPI-dls&lt;/code&gt;提供的接口，获取授权码，再通过&lt;code&gt;vgpu_unlock&lt;/code&gt;提供的接口，将授权码写入显卡驱动，即可实现授权。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;下载部分代码请直接复制，避免出错。
&lt;strong&gt;感谢July&apos;s Blog提供的配置好的LXC容器。&lt;/strong&gt;
&lt;strong&gt;感谢他们的贡献！&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;4.1 下载LXC容器备份包&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;进入pve备份文件夹&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /var/lib/vz/dump/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用wget命令下载lxc docker 容器备份包&lt;/strong&gt;
这里使用的是July&apos;s Blog提供的备份包，因为他们的容器已经配置好了授权服务器。
下载源是国际版OneDrive网盘，并非世纪互联版，下载慢请使用多线程下载。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://yun.yangwenqing.com/Proxmox/LXC/FASTAPI-DLS/vzdump-lxc-100-2023_11_14-15_docker.tar.zst
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;或者使用aria2c命令多线程下载lxc docker 容器备份包&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;aria2c -s 8 -x 8 -j 10 &apos;https://yun.yangwenqing.com/Proxmox/LXC/FASTAPI-DLS/vzdump-lxc-100-2023_11_14-15_docker.tar.zst&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;LXC容器信息：
默认IP地址：192.168.2.99
账号：root
密码：123123&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;4.2 还原LXC容器并修改IP&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;将下载下来的LXC容器进行还原&lt;/strong&gt;
&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2024/02/701573596.png&quot; alt=&quot;还原LXC容器&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;并将原来的IP改为自己内网的IP&lt;/strong&gt;
&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2025/02/82240125.png&quot; alt=&quot;修改IP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3）登录LXC容器并创建授权服务：&lt;/strong&gt;
&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2025/02/3610659870.png&quot; alt=&quot;创建授权服务&quot; /&gt;
&lt;strong&gt;创建授权服务,注意下边的&amp;lt;IP&amp;gt;,一定要改为刚刚自己修改好的&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run --restart always -d -e DLS_URL=192.168.2.99 -e DLS_PORT=443 -p 443:443  makedie/fastapi-dls
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;伍、创建虚拟机&lt;/h2&gt;
&lt;h3&gt;5.1 创建Ubuntu虚拟机&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;此处使用 Ubuntu 24.04 LTS 版本，不同版本的操作方法大同小异。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;5.1.1 创建虚拟机&lt;/h4&gt;
&lt;p&gt;步骤省略，总结关键信息如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;名称：自定义
光驱挂载：Ubuntu安装ISO镜像
系统中显卡：默认
机型：q35
BIOS：默认 (SeaBIOS)
磁盘：SCSI 大小60G（按需设置，或硬盘直通）
CPU：host 核心数量4（按需设置）
内存：4G及以上
网络：virtIO（半虚拟化或网卡直通）网卡
添加PCI设备：nvidia显卡（勾选ROM-Bar和PCIE在Mdev类型中选择vgpu设备）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;经过安装步骤，安装完成进入系统。&lt;/p&gt;
&lt;h4&gt;5.1.2 配置Ubuntu虚拟机&lt;/h4&gt;
&lt;h5&gt;查看IP地址&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;ip addr show | grep inet | awk &apos;{print $2}&apos; | sed &apos;s/://g&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/src/assets/images/pve-vgpu-principle-deployment-guide-images/image-20250325161752554.png&quot; alt=&quot;image-20250325161752554&quot; /&gt;
到这一步，确认自己在安装步骤中勾选安装了OpenSSH工具，否则无法使用SSH工具连接到Ubuntu主机。
如果没有安装OpenSSH工具，则需要安装。&lt;/p&gt;
&lt;h5&gt;安装Openssh&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install openssh-server -y
sudo systemctl enable ssh.service
sudo systemctl restart ssh.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;得到IP之后，使用SSH工具，配置好IP地址和密码信息，即可连接到Ubuntu主机。&lt;/strong&gt;
这里推荐使用 Tabby | MobaXterm，或者使用其他SSH工具。&lt;/p&gt;
&lt;h5&gt;更换镜像源&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;sudo -i
# 注意这里切换到root用户
wget https://linuxmirrors.cn/main.sh
chmod +x main.sh
./main.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/src/assets/images/pve-vgpu-principle-deployment-guide-images/image-20250325162929588.png&quot; alt=&quot;image-20250325162929588&quot; /&gt;
根据提示，选择离自己物理距离近的镜像源，然后选择安装。&lt;/p&gt;
&lt;h5&gt;安装需要所需依赖&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install build-essential linux-headers-generic libglvnd-dev pkg-config -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;安装dkms&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install dkms -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;安装32位兼容库&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386 -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;屏蔽自带的显卡驱动&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;创建blacklist-nouveau.conf文件&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/modprobe.d/blacklist-nouveau.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;在blacklist-nouveau.conf文件添加如下内容：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;blacklist nouveau
options nouveau modeset=0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;重载内核initramfs&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo update-initramfs -u
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;重启Ubuntu&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;重启完成后检查nouveau是否已禁用，没有任何输出说明已经禁用&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;lsmod | grep nouveau
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;切换到文本命令行控制台关闭显示服务&lt;/h5&gt;
&lt;p&gt;如果没有安装图形界面，跳过这一步。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo chvt 3
# 关闭图形界面服务
sudo service gdm stop
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;安装显卡驱动&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;使用aria2c命令多线程下载 NVIDIA Guest驱动&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;aria2c -s 4 -x 4 -j 10 &apos;https://yun.yangwenqing.com/NVIDIA/vGPU/NVIDIA/16.2/NVIDIA-GRID-Linux-KVM-535.129.03-537.70/Guest_Drivers/NVIDIA-Linux-x86_64-535.129.03-grid.run&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意这里安装的是535.129.03-537.70版本，如果要安装其他版本的驱动，请前往佛西大佬的博客网盘，下载对应可以使用的版本驱动，可用驱动为run结尾的文件。&lt;/p&gt;
&lt;h5&gt;给可执行权限&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;chmod +x NVIDIA-Linux-x86_64-535.129.03-grid.run
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;安装驱动（默认回车直至安装完成即可）&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;./NVIDIA-Linux-x86_64-535.129.03-grid.run
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;安装完成重启Ubuntu&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;重启完成后，使用nvidia-smi验证&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;root@Ubuntu23:~# nvidia-smi
Tue Feb 20 16:22:12 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.129.03             Driver Version: 535.129.03   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  GRID P40-1Q                    On  | 00000000:01:00.0 Off |                  N/A |
| N/A   N/A    P8              N/A /  N/A |      7MiB /  1024MiB |      0%      Default |
|                                         |                      |             Disabled |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A       801      G   /usr/lib/xorg/Xorg                            6MiB |
+---------------------------------------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;5.1.3 启用授权&lt;/h4&gt;
&lt;h5&gt;获取授权文件&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;wget --no-check-certificate -O /etc/nvidia/ClientConfigToken/client_configuration_token_$(date &apos;+%d-%m-%Y-%H-%M-%S&apos;).tok https://192.168.2.99/-/client-token
# 或者
curl --insecure -L -X GET https://192.168.2.99/-/client-token -o /etc/nvidia/ClientConfigToken/client_configuration_token_$(date &apos;+%d-%m-%Y-%H-%M-%S&apos;).tok
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;验证授权&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;sudo service nvidia-gridd restart
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;验证授权获取情况&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;nvidia-smi -q | grep License
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;看到有Licensed字样，就授权好了。&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root@Ubuntu23:~# nvidia-smi -q | grep License
    vGPU Software Licensed Product
        License Status                    : Licensed (Expiry: 2024-5-20 9:40:22 GMT)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;5.2 创建Windows虚拟机&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;此处使用Windows10 22H2版本，不同版本的操作方法大同小异。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;5.2.1 创建虚拟机&lt;/h4&gt;
&lt;p&gt;步骤省略，总结关键信息如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;名称：自定义
光驱挂载：Win安装ISO镜像
系统中显卡：默认
机型：q35
BIOS：OVMF（如果采用SeaBIOS引导，机型q35版本要选7.2及以下，否则无法正常授权驱动）
EFI分区：UEFI（OVMF）需要
磁盘：SCSI 大小60G（按需设置，或硬盘直通）
CPU：host 核心数量4（按需设置）
内存：4G及以上
网络：virtIO（半虚拟化或网卡直通）网卡
建立好虚拟机后
添加CD/DVD设备1个，挂载virtIO驱动ISO镜像&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2024/03/1898555321.png&quot; alt=&quot;创建win10虚拟机&quot; /&gt;&lt;/p&gt;
&lt;h5&gt;添加你的显卡&lt;/h5&gt;
&lt;p&gt;勾选ROM-Bar和PCIE在Mdev类型中选择vgpu设备
&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2024/03/3935107902.png&quot; alt=&quot;勾选ROM-Bar和PCIE在Mdev类型中选择vgpu设备&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;其中 GRID P40-1Q 是 mdev 的名字，P40--显卡名，1--1G 显存，Q 代表 vWS
关于最后一位字母，如下
A = Virtual Applications (vApps)
B = Virtual Desktops (vPC)
C = AI/Machine Learning/Training (vCS or vWS)
Q = Virtual Workstations (vWS)（性能最佳）
在配置vgpu的时候，选择正确的型号型号即可。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;5.2.2 配置Windows虚拟机&lt;/h4&gt;
&lt;h5&gt;确保远程可以连接到虚拟机&lt;/h5&gt;
&lt;p&gt;在系统设置中开启远程功能。&lt;/p&gt;
&lt;p&gt;如有需求，可以用下载todesk，vnc，向日葵，parsec等远程软件。&lt;/p&gt;
&lt;h5&gt;安装NVIDIA Guest驱动&lt;/h5&gt;
&lt;h5&gt;启用授权&lt;/h5&gt;
&lt;p&gt;1）在浏览器访问fastapi-dls授权服务：https://&amp;lt;HereIsYourIP&amp;gt;/-/client-token会自动下载好授权文件
&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2024/02/3339204735.png&quot; alt=&quot;下载授权文件&quot; /&gt;&lt;/p&gt;
&lt;p&gt;2）下载后放入C:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken\这个目录下&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2024/02/2303419304.png&quot; alt=&quot;将授权文件放到指定路径&quot; /&gt;&lt;/p&gt;
&lt;p&gt;重启NVIDIA Display Container Ls服务，即可获得授权也可以在cmd窗口使用nvidia-smi -q命令查看授权情况
如授权失败，需要检查电脑时间是否对得上授权服务器时间&lt;/p&gt;
&lt;h5&gt;测试调用&lt;/h5&gt;
&lt;p&gt;4）使用Todesk远程工具连接上虚拟机
打开OpenGL测试网页https://openprocessing.org/sketch/418877/
随便找一个测试项目，测试显卡有没有正常启动。&lt;/p&gt;
&lt;h5&gt;解锁帧数限制&lt;/h5&gt;
&lt;p&gt;由于默认的vGPU是有帧数限制的，部分场景需要使用到高刷新率，可以在这里修改帧数限制。
5）使用nano命令编辑文件
编辑nano /etc/vgpu_unlock/profile_override.toml文件，加入以下信息关闭虚拟机重新开机生效。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[profile.nvidia-46]
num_displays = 1
display_width = 1920
display_height = 1080
max_pixels = 2073600
cuda_enabled = 1
frl_enabled = 0
framebuffer = 939524096
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;参数说明：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[profile.nvidia-46]nvidia-46 为vgpu型号的参数。如选的不是46则改成自己选的那个型号。
num_displays 最大显示器数量
display_width = 1920
display_height = 1080
max_pixels = 2073600 这3个是虚拟显示器的分辨率，max_pixels是长宽的乘积
cuda_enabled = 1是否开启cuda
frl_enabled = 0 是否限制帧数，0为不限制
framebuffer = 939524096 1GB显存，设定vgpu的显存
&lt;/code&gt;&lt;/pre&gt;
&lt;h5&gt;自定义显存大小&lt;/h5&gt;
&lt;p&gt;如要自定义修改显卡的显存大小，只需要修改framebuffer的值就好了,显存不建议低于1GB，官方说低于1GB将会禁用NVENC视频编解码器.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意：vgpu会默认占用128M，所以如果要改显存，请将结果减去128M再去换算，旧版是减去64M&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;例如，你期望显存为1GB，所以就用1024M-64M=960M/1024M-128M=896M&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://yangwenqing.com/usr/uploads/2024/10/1293451713.png&quot; alt=&quot;换算结果&quot; /&gt;&lt;a href=&quot;https://www.bejson.com/convert/filesize/&quot;&gt;在线大小换算平台&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;六、注意事项与进阶技巧&lt;/h2&gt;
&lt;p&gt;⚠️ 如果希望使用虚拟的显卡打游戏，那就需要绕过虚拟化检测。本文不会介绍方法。&lt;/p&gt;
&lt;h2&gt;END&lt;/h2&gt;
&lt;p&gt;到此为止，你已经掌握了PVE环境下vGPU的完整部署流程。从理论到实践，我们已经完成了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ vGPU技术原理与架构的深入理解&lt;/li&gt;
&lt;li&gt;✅ 硬件环境与软件依赖的准备工作&lt;/li&gt;
&lt;li&gt;✅ vGPU驱动的安装与解锁配置&lt;/li&gt;
&lt;li&gt;✅ 授权服务器的搭建与使用&lt;/li&gt;
&lt;li&gt;✅ Ubuntu和Windows虚拟机的完整部署&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;希望本教程能够帮助你在虚拟化环境中更好地利用GPU资源。
记住，授人以鱼不如授人以渔，掌握了这些知识，你不仅能够搭建出高性能的虚拟化环境，更能够根据实际需求进行灵活调整和优化。
希望你也可以把自己的技能和经验分享给更多人，共同成长和进步。&lt;/p&gt;
&lt;p&gt;祝你在GPU虚拟化的道路上一帆风顺！如有问题，欢迎参与社区讨论，共同进步。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;本文参考资料&lt;/h2&gt;
&lt;p&gt;感谢前人的付出，让我们一起分享知识，共同进步！&lt;/p&gt;
&lt;h3&gt;技术文档&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;NVIDIA Corporation. (2024). &lt;em&gt;NVIDIA Virtual GPU Software Documentation&lt;/em&gt;. NVIDIA.
https://docs.nvidia.com/grid/latest/
访问日期: 2024-03-25&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;社区教程与博客&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Yang, W. Q. (2024). PVE8.1 NVIDIA显卡虚拟化多开VGPU16.2--基于1050Ti. &lt;em&gt;July&apos;s Blog&lt;/em&gt;.
https://yangwenqing.com/archives/1766/
访问日期: 2024-03-25&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;国光. (2024). PVE 环境搭建教程. &lt;em&gt;国光的博客&lt;/em&gt;.
https://pve.sqlsec.com/4/5/
访问日期: 2024-03-25&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PVE中文社区. (2024). Proxmox VE Nvidia-vGPU 中文教程. &lt;em&gt;ReadTheDocs&lt;/em&gt;.
https://pve-doc-cn.readthedocs.io/zh-cn/pve-nvidia-vgpu/
访问日期: 2024-03-25&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;佛西. (2024). PVE虚拟化专题. &lt;em&gt;佛西博客&lt;/em&gt;.
https://foxi.buduanwang.vip/virtualization/pve/
访问日期: 2024-03-25&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;开源项目&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;DualSpark. (2024). FastAPI-dls [Computer software].
https://hub.docker.com/r/collinwebdesigns/fastapi-dls
访问日期: 2024-03-25&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;📝 本文档采用 &lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh&quot;&gt;CC BY-NC-SA 4.0&lt;/a&gt; 许可协议。转载请注明出处。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Proxmox VE（PVE）快照与还原点完全指南</title><link>https://blog.oowo.cc/posts/pve8-snapshots-restore-guide/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/pve8-snapshots-restore-guide/</guid><description>Proxmox VE（PVE）快照与还原点完全指南，详细解析二者定义、区别、应用场景及核心原则。</description><pubDate>Sat, 22 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;版本要求&lt;/strong&gt;：PVE 8.x 及以上&lt;br /&gt;
&lt;strong&gt;适用场景&lt;/strong&gt;：虚拟机系统更新、测试新配置、故障回滚&lt;br /&gt;
&lt;strong&gt;核心原则&lt;/strong&gt;：快照≠备份！仅适合短期应急使用&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;一、基础概念解析&lt;/h2&gt;
&lt;h3&gt;1.1 快照与还原点的定义区别&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;快照&lt;/strong&gt;：像游戏存档点，记录虚拟机当前状态（内存+磁盘）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;还原点&lt;/strong&gt;：类似时光机备份，仅保留磁盘状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;从技术角度区别二者差异&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;特性&lt;/th&gt;
&lt;th&gt;快照&lt;/th&gt;
&lt;th&gt;还原点&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;捕获内容&lt;/td&gt;
&lt;td&gt;内存状态 + 磁盘数据&lt;/td&gt;
&lt;td&gt;仅磁盘数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;恢复速度&lt;/td&gt;
&lt;td&gt;秒级&lt;/td&gt;
&lt;td&gt;分钟级&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;存储占用&lt;/td&gt;
&lt;td&gt;高&lt;/td&gt;
&lt;td&gt;中等&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;☆快照与还原点结构示意图（带箭头流向）&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/src/assets/images/pve8-snapshots-restore-guide-images/mermaid-diagram-2025-08-02-152413.png&quot; alt=&quot;快照与还原点结构示意图&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;1.2 二者实际应用场景对比&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景类型&lt;/th&gt;
&lt;th&gt;快照&lt;/th&gt;
&lt;th&gt;还原点&lt;/th&gt;
&lt;th&gt;选择建议&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;系统更新&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;系统补丁安装&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;快照：可立即回滚，内存状态保留&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;驱动程序更新&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;快照：故障可秒级恢复&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;大版本升级&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;还原点：升级时间长，需稳定保存&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;配置变更&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;防火墙规则调整&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;快照：需保留网络连接状态&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;网卡配置修改&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;快照：可保留路由表缓存&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;核心服务迁移&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;还原点：涉及存储变更&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;维护操作&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;紧急故障排查&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;快照：需即时比对状态&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;月度安全更新&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;还原点：周期性操作&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;性能调优&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;都可：根据调优周期选择&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;特殊场景&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;第三方软件测试&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;快照：需频繁还原测试&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;基准环境保存&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;还原点：长期保存基线&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;灾备恢复&lt;/td&gt;
&lt;td&gt;❌ 不适合&lt;/td&gt;
&lt;td&gt;✔️ 适合&lt;/td&gt;
&lt;td&gt;还原点：可异地存储&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;选择要点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快照优势：即时性、完整性（含内存）、便捷性&lt;/li&gt;
&lt;li&gt;还原点优势：稳定性、持久性、存储效率&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;1.3 KVM快照工作原理&lt;/h3&gt;
&lt;h4&gt;1.3.1 基础存储机制&lt;/h4&gt;
&lt;p&gt;采用&lt;code&gt;qcow2&lt;/code&gt;格式的&lt;strong&gt;写入时复制&lt;/strong&gt;（COW）机制：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;创建快照时生成差异磁盘文件&lt;/li&gt;
&lt;li&gt;新数据写入差异文件，原磁盘只读&lt;/li&gt;
&lt;li&gt;回滚时丢弃差异文件&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;1.3.2 快照链工作流程&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/src/assets/images/pve8-snapshots-restore-guide-images/mermaid-diagram-2025-08-02-153608.png&quot; alt=&quot;快照链工作流程&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;1.3.3 存储结构特点&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;增量存储&lt;/strong&gt;：仅记录变化的数据块&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链式结构&lt;/strong&gt;：快照间形成依赖关系链&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;合并机制&lt;/strong&gt;：删除中间节点时自动合并&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;资源占用&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;磁盘空间：与变更数据量成正比&lt;/li&gt;
&lt;li&gt;内存开销：每个快照点额外2-5MB&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⚠️ &lt;strong&gt;性能优化建议&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;控制快照链长度（≤3层）&lt;/li&gt;
&lt;li&gt;定期合并老旧快照&lt;/li&gt;
&lt;li&gt;避免在IO密集期创建快照&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;二、实战操作指南&lt;/h2&gt;
&lt;h3&gt;2.1 快照管理&lt;/h3&gt;
&lt;h4&gt;Web界面操作：&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;选择虚拟机 → 左侧菜单&quot;快照&quot;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击&quot;创建&quot; → 输入描述（建议包含日期）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;回滚时选择目标快照 → 点击&quot;回滚&quot;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;命令行示例：(可用于批量操作)&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;# 创建快照
qm snapshot &amp;lt;VMID&amp;gt; &amp;lt;快照名称&amp;gt; --description &quot;更新前状态&quot;

# 列出快照
qm listsnapshot &amp;lt;VMID&amp;gt;

# 删除快照
qm delsnapshot &amp;lt;VMID&amp;gt; &amp;lt;快照名称&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;⚠️ &lt;strong&gt;警告&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;避免超过&lt;strong&gt;3层&lt;/strong&gt;嵌套快照，可能会&lt;strong&gt;影响性能&lt;/strong&gt;，建议定期清理快照。&lt;/li&gt;
&lt;li&gt;删除父快照&lt;strong&gt;会合并所有子快照&lt;/strong&gt;，谨慎操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2.2 还原点管理&lt;/h3&gt;
&lt;h4&gt;批量操作（以下均为示例，实际操作需根据实际情况修改）：&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;# 批量创建还原点
for vmid in 101 102 103; do
  qm snapshot $vmid &quot;2023-Upgrade-Baseline&quot;
done
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;存储监控命令：&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;# 查看快照占用空间
du -sh /var/lib/vz/images/&amp;lt;VMID&amp;gt;/*.qcow2

# 监控存储池使用率
pvesm status
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;三、虚拟系统管理要点(本节点较为复杂，同时也比较重要，需要结合实际情况进行修改！)&lt;/h2&gt;
&lt;h3&gt;3.1 存储配置黄金法则&lt;/h3&gt;
&lt;h4&gt;3.1.1 存储选型建议&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;必选项&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;专用SSD存储池（避免与虚拟机共用）&lt;/li&gt;
&lt;li&gt;支持COW（写入时复制）的文件系统&lt;/li&gt;
&lt;li&gt;RAID卡启用BBU（掉电保护）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;禁用项&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;NFS/CIFS等网络存储用于快照&lt;/li&gt;
&lt;li&gt;机械硬盘作为快照存储&lt;/li&gt;
&lt;li&gt;不支持原子写入的文件系统&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;3.1.2 ZFS存储池配置&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;# /etc/pve/storage.cfg 基础配置
ssd: local-zfs
  path /mnt/ssd_pool
  content images,iso,vztmpl
  zfspool ssd_pool
  sparse true           # 启用稀疏分配
  compression lz4       # 启用压缩
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;3.1.3 存储池优化参数&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;# ZFS性能优化
zfs set atime=off ssd_pool        # 关闭访问时间更新
zfs set compression=lz4 ssd_pool  # 设置压缩算法
zfs set recordsize=128k ssd_pool  # 优化记录大小
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3.2 系统性能管理&lt;/h3&gt;
&lt;h4&gt;3.2.1 资源开销评估&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CPU影响&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建快照：5-8%短期峰值&lt;/li&gt;
&lt;li&gt;运行时开销：2-5%持续负载&lt;/li&gt;
&lt;li&gt;合并操作：10-15%临时占用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;内存影响&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个快照点：2-5MB元数据&lt;/li&gt;
&lt;li&gt;运行时缓存：50-100MB动态分配&lt;/li&gt;
&lt;li&gt;合并操作：临时需要2倍差异空间&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;IO性能影响&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写入延迟：增加3-15ms&lt;/li&gt;
&lt;li&gt;读取延迟：基本无影响&lt;/li&gt;
&lt;li&gt;合并操作：可能造成IO密集&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;3.2.2 性能优化策略&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://mermaid.live/edit#pako:eNptkVFL21AUx79KOc-15OYaY_IwmO2jT_PNmz4Ec7WCSUpMYFspqOu0c5sraEcVhyhCq2KtyARnS79MT9J8i902OgjsPlzuub_z_59zOBVYcS0OOqx5ZrmUWXxnOBlx3rJwqz3-NBj1W_jtZzEzM_Mms8DwtoU7HbzfiX9dFF8SpyjPoofn6PnsP6jAwsPvo8FpCiX3QmJL2GgwjI46S0uFYgrIDBt3AuDB16h_lWaUJa2Nuz0cNPGyjb0fKfN80hhh4UEb6484vIk-t8NmL957zXvJEFW6J-HpGTbq-PSYZpSNf9fCP434ohY1j1P-hWQ6wuLtIfa34psWPvSETTGFhXl9N_zyhJe1qLGbZsJ87xr3O2KKqHs-wZAVa1i3QPe9gGfB5p5tTkKoTIQG-CVucwN08bT4qhls-AYYTlXIyqaz7Lr2q9Jzg7US6KvmxqaIgrJl-rywbood2_9-Pe5Y3Mu7geODThRtagJ6Bd6LkJDc7JyqyTKVVEUic_NZ-AA6pTQnUaqpMlEUTVI0Ws3Cx2ldKafKVFYldX6WTKBS_QsWV-mM&quot;&gt;&lt;img src=&quot;https://mermaid.ink/img/pako:eNptkVFL21AUx79KOc-15OYaY_IwmO2jT_PNmz4Ec7WCSUpMYFspqOu0c5sraEcVhyhCq2KtyARnS79MT9J8i902OgjsPlzuub_z_59zOBVYcS0OOqx5ZrmUWXxnOBlx3rJwqz3-NBj1W_jtZzEzM_Mms8DwtoU7HbzfiX9dFF8SpyjPoofn6PnsP6jAwsPvo8FpCiX3QmJL2GgwjI46S0uFYgrIDBt3AuDB16h_lWaUJa2Nuz0cNPGyjb0fKfN80hhh4UEb6484vIk-t8NmL957zXvJEFW6J-HpGTbq-PSYZpSNf9fCP434ohY1j1P-hWQ6wuLtIfa34psWPvSETTGFhXl9N_zyhJe1qLGbZsJ87xr3O2KKqHs-wZAVa1i3QPe9gGfB5p5tTkKoTIQG-CVucwN08bT4qhls-AYYTlXIyqaz7Lr2q9Jzg7US6KvmxqaIgrJl-rywbood2_9-Pe5Y3Mu7geODThRtagJ6Bd6LkJDc7JyqyTKVVEUic_NZ-AA6pTQnUaqpMlEUTVI0Ws3Cx2ldKafKVFYldX6WTKBS_QsWV-mM?type=png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;3.3 生产环境最佳实践&lt;/h3&gt;
&lt;h4&gt;3.3.1 时间管理&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;快照保留策略&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;开发环境：≤7天&lt;/li&gt;
&lt;li&gt;测试环境：≤72小时&lt;/li&gt;
&lt;li&gt;生产环境：≤24小时&lt;/li&gt;
&lt;li&gt;特殊场景：按需评估&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;3.3.2 自动化管理脚本&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash
# 快照自动清理脚本
for vmid in $(qm list | awk &apos;{print $1}&apos; | grep -v VMID); do
    # 清理72小时前的快照
    snapshots=$(qm listsnapshot $vmid | grep -E &quot;^[0-9]&quot; | awk &apos;{print $1}&apos;)
    for snap in $snapshots; do
        creation_time=$(qm snapshot $vmid $snap --info | grep &quot;creation time&quot; | awk &apos;{print $4}&apos;)
        if [ $(( $(date +%s) - creation_time )) -gt 259200 ]; then
            qm delsnapshot $vmid $snap
        fi
    done
done
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;3.3.3 监控告警配置&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;存储空间预警&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;使用率&amp;gt;80%：警告提醒&lt;/li&gt;
&lt;li&gt;使用率&amp;gt;90%：紧急告警&lt;/li&gt;
&lt;li&gt;使用率&amp;gt;95%：自动清理&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能监控指标&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;IO延迟超标&lt;/li&gt;
&lt;li&gt;快照链过长&lt;/li&gt;
&lt;li&gt;合并操作失败&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;四、常见问题处理&lt;/h2&gt;
&lt;h3&gt;4.1 快照合并失败&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;典型报错&lt;/strong&gt;：&lt;code&gt;Error merging snapshots: storage full&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;解决步骤&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;检查存储剩余空间：&lt;code&gt;df -h&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;临时迁移虚拟机到其他存储&lt;/li&gt;
&lt;li&gt;手动合并：&lt;code&gt;qm delsnapshot --force &amp;lt;VMID&amp;gt; &amp;lt;快照名&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;4.2 误删快照恢复&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;成功率取决于&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否启用回收站功能&lt;/li&gt;
&lt;li&gt;存储文件系统类型（ZFS可尝试恢复）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ZFS恢复命令&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;zfs list -t snapshot | grep &amp;lt;VMID&amp;gt;
zfs rollback &amp;lt;snapshot_name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;五、终极原则：快照≠备份&lt;/h2&gt;
&lt;h3&gt;5.1 快照与备份的本质区别&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;关键差异对比&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;快照&lt;/th&gt;
&lt;th&gt;备份&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;数据完整性&lt;/td&gt;
&lt;td&gt;依赖原始磁盘&lt;/td&gt;
&lt;td&gt;独立完整副本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;存储位置&lt;/td&gt;
&lt;td&gt;同一存储池&lt;/td&gt;
&lt;td&gt;异地存储&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;保留周期&lt;/td&gt;
&lt;td&gt;天级&lt;/td&gt;
&lt;td&gt;月/年级&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;恢复范围&lt;/td&gt;
&lt;td&gt;单虚拟机&lt;/td&gt;
&lt;td&gt;整集群&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;灾难恢复&lt;/td&gt;
&lt;td&gt;无法应对硬件故障&lt;/td&gt;
&lt;td&gt;完整保护&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;性能开销&lt;/td&gt;
&lt;td&gt;持续影响&lt;/td&gt;
&lt;td&gt;仅备份时影响&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;5.2 企业级备份策略&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.oowo.cc/src/assets/images/pve8-snapshots-restore-guide-images/enterprise-backup-strategy.png&quot; alt=&quot;企业级备份策略&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5.3 实用备份命令&lt;/h3&gt;
&lt;h4&gt;1. 完整备份（推荐周末执行）&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;vzdump &amp;lt;VMID&amp;gt; \
    --mode snapshot \
    --compress zstd \
    --storage BackupPool \
    --maxfiles 4 \
    --notes &quot;Weekly_Full_Backup&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;2. 增量备份（工作日执行）&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;vzdump &amp;lt;VMID&amp;gt; \
    --mode snapshot \
    --compress zstd \
    --storage BackupPool \
    --maxfiles 14 \
    --notes &quot;Daily_Incremental&quot; \
    --stdexcludes
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;3. 自动化备份脚本&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash
BACKUP_PATH=&quot;/mnt/backup&quot;
DATE=$(date +%Y%m%d)
LOG_FILE=&quot;/var/log/pve_backup.log&quot;

# 检查存储空间
if [ $(df -h $BACKUP_PATH | awk &apos;NR==2 {print $5}&apos; | sed &apos;s/%//&apos;) -gt 80 ]; then
    echo &quot;Storage space critical!&quot; &amp;gt;&amp;gt; $LOG_FILE
    exit 1
fi

# 执行备份
for vmid in $(qm list | awk &apos;NR&amp;gt;1 {print $1}&apos;); do
    vzdump $vmid --mode snapshot --compress zstd --storage BackupPool
    if [ $? -eq 0 ]; then
        echo &quot;Backup success: VM $vmid&quot; &amp;gt;&amp;gt; $LOG_FILE
    else
        echo &quot;Backup failed: VM $vmid&quot; &amp;gt;&amp;gt; $LOG_FILE
    fi
done
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;5.4 备份验证与恢复测试&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;定期验证清单&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;备份文件完整性检查&lt;/li&gt;
&lt;li&gt;随机抽查还原测试&lt;/li&gt;
&lt;li&gt;关键服务可用性验证&lt;/li&gt;
&lt;li&gt;性能基准测试对比&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;恢复流程&lt;/strong&gt;：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://mermaid.live/edit#pako:eNptkk1L40AYx79KeM5pSTK20-YgrIl78yZ72EkPwYy2YJKSTUCtBd9fW91FCrIWRNfFfWG1By-yvnwZZ5p-C9NMIxTMYch__r_n-T_DTAPmfIeCDguBXa9Ks6blScn3gbDjb_2jHu9sD753K1IuNylNNeLbrZeHXtzaZGd3TQFODa1V1u58mhHsqmQQ9vy3v33N1y_ZVbsyxv07ZRu_MtAk7Gr35f_jGChWI000VMJ_rPHzn6Lh4ORpBBmq8DUyWNvnh79Fh_7GfeZrwkeE71_HF613EsyUMFXCdneSMcQkYr4RZ4oQUyPx8yk7OhdIZooEE5HBn1Z8u847Pd6-GT8DSpHpjOi22cFFVj7yhJpOxUcixmQ3Lb73tQJycic1B_QwiKgMLg1ceyihMSyyIKxSl1qgJ78OnbejxdACy2smZXXb--z7blYZ-NFCFfR5e_FLoqK6Y4fUrNnJhbtvuwH1HBoYfuSFoKu4mDYBvQFLiVTV_EQRlzUNKbigqMWSDMugI4TyCkJlrKmFQlkplFFThpU0V8ljDWlYwRiVSriIJpAM1KmFfjAjHlv65pqvsez2wA&quot;&gt;&lt;img src=&quot;https://mermaid.ink/img/pako:eNptkk1L40AYx79KeM5pSTK20-YgrIl78yZ72EkPwYy2YJKSTUCtBd9fW91FCrIWRNfFfWG1By-yvnwZZ5p-C9NMIxTMYch__r_n-T_DTAPmfIeCDguBXa9Ks6blScn3gbDjb_2jHu9sD753K1IuNylNNeLbrZeHXtzaZGd3TQFODa1V1u58mhHsqmQQ9vy3v33N1y_ZVbsyxv07ZRu_MtAk7Gr35f_jGChWI000VMJ_rPHzn6Lh4ORpBBmq8DUyWNvnh79Fh_7GfeZrwkeE71_HF613EsyUMFXCdneSMcQkYr4RZ4oQUyPx8yk7OhdIZooEE5HBn1Z8u847Pd6-GT8DSpHpjOi22cFFVj7yhJpOxUcixmQ3Lb73tQJycic1B_QwiKgMLg1ceyihMSyyIKxSl1qgJ78OnbejxdACy2smZXXb--z7blYZ-NFCFfR5e_FLoqK6Y4fUrNnJhbtvuwH1HBoYfuSFoKu4mDYBvQFLiVTV_EQRlzUNKbigqMWSDMugI4TyCkJlrKmFQlkplFFThpU0V8ljDWlYwRiVSriIJpAM1KmFfjAjHlv65pqvsez2wA?type=png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;⚠️ &lt;strong&gt;最佳实践建议&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;采用3-2-1备份策略：3份副本，2种介质，1份异地&lt;/li&gt;
&lt;li&gt;定期进行恢复演练（至少季度1次）&lt;/li&gt;
&lt;li&gt;建立备份监控告警机制&lt;/li&gt;
&lt;li&gt;保持备份文档更新&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>在PVE 8中使用Cloud-init初始化cloud-image并创建模板</title><link>https://blog.oowo.cc/posts/pve8-cloud-init-cloud-image-template/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/pve8-cloud-init-cloud-image-template/</guid><description>使用 cloud-init 在 PVE 8 中初始化 cloud-image 并创建虚拟机模板的完整教程。</description><pubDate>Fri, 14 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;hr /&gt;
&lt;p&gt;cloud-init 是专为云环境中虚拟机的初始化而开发的工具，可以依据模板文件对虚拟机进行配置用户及密码，设置主机名，配置网络，扩容分区等功能。&lt;/p&gt;
&lt;p&gt;cloud-image 是专为云服务器编译的镜像，需要 cloud-init 或其他初始化工具初始化后正常使用。有了cloud-init 和cloud-image，我们可以很轻易地在 PVE 上批量克隆设置Linux虚拟机。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cloud images下载地址&lt;/p&gt;
&lt;h2&gt;下载不下来请使用科学上网&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;centos&lt;/strong&gt;：
http://cloud.centos.org/centos/
&lt;strong&gt;ubuntu:&lt;/strong&gt;
http://cloud-images.ubuntu.com/releases/
&lt;strong&gt;debian:&lt;/strong&gt;
https://cloud.debian.org/images/cloud/OpenStack/
&lt;strong&gt;fedora&lt;/strong&gt;:
https://alt.fedoraproject.org/cloud/
&lt;strong&gt;rehat7&lt;/strong&gt;：
https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86_64/product-downloads
&lt;strong&gt;opensuse&lt;/strong&gt;：
https://software.opensuse.org/distributions/leap#JeOS-ports&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本文以 ubuntu 22.04 LTS 和 PVE 8.3.0 为例。&lt;/p&gt;
&lt;h2&gt;创建虚拟机&lt;/h2&gt;
&lt;h3&gt;下载 ubuntu cloud-image&lt;/h3&gt;
&lt;p&gt;ubuntu 官网提供了多个版本的 cloud image 镜像，可依照要求选择下载。&lt;/p&gt;
&lt;p&gt;https://cloud-images.ubuntu.com/releases/&lt;/p&gt;
&lt;p&gt;以 ubuntu 22.04 LTS 为例，进入对应的文件夹，找到最下方的“release/”：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;下载文件名为“&lt;a href=&quot;https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-amd64.img&quot;&gt;ubuntu-22.04-server-cloudimg-amd64.img&lt;/a&gt;”的镜像：&lt;/p&gt;
&lt;p&gt;最为推荐img格式的镜像，导入很简单。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;将镜像导入 PVE 中&lt;/h3&gt;
&lt;p&gt;按照下图的步骤打开上传界面，选择本地下载好的img并且上传。
上传完毕后，查看是否成功上传。&lt;/p&gt;
&lt;h3&gt;创建虚拟机并导入镜像&lt;/h3&gt;
&lt;p&gt;打开 PVE 的 web 界面，创建虚拟机，“操作系统”中，选择“&lt;strong&gt;不使用任何介质&lt;/strong&gt;”，客户机操作系统的类别选择 &lt;strong&gt;Linux&lt;/strong&gt;，版本选择 &lt;strong&gt;6.x – 2.6 Kernel&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;“系统”中，&lt;strong&gt;显卡和 SCSI 控制器保持默认&lt;/strong&gt;，机型选择“&lt;strong&gt;q35&lt;/strong&gt;”，BIOS 选择“&lt;strong&gt;OVMF (UEFI)&lt;/strong&gt;”，&lt;strong&gt;勾选添加 EFI 磁盘和预注册密钥&lt;/strong&gt;。可以选择勾选 Qemu 代理（虚拟机中安装相应软件后可以在 PVE web段的虚拟机详情中查看 IP 地址）。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;磁盘无须自定，待会儿要删掉。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CPU&lt;/strong&gt; 和 &lt;strong&gt;内存&lt;/strong&gt; 按照个人需求进行更改。网络保持默认即可。&lt;/p&gt;
&lt;p&gt;创建完毕后，打开虚拟机的“&lt;strong&gt;硬件&lt;/strong&gt;”选项，&lt;strong&gt;分离并移除硬盘&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;回到 ssh 中，执行以下命令将 cloud image 导入到虚拟机中。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;qm importdisk &amp;lt;vmid&amp;gt; /var/lib/vz/template/iso/ubuntu-22.04-server-cloudimg-amd64.img local
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中，&lt;code&gt;vmid&lt;/code&gt;是创建虚拟机后的 &lt;strong&gt;虚拟机 ID&lt;/strong&gt;，可在 PVE web端的侧边栏中看到。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ubuntu-22.04-server-cloudimg-amd64.img**&lt;/code&gt;为&lt;strong&gt;镜像文件名&lt;/strong&gt;，可能需要更改。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;local&lt;/code&gt;是&lt;strong&gt;存储池&lt;/strong&gt;，根据你存储硬盘文件的分区而定，此处默认local。&lt;/p&gt;
&lt;p&gt;导入成功后应该能看到回显：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;transferred 1.0 GiB of 1.0 GiB (99.20%)
transferred 1.0 GiB of 1.0 GiB (100.00%)
transferred 1.0 GiB of 1.0 GiB (100.00%)
unused0: successfully imported disk &apos;local:123/vm-123-disk-5.raw&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时回到虚拟机的硬件菜单，可以看到一个新的硬盘：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选中，单击上方的“&lt;strong&gt;编辑&lt;/strong&gt;”，将“&lt;strong&gt;总线&lt;/strong&gt;”更改为&lt;strong&gt;SATA&lt;/strong&gt;或**，之后点击“添加”：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;此时会有一个“&lt;strong&gt;硬盘0 (SATA)&lt;/strong&gt;”，再次选中，选择上方的“&lt;strong&gt;磁盘操作&lt;/strong&gt;”—“&lt;strong&gt;调整大小&lt;/strong&gt;”：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在此可以输入增量大小：&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;添加一个“Cloud-init”设备：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;image-20250323121631277&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这里的总线协议不需要修改，保持默认即可。只需要选择你的存放硬盘的目录即可。&lt;/p&gt;
&lt;p&gt;之后点击左边栏的“Cloud-Init”，在这里可以编辑用户及密码，ssh公钥和 IP 地址了，编辑完成后，要点击上方的“&lt;strong&gt;重生成镜像&lt;/strong&gt;”。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;建议大家生成一个ssh公钥连接ssh，cloud image 默认禁止以密码连接 ssh。&lt;/p&gt;
&lt;p&gt;完成后，点击左边的“&lt;strong&gt;选项&lt;/strong&gt;”—“&lt;strong&gt;引导顺序&lt;/strong&gt;”，&lt;strong&gt;勾选“sata0”并拖到第一位&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;然后就可以启动系统了！&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果不想将此转换成模板的话，教程到此就结束了。&lt;/p&gt;
&lt;p&gt;想要转换成模板便于以后多开的小伙伴们，可以继续往下看。&lt;/p&gt;
&lt;h2&gt;克隆虚拟机&lt;/h2&gt;
&lt;h3&gt;转换模板&lt;/h3&gt;
&lt;p&gt;测试一下没有问题的话，关闭虚拟机。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;执行下述步骤前，请先确保选择正确的虚拟机，此操作无法挽回。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;点击&lt;strong&gt;右上角&lt;/strong&gt;的“&lt;strong&gt;更多&lt;/strong&gt;”—“&lt;strong&gt;转换成模板&lt;/strong&gt;”：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;此时概要会变成下图这样：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;左边栏的图标也发生变化：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这时，刚刚的虚拟机变成为了“模板”。&lt;/p&gt;
&lt;p&gt;我们可以克隆该虚拟机来创建多个 ubuntu 系统。&lt;/p&gt;
&lt;h3&gt;克隆虚拟机&lt;/h3&gt;
&lt;p&gt;点击右上角的“&lt;strong&gt;更多&lt;/strong&gt;”—“&lt;strong&gt;克隆&lt;/strong&gt;”：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;根据个人需要选择“&lt;strong&gt;链接克隆&lt;/strong&gt;”或“&lt;strong&gt;完整克隆&lt;/strong&gt;”。其中，&lt;strong&gt;“完整克隆”可以更改目标存储池&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;链接克隆 与 完整克隆 的区别
链接克隆的性能可能比完整克隆的低。完整克隆则是一个完全独立的虚拟机，其性能与克隆的虚拟机相同，但是克隆时间长。我本人是一直用“完整克隆”的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;以下是链接克隆与完整克隆的详细介绍：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;磁盘底层机制
链接克隆：基于qcow2格式的&quot;写时复制&quot;技术，仅生成增量磁盘文件（通常为10MB的meta数据文件），实际数据块仍指向母模板磁盘。相当于在母模板上叠加一个透明差分层。
完整克隆：执行深拷贝生成独立磁盘镜像，如将qcow2转换为raw格式，完全复制母盘所有数据块。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;性能差异根源&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;链接克隆I/O路径：请求 -&amp;gt; 增量盘 -&amp;gt; 未修改部分回查母模板 -&amp;gt; 合并数据返回&lt;/p&gt;
&lt;p&gt;完整克隆I/O路径：请求 -&amp;gt; 独立磁盘直读&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;模板管理策略&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当母模板版本升级时：&lt;/p&gt;
&lt;p&gt;链接克隆需逐个重建绑定
完整克隆可继续运行，但无法自动获得模板更新&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;适用场景建议
链接克隆：快速创建临时测试环境（平均创建速度提升90倍）
完整克隆：生产环境部署、需要长期运行的业务系统
附加技术点：在Proxmox中，即使删除母模板，通过qemu-img commit命令可将链接克隆转为独立磁盘（需停机操作）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;本篇完&lt;/h2&gt;
&lt;hr /&gt;
&lt;p&gt;本文遵守 CC BY-NC-SA 4.0 协议，转载请注明出处。
作者: Mapleleaf&lt;/p&gt;
&lt;p&gt;Github: https://github.com/mapleawaa&lt;/p&gt;
&lt;hr /&gt;
</content:encoded></item><item><title>PVE系统下的AMD独立显卡直通Windows并输出画面教程</title><link>https://blog.oowo.cc/posts/pve-amd-gpu-passthrough-windows-display-guide/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/pve-amd-gpu-passthrough-windows-display-guide/</guid><description>本教程介绍如何在PVE系统下实现AMD独立显卡直通Windows并输出画面，包括主机配置、PVE配置、Windows配置等。</description><pubDate>Fri, 08 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;PVE 做显卡直通经常出现错误代码 43 的情况，不出意外我也碰上了，下面是我的所有配置和操作步骤，也是折腾了半天，扒了很多论坛。虽然不知道哪个地方解决了问题，但是现在是能够稳定工作，所以发出来供参考。&lt;/p&gt;
&lt;h2&gt;主机配置&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;主板：ASUS B460M Pro

CPU：Intel i7-10700

显卡：AMD RX6600XT

PVE版本：6.4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PVE内核： 5.4.140-1-pve&lt;/p&gt;
&lt;p&gt;:::note
直通无需确定内核版本 建议统一升级到 &lt;strong&gt;PVE 8.2&lt;/strong&gt; 以上版本
:::&lt;/p&gt;
&lt;h2&gt;配置步骤&lt;/h2&gt;
&lt;p&gt;首先需要更新主板的 BIOS 到最新版本，然后开启主板的虚拟化功能，包括 VT-d、IOMMU、CPU 虚拟化，关闭 CSM，然后最好将主板的首选显卡改为 PEG。&lt;/p&gt;
&lt;p&gt;然后按照 PVE 官方的教程配置到 Verify IOMMU Isolation 这一步，在 PVE 中使用下面脚本检查是否显卡在一个单独的 IOMMU 组里&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;shopt -s nullglob
for g in `find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V`; do
    echo &quot;IOMMU Group ${g##*/}:&quot;
    for d in $g/devices/*; do
        echo -e &quot;\t$(lspci -nns ${d##*/})&quot;
    done;
done;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果有类似下面的输出，就代表显卡在一个单独的 IOMMU 组里面。
&lt;img src=&quot;http://kilomaple.test.upcdn.net/20241108175623.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果 在一个IOMMU组中存在多个设备，就说明需要开启 ACS 补丁。
这个补丁需要 CPU 支持，具体参考 PVE 官方教程里面的介绍，一般比较新的 CPU 都支持。
PVE 自带 ACS 补丁，只需要在 &lt;code&gt;/etc/default/grub&lt;/code&gt; 里的 &lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/code&gt; 项里面添加 &lt;code&gt;&quot;pcie_acs_override=downstream,multifunction&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;:::note
添加步骤&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 &lt;code&gt;/etc/default/grub&lt;/code&gt; 文件
&lt;ul&gt;
&lt;li&gt;命令行输入 &lt;code&gt;nano /etc/default/grub&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;找到 &lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT=&lt;/code&gt; 这一行&lt;/li&gt;
&lt;li&gt;在这一行后面添加 &lt;code&gt;&quot;pcie_acs_override=downstream,multifunction&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;保存并关闭文件&lt;/li&gt;
&lt;li&gt;运行 &lt;code&gt;sudo update-grub&lt;/code&gt; 更新 GRUB 配置&lt;/li&gt;
&lt;li&gt;重启系统使更改生效
然后重启即可看到 IOMMU 中每个 PCIE 设备都在单独一个分组里面。
:::&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;虚拟机内打 vendor-reset 补丁&lt;/h2&gt;
&lt;p&gt;官方教程里 RX系列会存在复位不正确的 bug，需要打这个 vendor-reset 补丁。&lt;/p&gt;
&lt;p&gt;:::warning
此项目issue已经许久未更新，最后 Release 的版本为 2020年8月22日，
目前判断已经&lt;strong&gt;停止更新&lt;/strong&gt;，请谨慎使用！
:::&lt;/p&gt;
&lt;p&gt;:::note
补丁本身使用非常方便，仅需下载后放到虚拟机的C盘目录下，右键以管理员身份运行即可。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/gnif/vendor-reset&quot;&gt;Github仓库&lt;/a&gt;
:::&lt;/p&gt;
&lt;h2&gt;创建 WIN10 虚拟机&lt;/h2&gt;
&lt;p&gt;参照 PVE 官方的 win10 best practice ，并且在选择 BIOS 的时候要选 OVMF，即使用 UEFI 启动，机型推荐选择 pc-q35-5.2，然后继续按照官方教程的 GPU Passthrough 一节中的指导，使用 GPU OVMF PCI Passthrough 的方式。&lt;/p&gt;
&lt;h2&gt;提取显卡 ROM&lt;/h2&gt;
&lt;p&gt;依次输入如下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    cd /sys/bus/pci/devices/0000:01:00.0/
    echo 1 &amp;gt; rom
    cat rom &amp;gt; /tmp/image.rom
    echo 0 &amp;gt; rom
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
或使用下方的一键命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /sys/bus/pci/devices/0000:01:00.0/ &amp;amp;&amp;amp; echo 1 &amp;gt; rom &amp;amp;&amp;amp; cat rom &amp;gt; /tmp/image.rom &amp;amp;&amp;amp; echo 0 &amp;gt; rom
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意上面的 &lt;code&gt;0000:01:00.0&lt;/code&gt; 要换成自己的显卡的 pci 地址，使用 lspci -v | grep VGA 可以看到。
可能显示的数值是 02:00.0，但是实际地址前要加入&lt;code&gt;0000:&lt;/code&gt;，所以要改一下。
然后可以使用 rom-parser 校验一下显卡固件是否支持 UEFI 启动，即输出的解析内容里面有 type 3 即可。
rom-parser 的仓库地址 https://github.com/awilliam/rom-parser
:::&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://kilomaple.test.upcdn.net/20241108194352.webp&quot; alt=&quot;&quot; /&gt;
然后将提取出来的rom（在上面代码的路径是 /tmp/image.rom）放到 /usr/share/kvm 路径下，我的显卡是 RX6600XT，所以就改名成 RX6600XT.rom。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp /tmp/image.rom /usr/share/kvm/RX6600XT.rom
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在 win10 虚拟机的配置文件中的显卡 pci 配置项中加入 rom 文件。&lt;/p&gt;
&lt;p&gt;在虚拟机conf中完整的配置项如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;...       ↓你的显卡地址|↓PCIE|↓显卡的 rom 文件名|↓设置为虚拟机的输出
hostpci0: 0000:03:00,pcie=1,romfile=RX6600XT.rom,x-vga=1
...省略
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;设置 cpu 选项&lt;/h2&gt;
&lt;p&gt;在虚拟机配置文件中添加 CPU 选项&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cpu: host,hidden=1,flags=+pcid
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;设置虚拟机显示输出&lt;/h2&gt;
&lt;p&gt;将 WIN10 虚拟机的自带显示输出为 none，只通过显卡进行输出。
&lt;img src=&quot;http://kilomaple.test.upcdn.net/20241108195007.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;如果不出意外的话直通就应该能成功了！&lt;/h2&gt;
&lt;h2&gt;排障&lt;/h2&gt;
&lt;h3&gt;设备管理器中出现代码43错误&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;安装 AMD 的驱动即可，安装完成在设备管理器里就能看到不带黄色感叹号的显卡了！
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;设备管理器显示设备没有正常启动（代码51）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;根据 ## 虚拟机内打 vendor-reset 补丁 中的提示，安装补丁即可！
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;最后所有相关配置文件（附注释）&lt;/h2&gt;
&lt;h3&gt;虚拟机配置文件&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;agent: 1    # Guest Agent选项 虚拟机互联所需 类似于VM Tools
bios: ovmf      # 虚拟机启动模式
boot: order=scsi0;ide2;net0     # 启动顺序
cores: 8        # CPU核心数
cpu: host,hidden=1,flags=+pcid   # CPU选项
efidisk0: disk-img:100/vm-100-disk-1.qcow2,size=128K    # 虚拟机磁盘文件
hostpci0: 0000:03:00,pcie=1,romfile=RX6600XT.rom,x-vga=1    # 显卡直通配置
ide0: local:iso/virtio-win-0.1.185.iso,media=cdrom,size=402812K # Vitrio驱动镜像 半虚拟化硬件所需
ide2: local:iso/SW_DVD9_Win_Pro_10_20H2_64BIT_ChnSimp_Pro_Ent_EDU_N_MLF_-2_X22-41514.ISO,media=cdrom # 安装系统镜像 
machine: pc-q35-5.2     # 虚拟机机型
memory: 16384       # 内存大小
name: Win10     # 虚拟机名称
net0: virtio=02:F7:CD:B6:9A:56,bridge=vmbr1,firewall=1      # 网卡配置
numa: 0     # NUMA配置 默认为0 表示关闭 这个选项非必要一般不需要开启 
onboot: 1       # 是否开机启动
ostype: win10   # 操作系统类型
scsi0: disk-img:100/vm-100-disk-0.qcow2,cache=writeback,discard=on,size=200G    # 虚拟机磁盘文件
scsihw: virtio-scsi-pci     # SCSI控制器
smbios1: uuid=ced7dbb9-bc4f-473b-804e-f9720a6ce54b      # SMBIOS UUID
sockets: 1      # CPU核心数
usb0: host=046d:c53f,usb3=1     # USB设备
usb1: host=0483:522a,usb3=1     # 鼠标
usb2: host=2-5,usb3=1          # 键盘
vga: none       # 虚拟机显示输出
vmgenid: d0749618-e1e9-4a4c-8b51-162eac4f26a4       # 虚拟机UUID
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;GRUB 配置文件&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=&quot;Proxmox Virtual Environment&quot;
GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet nomodeset intel_iommu=on iommu=pt video=efifb:off,vesafb:off pcie_acs_override=downstream,multifunction&quot;      
# GRUB启动参数,分别代表:不显示启动画面、不显示内核信息、开启 IOMMU、开启 IOMMU、关闭 efifb、关闭 vesafb、关闭 pcie_acs_override、关闭 multifunction功能
GRUB_CMDLINE_LINUX=&quot;&quot;
blacklist
blacklist radeon        # 禁用radeon驱动
blacklist nouveau       # 禁用N卡开源驱动
blacklist nvidia        # 禁用官方N卡驱动
vfio.conf
options vfio-pci ids=1002:73ff,1002:ab28 disable_vga=1      # 直通显卡的 pci 地址和类型，禁用虚拟化显卡的显示
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>RHEL Linux下新增硬盘，分区并挂载教程</title><link>https://blog.oowo.cc/posts/rhel-add-disk-partition-mount-guide/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/rhel-add-disk-partition-mount-guide/</guid><pubDate>Sun, 09 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在 CentOS 中将一个全新的硬盘（例如 &lt;code&gt;/dev/sdb&lt;/code&gt;）挂载到 &lt;code&gt;/home/hdd&lt;/code&gt; 目录下，你需要经历以下几个步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;检查硬盘&lt;/strong&gt;：首先，使用 &lt;code&gt;lsblk&lt;/code&gt; 或 &lt;code&gt;fdisk -l&lt;/code&gt; 命令确认硬盘 &lt;code&gt;/dev/sdb&lt;/code&gt; 是否已被系统识别。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;分区硬盘&lt;/strong&gt;：如果硬盘没有分区，你需要进行分区操作。可以使用 &lt;code&gt;fdisk&lt;/code&gt; 或 &lt;code&gt;parted&lt;/code&gt; 工具。这里以 &lt;code&gt;parted&lt;/code&gt; 为例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary 0% 100%
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里我们创建了一个 GPT 分区表，并创建了一个占用全部空间的主分区。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;格式化分区&lt;/strong&gt;：创建分区后，你需要将其格式化为一个文件系统，例如 &lt;code&gt;ext4&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mkfs.ext4 /dev/sdb1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;确保替换 &lt;code&gt;sdb1&lt;/code&gt; 为实际的分区名。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;创建挂载点&lt;/strong&gt;：在 &lt;code&gt;/home&lt;/code&gt; 目录下创建挂载点 &lt;code&gt;hdd&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mkdir /home/hdd
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;临时挂载&lt;/strong&gt;：为了测试，你可以先临时挂载分区：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mount /dev/sdb1 /home/hdd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在你可以检查 &lt;code&gt;/home/hdd&lt;/code&gt; 是否已成功挂载，并进行读写测试。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;永久挂载&lt;/strong&gt;：为了让系统启动时自动挂载，需要编辑 &lt;code&gt;/etc/fstab&lt;/code&gt; 文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/fstab
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在文件末尾添加一行，内容如下（确保使用实际的UUID替换&lt;code&gt;&amp;lt;UUID&amp;gt;&lt;/code&gt;）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UUID=&amp;lt;UUID&amp;gt; /home/hdd ext4 defaults 0 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你可以通过 &lt;code&gt;blkid /dev/sdb1&lt;/code&gt; 获取分区的UUID。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;验证挂载配置&lt;/strong&gt;：执行以下命令检查 &lt;code&gt;/etc/fstab&lt;/code&gt; 中的条目是否正确，避免重启后出现挂载问题：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mount -a
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;重启测试&lt;/strong&gt;：如果一切正常，可以重启系统以检验设置是否生效：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重启后，你应该能在 &lt;code&gt;/home/hdd&lt;/code&gt; 目录下看到挂载的硬盘。&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;fdisk&lt;/code&gt; 对硬盘进行格式化和分区的基本步骤如下。这里以在Linux环境下操作为例，因为Windows环境下现在已经较少直接使用 &lt;code&gt;fdisk&lt;/code&gt;，而是更多采用图形界面的磁盘管理工具或 &lt;code&gt;diskpart&lt;/code&gt; 命令行工具。以下是在Linux（例如CentOS、Ubuntu等）中使用 &lt;code&gt;fdisk&lt;/code&gt; 的步骤：&lt;/p&gt;
&lt;h3&gt;1. 打开终端并获取超级用户权限&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo su
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. 使用fdisk选择磁盘&lt;/h3&gt;
&lt;p&gt;确定你要分区的磁盘设备名，例如 &lt;code&gt;/dev/sdb&lt;/code&gt;（注意不要选错，以免丢失数据）。然后运行 &lt;code&gt;fdisk&lt;/code&gt; 命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fdisk /dev/sdb
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. 进入fdisk交互模式&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;输入 &lt;code&gt;m&lt;/code&gt; 查看所有可用的命令。&lt;/li&gt;
&lt;li&gt;要创建新分区，输入 &lt;code&gt;n&lt;/code&gt;。
&lt;ul&gt;
&lt;li&gt;接着选择分区类型，&lt;code&gt;p&lt;/code&gt; 表示主分区，&lt;code&gt;e&lt;/code&gt; 表示扩展分区。通常选择 &lt;code&gt;p&lt;/code&gt; 创建主分区。&lt;/li&gt;
&lt;li&gt;输入分区号，如果你是第一次创建分区，通常选择 &lt;code&gt;1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;输入起始扇区，默认通常是第一个扇区。&lt;/li&gt;
&lt;li&gt;输入结束扇区或+大小，如 &lt;code&gt;+10G&lt;/code&gt; 表示创建一个10GB的分区，或者直接回车使用默认值直到磁盘末端。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. 设置分区类型&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;输入 &lt;code&gt;t&lt;/code&gt; 来改变分区类型，通常对于Linux文件系统，保持默认的83（Linux）即可，除非你有特殊需求。&lt;/li&gt;
&lt;li&gt;输入分区号，例如 &lt;code&gt;1&lt;/code&gt;，然后回车。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5. 激活分区（如果是引导分区）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;如果这个分区是要作为引导分区（通常是第一个分区），输入 &lt;code&gt;a&lt;/code&gt;，然后输入分区号激活。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;6. 写入并退出&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;输入 &lt;code&gt;w&lt;/code&gt; 保存更改并退出 &lt;code&gt;fdisk&lt;/code&gt;。这一步操作会立即对磁盘进行修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;7. 格式化分区&lt;/h3&gt;
&lt;p&gt;格式化新创建的分区，比如刚创建的 &lt;code&gt;/dev/sdb1&lt;/code&gt;，可以使用以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkfs.ext4 /dev/sdb1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里使用 &lt;code&gt;ext4&lt;/code&gt; 文件系统作为示例，你可以根据需要选择其他文件系统，如 &lt;code&gt;xfs&lt;/code&gt;、&lt;code&gt;btrfs&lt;/code&gt; 等。&lt;/p&gt;
&lt;h3&gt;8. 挂载分区&lt;/h3&gt;
&lt;p&gt;创建一个挂载点，并挂载新分区：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir /mnt/mydata
mount /dev/sdb1 /mnt/mydata
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;9. 设置开机自动挂载（可选）&lt;/h3&gt;
&lt;p&gt;为了使分区在系统启动时自动挂载，需要编辑 &lt;code&gt;/etc/fstab&lt;/code&gt; 文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;/dev/sdb1 /mnt/mydata ext4 defaults 0 2&apos; | sudo tee -a /etc/fstab
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;确保替换命令中的路径和文件系统类型与实际情况相符。&lt;/p&gt;
&lt;p&gt;完成上述步骤后，你就成功地使用 &lt;code&gt;fdisk&lt;/code&gt; 对硬盘进行了分区，并对分区进行了格式化。记得在进行这些操作时格外小心，特别是在写入更改(&lt;code&gt;w&lt;/code&gt;)之前，确保操作无误，以防数据丢失。&lt;/p&gt;
</content:encoded></item><item><title>PVE一键优化小工具 PVE_Source</title><link>https://blog.oowo.cc/posts/pve-tools/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/pve-tools/</guid><pubDate>Sun, 31 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;该脚本为 Proxmox VE 用户提供便捷的管理和配置工具，包括系统更新、UI美化、高级配置及CPU优化等，极大简化系统维护和个性化设置流程。&lt;/h2&gt;
&lt;h3&gt;2024-1-6🌸开发版本&lt;/h3&gt;
&lt;p&gt;相较于前版本更新显卡直通流程&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget -q -O /root/pve_source.tar.gz &apos;https://bbs.x86pi.cn/file/topic/2024-01-06/file/24f723efc6ab4913b1f99c97a1d1a472b2.gz&apos; &amp;amp;&amp;amp; tar zxvf /root/pve_source.tar.gz &amp;amp;&amp;amp; /root/./pve_source
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2023-11-28🌸正式版本&lt;/h3&gt;
&lt;p&gt;兼容性较好版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; wget -q -O /root/pve_source.tar.gz &apos;https://bbs.x86pi.cn/file/topic/2023-11-28/file/01ac88d7d2b840cb88c15cb5e19d4305b2.gz&apos; &amp;amp;&amp;amp; tar zxvf /root/pve_source.tar.gz &amp;amp;&amp;amp; /root/./pve_source
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>NVIDIA-VGPU-UNLOCK 项目支持的显卡型号列表</title><link>https://blog.oowo.cc/posts/nvidia-vgpu-unlock/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/nvidia-vgpu-unlock/</guid><description>不支持的型号不在榜单内。不支持的原因可能是驱动限制或是开发者没有适配型号。</description><pubDate>Thu, 15 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;NVIDIA-VGPU-UNLOCK 项目支持的显卡型号列表&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;不支持的型号不在榜单内。不支持的原因可能是驱动限制或是开发者没有适配型号。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;GPU架构&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;发布时间&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;支持VGPU型号&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Maxwell&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2014年&lt;/td&gt;
&lt;td&gt;**家用系列：**GeForce GTX 750 Ti, GeForce GTX 750, GeForce GTX 980, GeForce GTX 970, GeForce GTX Titan X, NVIDIA Tegra X1, &lt;strong&gt;Tesla系列&lt;/strong&gt;：M10, M60, M6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pascal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2016年&lt;/td&gt;
&lt;td&gt;**家用系列：**GeForce GTX 1050, GTX 1060, GTX 1070, GTX 1080, GTX 1080 Ti, &lt;strong&gt;Quadro系列&lt;/strong&gt;：P6000, &lt;strong&gt;Tesla系列&lt;/strong&gt;：P100 (PCIe 12GB/16GB), P40, P4, P6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Volta&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2017年&lt;/td&gt;
&lt;td&gt;**家用系列：**GeForce GTX Titan V, &lt;strong&gt;Quadro系列&lt;/strong&gt;：GV100, &lt;strong&gt;Tesla系列&lt;/strong&gt;：V100 (SXM2 16GB/32GB, PCIe 16GB/32GB), V100S PCIe 16GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Turing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2018年&lt;/td&gt;
&lt;td&gt;**家用系列：**GeForce RTX 2060, RTX 2070, RTX 2080, RTX 2080 Ti, &lt;strong&gt;Quadro系列&lt;/strong&gt;：RTX 6000, RTX 6000 passive, RTX 8000, RTX 8000 passive, &lt;strong&gt;Tesla系列&lt;/strong&gt;：T4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ampere&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2020年&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;数据中心系列&lt;/strong&gt;：A2, A10, A16, A30, A30X, A40, &lt;strong&gt;专业显卡&lt;/strong&gt;：RTX A5000, RTX A5500, RTX A6000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ada&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2022年&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;数据中心系列&lt;/strong&gt;：L2, L4, L20, L40, L40S, &lt;strong&gt;专业显卡&lt;/strong&gt;：RTX 5000 Ada, RTX 5880 Ada, RTX 6000 Ada&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content:encoded></item><item><title>把 N5105/N100 的核显直进虚拟机，让 HDMI 直接点亮物理显示器</title><link>https://blog.oowo.cc/posts/intel-iommu-igpu-passthrough-proxmox-7x-vm-guide/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/intel-iommu-igpu-passthrough-proxmox-7x-vm-guide/</guid><description>理论上可用所有 Intel 核显，不保证所有型号都成功。</description><pubDate>Thu, 30 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Proxmox VE 7-8 实测可行；Windows / Linux 客户端都适用。
下文默认宿主机为 PVE，VMID 以 &lt;code&gt;199&lt;/code&gt; 举例，核显为 &lt;code&gt;00:02.0&lt;/code&gt;，按需替换。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;1. BIOS 点亮开关&lt;/h2&gt;
&lt;p&gt;重启按 &lt;strong&gt;DEL / F2&lt;/strong&gt; → &lt;strong&gt;Advanced&lt;/strong&gt; → 打开 &lt;strong&gt;Intel VT-d&lt;/strong&gt;（有的 BIOS 叫 “IOMMU” 或 “Direct I/O”）→ 保存退出。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;2. 宿主机打开 IOMMU&lt;/h2&gt;
&lt;p&gt;编辑启动参数：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/default/grub
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把这一行改成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet intel_iommu=on iommu=pt&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;update-grub
reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启后确认：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dmesg | grep -i &quot;iommu.*enabled&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;3. 核显独占 IOMMU 分组&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;find /sys/kernel/iommu_groups/ -type l | grep 00:02.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出中核显一个组即可，否则要去 &lt;code&gt;GRUB&lt;/code&gt; 里加 &lt;code&gt;pcie_acs_override=downstream,multifunction&lt;/code&gt; 再重启（略）。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;4. 进 VM 直通核显&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/pve/qemu-server/199.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;追加三行&lt;/strong&gt;，位置随意，不用粘贴其他重复字段：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hostpci0: 00:02.0,pcie=1,x-vga=1,rombar=0
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-vga=on
vga: none
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后一行关掉虚拟显卡，避免冲突。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;5. 装好客户端驱动&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;操作系统&lt;/th&gt;
&lt;th&gt;该做的事&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Windows 10/11&lt;/td&gt;
&lt;td&gt;Intel 官网抓 &lt;strong&gt;UHD Graphics&lt;/strong&gt; 驱动，一口气装完，重启。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ubuntu 22.04+&lt;/td&gt;
&lt;td&gt;开箱即用，如果黑屏跑：&amp;lt;br&amp;gt;&lt;code&gt;sudo apt install xserver-xorg-video-intel&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;6. 接显示器 + 开机测试&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;把宿主 HDMI/DP 插上物理显示器。&lt;/li&gt;
&lt;li&gt;PVE 里启动 VM。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10 秒内&lt;/strong&gt; 显示器应能看到 BIOS Logo → 直接进入系统桌面。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;没出画面？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VM 控制台里看有没有设备 → 重新装驱动。&lt;/li&gt;
&lt;li&gt;PVE 版本太旧就升到 8.x，顺带升级内核。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;一条命令验证：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;watch -n1 &apos;lspci -vnnk -s 00:02.0 | grep -i driver&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 &lt;code&gt;Kernel driver in use:&lt;/code&gt; 一栏应显示 &lt;code&gt;vfio-pci&lt;/code&gt;，说明核显正被 &lt;code&gt;vfio&lt;/code&gt; 抓到，无重叠。&lt;/p&gt;
&lt;p&gt;搞定，收工 🍺&lt;/p&gt;
</content:encoded></item><item><title>移除PVE的默认LVM分区释放安装硬盘空间</title><link>https://blog.oowo.cc/posts/pve-remove-default-lvm-guide/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/pve-remove-default-lvm-guide/</guid><description>在PVE中，默认会将安装硬盘的空间全部分配给local-lvm分区，导致安装硬盘空间不足。本教程将介绍如何移除默认LVM分区并释放安装硬盘空间。</description><pubDate>Thu, 16 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;安装过程中移除&lt;/h2&gt;
&lt;h3&gt;1. 到硬盘选择步骤时，选择硬盘后，点击Options按钮&lt;/h3&gt;
&lt;h3&gt;2. 找到LV Disk部分输入框，手动填上0&lt;/h3&gt;
&lt;h3&gt;3. 点击Apply按钮，继续安装步骤。&lt;/h3&gt;
&lt;hr /&gt;
&lt;h2&gt;已经安装完成系统&lt;/h2&gt;
&lt;h3&gt;1. 把local-lvm的空间全部分配给local&lt;/h3&gt;
&lt;h4&gt;1.打开自带的shell窗口，输入后以下内容后回车&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;lvremove pve/data
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;2.继续输入，然后回车&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;lvextend -l +100%FREE -r pve/root
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;3.在数据中心-存储中删除local-lvm分区，并编辑local，在内容一项中勾选所有可选项。&lt;/h4&gt;
</content:encoded></item><item><title>在 Ubuntu Server 22.04 / 20.04 上把网卡配置成静态 IP</title><link>https://blog.oowo.cc/posts/ubuntu-server-static-ip-2020-guide/</link><guid isPermaLink="true">https://blog.oowo.cc/posts/ubuntu-server-static-ip-2020-guide/</guid><description>蛮荒时期的博文，仅适合老版本</description><pubDate>Wed, 03 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;适用于 Ubuntu Server 22.04 及其 Netplan 时代（18.04+）的所有版本。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;1. 先看看网卡配置&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ ip -br addr
lo               UNKNOWN        127.0.0.1/8
enp0s3           UP             192.168.122.184/24
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;确认要改的是 &lt;code&gt;enp0s3&lt;/code&gt;，记住名字。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;2. Netplan 文件在哪儿？&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ cd /etc/netplan
$ ls
01-netcfg.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h3&gt;3. 备份 + 修改&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo cp 01-netcfg.yaml 01-netcfg.yaml.bak
sudo nano 01-netcfg.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;改成下面这样（自行替换 IP、网关、DNS）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.122.50/24]
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
      routes:
        - to: default
          via: 192.168.122.1
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h3&gt;4. 应用 &amp;amp; 验证&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo netplan apply   # 有语法错误会高亮行号
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# 查看 IP
$ ip -4 addr show enp0s3
2: enp0s3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 ...
    inet 192.168.122.50/24 brd 192.168.122.255 scope global enp0s3
       valid_lft forever preferred_lft forever

# 查看路由
$ ip route
default via 192.168.122.1 dev enp0s3 proto static
192.168.122.0/24 dev enp0s3 proto kernel scope link src 192.168.122.50

# DNS 检查
$ resolvectl status | grep &apos;Current DNS Server&apos;
    Current DNS Server: 8.8.8.8
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;输出如上就代表一次成功 🎉。&lt;/h2&gt;
&lt;hr /&gt;
&lt;h3&gt;小贴士&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;YAML 里&lt;strong&gt;缩进必须用空格，不能 TAB&lt;/strong&gt;，空两格就够。&lt;/li&gt;
&lt;li&gt;真想恢复 DHCP，只需把 &lt;code&gt;dhcp4: no&lt;/code&gt; 改成 &lt;code&gt;yes&lt;/code&gt;，然后 &lt;code&gt;sudo netplan apply&lt;/code&gt; 即可。&lt;/li&gt;
&lt;li&gt;Netplan 会先生成临时配置，再自动回滚。写错不用担心把 SSH 锁死——实在连不上直接重启更省事。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item></channel></rss>