Files
nixos/devices/srv3/README.md

7.0 KiB
Raw Blame History

定价与配置

售卖两类 kvm 虚拟机。它们都按照需求的内存和硬盘定价。

普通虚拟机

  • 硬盘每 10 GB 0.056 美元每月;内存每 128 MB 0.044 美元每月。每 1G 内存附带 1 核心 CPU内存不够 1G 的给 1 核心 CPU。
    • 例如4C4G/100G 的配置,每月 2 美元。
    • 这个价格相当于母鸡价格的 70% 。
  • 适合绝大多数轻度负载。不适合的情况包括:
    • 硬盘需要禁用 CoW 以获得尽可能高的 IOPS例如较大的、繁忙的数据库例如大型 mastodon/misskey 实例)。
    • 希望内存中的数据一直驻留在内存中(而不是被交换到 swap 中)。
  • 可能会超售,但我凭良心保证,当你需要时,仍然可以占满内存和硬盘;长期占满硬盘和内存不算滥用。
    • 前期肯定不会超售(笑死,根本没有那么多用户)。
    • 永远不会滥售;但后期可能会视情况调整价格。如果涨价,会延迟三个月生效。如果降价则立即生效。
    • 万一出现卖超太多了、不够用的情况,我会自掏腰包增加母鸡配置。
  • 实现细节:
    • 硬盘会使用 raw 格式,放置在启用 CoW 的 btrfs 子卷中;不预先分配,用到时再分配。
    • 内存会允许交换到 swap 中,并开启 KSM。
  • 限购:
    • 每台内存不能超过 8 GB硬盘不能超过 200 GB。有更大的需求请买下一个配置。
    • 每个用户只能购买一台。
    • 这个限购措施是为了防止有人和我抬杠,花 70% 的价格把整个母鸡买下来。并不是营销手段。合理需求的情况都可以谈。
  • 宿主机会自动创建快照,需要时可以回滚到几个小时或几天前的状态。

独立虚拟机(资源独立分配)

  • 按照母鸡价格的 1 倍定价。也就是:硬盘每 100 GB 0.8 美元每月;每 5G 内存/2 CPU 2.5 美元每月。
  • 实现细节:
    • 硬盘会使用 raw 格式,放置在禁用 CoW 的 btrfs 子卷中;预先分配所有容量。
    • 内存会锁定在物理内存中。
    • CPU 会隔离/锁定在物理 CPU 上。
  • 宿主机不会创建硬盘的快照。
  • 两类资源可以混合购买。比如可以硬盘按照独立虚拟机的价格购买,内存/CPU 按照普通虚拟机的价格购买。

其它细节

  • 无论哪个方案,硬盘/内存长时间占满都不算滥用。对于第一个方案CPU 是共享的,请不要长时间占满。
  • 暂不限制带宽,合理使用即可。
  • 默认共享 IPv4支持端口转发详见下文说明。独立的 IPv4 每个每月 2 美元。 独立的 IPv6 免费,但暂不支持(技术上没有准备好,如果有人有需要我就去准备)。
  • 只卖朋友和朋友的朋友(总之得有人保证别拿去做坏事)。 若此定价对您来说仍然难以接受,可以联系我,打五折或者免费。
  • 此价格 2025 年 9 月 17 日前有效。之后大概率也不会调整,但保留调整的权利。
  • 预计收入无法覆盖成本。如果某个月的收入高于成本,承诺会将多出的部分捐出去。
  • 非 kvm 虚拟机的服务(例如,只跑一个 podman 容器,只跑某一个服务)定价私聊,大致上是上方价格再加上我的工作成本(事少的免费,事多的就要实收了)。
  • 配置随时可以调整。所以按照自己这个月够用的来就行,不需要为未来留余量。但每次调整都需要重启虚拟机。
  • 母鸡价格 40 美元每月,配置在下方列出。
    • 机房: LAX3 IPsrv3.chn.moe
    • CPU: Intel® Xeon E5-2650L v3 (12 Cores 24 Threads)
    • Memory: 64GB ECC DDR4
    • Storage: 1TB NVMe (可加8 美元/TB另有 NFS 3 美元/TB)
    • Network: 1Gbps, 1x IPv4 (可加2 美元/IPv4), 8TB/month

操作

我不提供网页端的控制面板(因为懒得搞,要是有人想替我搞的话那就提供)。

在确认购买后,我会给你一个 VNC 端口和密码。虚拟机会首先启动到 netboot.xyz你需要登陆 VNC 选择自己喜欢的发行版并安装。 安装好系统之后VNC 连接仍然可以使用,你可以使用它来重装系统等。如果你担心安全性,也可以告知我,将它关闭。

此外我还可以提供一个宿主机的账户SSH 连接),用于强制重启虚拟机等(会做好权限的分隔的)。若有需要请告知我。

共享 IP

支持多种转发策略。

  • TCP/UDP 端口转发,就是最普通的转发。 这个方法只有一个坏处,就是多个虚拟机不能共享同一个公网 IP 的同一个端口。 这导致用户在访问时往往需要明确端口号而不能使用默认端口(因为默认端口已经被占用了), 例如需要使用 https://srv3.chn.moe:4321 而不是 https://srv3.chn.moe。 建议不面向普通用户的服务使用这个方法例如sshcoturn
  • 利用 Nginx根据一些信息分流再转发给虚拟机。这可以做到多个虚拟机共享同一个端口但也有缺陷。具体来说它有很多种方法
    • 依据 SNI 分流,并透明代理到虚拟机。 这个办法的缺点是,只支持 TLS 连接(例如 https同时服务端看到的用户侧端口会变化通常情况下不影响什么。 只要这两个缺点不是问题,就建议用这个方法。
    • 依据 SNI 分流并使用代理协议proxy protocol转发给虚拟机。 相比于上一个方法,这个方法可以正确传递用户侧端口号,但需要虚拟机的服务端支持 proxy protocol。
    • Nginx 依据 http 的 host 头分流,再发给虚拟机。 这个方法的缺点有很多,例如我需要修改你的域名的 DNS用来申请证书母鸡到虚拟机的连接不加密只支持 http/https等。 这个方法唯一的好处是,如果你不会配置 nginx可以在宿主机上配置好虚拟机只要跑后端的服务就行了。
  • 别转发了,直接在宿主机上处理。例如 80 到 443 的跳转。以及如果你想要 host 一个小的、不常改动的静态网站,等。

杂项

如何调整虚拟机启动顺序(重启到 iso 而不是硬盘)?

先重启虚拟机,然后马上连接 VNC可以看到“Tiano Core”的提示。这个提示只会停留 15 秒,所以重启虚拟机后要迅速连接 VNC。 在这个界面按 ESC 就可以进入虚拟机的 BIOS在这里可以修改虚拟机的一些设置就像实体机的 BIOS 那样)。 如果只是想临时从 ISO 启动可以在这里选择“Boot Manager”然后选择带 “CDROM” 那一项就可以了。

如何调整硬盘大小?

  • 扩容:你需要在扩容将分区和文件系统调整大(占用虚拟磁盘在末尾新增的空间)。
  • 缩容:你需要在缩容将分区和文件系统调整小(在虚拟磁盘的末尾预留出要缩容的空间)。

这些事情都最好你自己来做。我可以尝试帮忙,但不保证数据安全。

如何强制重启虚拟机/关机后如何开机?

登陆宿主机后,使用 vm 命令,不加任何参数,即可看到提示,按提示操作。