俄罗斯存储VPS放哪里:吞吐量、丢包与152-FZ
在俄罗斯选择存储 VPS 时,为什么吞吐量和丢包率比 RTT 更重要?了解 BBR、iperf3 测试方法,以及联邦法律 152-FZ 对个人数据存储的要求。
在俄罗斯时,存储 VPS 应放在哪里
从俄罗斯购买存储 VPS 涉及两个决策,只有一个属于技术问题。技术决策是磁盘所在的位置;对于大容量存储,关键因素是吞吐量和丢包率,而不是往返时间。法律决策是你存储的内容,因为联邦法律 No. 152-FZ 对待你自己的归档数据和他人的个人数据的方式不同。
本指南不提供任何延迟数据。唯一重要的路径是你的连接与目标服务器之间的路径,因此下面的每项测量都需要由你自己运行相应命令。
批量存储中往返时间几乎不重要
往返时间(RTT)是一个数据包到达服务器并返回所需的时间。这是最容易测量的指标,因此人们常用它选择区域。对于传输照片目录或执行每夜备份,单看这个指标几乎无法决定实际效果。
TCP(传输控制协议)不会发送一个数据包后等待响应。它会让多个未确认的数据保持在传输中,Linux 还会自动将这个窗口扩大到数 MB。经过 50 ms 链路时,单个数据流在窗口扩展完成后仍可达到每秒数百 Mb。RTT 决定连接达到满速所需的时间,但不决定连接稳定后的速度。
RTT 确实会影响一种特定模式:每个操作都需要一次往返。将远程磁盘挂载为文件系统后复制 40,000 个小文件时,每个文件至少需要一次往返;执行打开、写入和关闭操作时,通常还需要多次往返。无论购买了多少带宽,传输速度都大致只有每个 RTT 处理一个文件。因此,在同一条链路上,将数据打包成大对象并同时发送多个对象的工具(例如 restic,或使用并行传输的 rclone)会大幅优于挂载的远程文件系统。
丢包才是实际破坏长路径传输的原因
距离会将较低的丢包率放大为明显的速度下降。这正是“ping 看起来正常,但传输速度却很慢”的原因。Ubuntu 的默认拥塞控制算法是 CUBIC。它会将丢失的数据包视为拥塞,并缩小发送窗口。恢复该窗口需要经过多个往返。在长路径上,每次往返都很慢。因此,在 50 ms 延迟下发生 0.5% 丢包,对吞吐量的影响远大于在 5 ms 延迟下发生相同的 0.5% 丢包。
BBR 根据测得的带宽和延迟做出响应,而不是将每次丢包都视为拥塞。因此,在偶尔丢包的长路径上,它通常能保持更好的性能。请在发送端启用它:在 VPS 上启用会影响下载,在您自己的计算机上启用会影响上传。
printf 'net.core.default_qdisc = fq\nnet.ipv4.tcp_congestion_control = bbr\n' | sudo tee /etc/sysctl.d/99-bbr.conf
sudo sysctl --system
sysctl net.ipv4.tcp_congestion_control最后一条命令应输出 net.ipv4.tcp_congestion_control = bbr。请使用 iperf3 在启用前后分别进行测量,不要直接假设它会带来改善。在没有丢包的干净路径上,它通常完全不会改变性能。
实际接近哪些地区
法兰克福、阿姆斯特丹、华沙和赫尔辛基是欧洲主机提供商面向俄罗斯网络集中部署容量的地点,也是你最常看到的推荐地点。地图上的距离并不能很好地预测实际网络表现。俄罗斯 ISP 到赫尔辛基数据中心的流量仍可能经过法兰克福或斯德哥尔摩,而同一城市中的两家提供商也可能使用完全不同的 transit 组合。如果你位于乌拉尔山脉以东,西欧在各个方面都相距很远;Almaty 或 Yerevan 等地点有时反而具有更好的路由。
因此,不要根据地图选择地点。大多数主机商会为每个地点提供测试 IP 地址和测试文件。付款前先进行测试,并且应使用实际上传数据的连接测试,不要使用其他网络上的手机连接。如果你还需要权衡费用和司法管辖区,EU 存储 VPS 的数据驻留和成本会更详细地介绍欧洲方面的情况。
使用 mtr 测量实际路径
sudo apt update
sudo apt install -y mtr-tiny iperf3
sudo mtr -rwzbc 200 198.51.100.10-r 打印报告并退出,-w 防止主机名被截断,-z 显示每一跳所属的网络,-b 同时显示名称和 IP 地址,-c 200 发送 200 个周期,使丢包百分比具有参考意义。
先查看最后一行。中间某一跳显示丢包,但后续各跳不再显示丢包,这不表示你的路径存在丢包:路由器会降低生成 mtr 所需 ICMP 响应的优先级,因此繁忙的核心路由器可能报告丢包,但仍能正常转发你的流量。只有一直持续到最终跳的丢包才是真实丢包。最终跳的丢包率只要超过约 1 percent,就会严重影响大文件上传,无法通过更换传输工具解决。
如果网络过滤 ICMP,导致跟踪提前中断,请通过实际使用的端口改用 TCP 进行跟踪:
sudo mtr -rwc 100 -T -P 443 198.51.100.10路由通常是不对称的,因此还应从 VPS 向自己的地址运行 mtr。如果你的家庭连接位于 CGNAT(运营商级网络地址转换)之后,你的地址无法从外部访问,反向跟踪会在 ISP 内部停止。这属于预期行为,不是故障。
使用 iperf3 测量吞吐量
在 VPS 上启动服务器,并且仅在测试期间开放该端口:
sudo apt install -y iperf3
sudo ufw allow 5201/tcp
iperf3 -s -p 5201然后,在存放待上传数据的计算机上执行:
iperf3 -c 198.51.100.10 -p 5201 -t 30 -P 1
iperf3 -c 198.51.100.10 -p 5201 -t 30 -P 4
iperf3 -c 198.51.100.10 -p 5201 -t 30 -P 4 -R第一次运行使用单个上传流,第二次运行使用 4 个并行流,-R 则反转传输方向,让 VPS 向您发送数据。请仔细比较前两次运行。如果 4 个流明显快于 1 个流,说明限制来自单个连接,原因可能是窗口大小或丢包恢复机制;使用支持并行连接的传输工具即可达到完整速率。如果两次运行的数值相同,则说明您找到了实际上限。对于大多数家庭和小型办公室线路,这个上限通常来自您自己的上行链路,而不是服务器所在位置。
测试完成后,使用 Ctrl+C 停止服务器,然后关闭端口。让 iperf3 -s 持续监听会导致互联网上的任何人消耗您的带宽配额。
sudo ufw delete allow 5201/tcp152-FZ 对俄罗斯境外存储型 VPS 的规定
2006 年 7 月 27 日颁布的第 152-FZ 号联邦法律《个人数据法》,就是人们所说的“数据本地化”依据。该法律中的 3 条规定决定了境外存储型 VPS 是否会给您带来问题。以下内容介绍法律条文,不构成法律意见。
第 1 条第 2 款划定了适用边界。 如果自然人仅出于个人和家庭需要处理个人数据,且该处理不侵犯数据主体的权利,则本法不适用。您的家庭照片,以及您为自己运行的服务器备份,都属于这一范围。
第 18 条第 5 款规定了本地化要求。 该要求适用于运营者,即决定处理目的的人。自 2025 年 7 月 1 日起,该条款的表述从指示改为禁止。根据 2025 年 2 月 28 日第 23-FZ 号联邦法律引入的措辞,在收集个人数据(包括通过互联网收集)时,不得使用位于俄罗斯联邦境外的数据库,记录、系统化、积累、存储、更新或检索俄罗斯联邦公民的个人数据,但第 6 条第 1 款第 2、3、4 和 8 项规定的情形除外。同一要求的早期版本由 2014 年 7 月 21 日第 242-FZ 号联邦法律引入,并于 2015 年 9 月 1 日生效。
第 12 条规定了跨境传输。 根据 2022 年 7 月 14 日第 266-FZ 号联邦法律引入、并自 2023 年 3 月 1 日起生效的版本,运营者在开始向境外传输个人数据前,必须通知俄罗斯联邦通信、信息技术和大众传媒监督局(Roskomnadzor)。根据第 22 条提交处理活动通知是另一项独立义务,与磁盘位于何处无关。
实际区分很明确。将您自己的归档存储在法兰克福的存储型 VPS 上,属于个人使用,152-FZ 不适用于此类情形。如果您运行一项允许用户注册的服务,并且仅将这些用户的姓名、电话号码和订单历史记录保存在同一块境外磁盘上,那么您就是运营者。此时,第 18 条第 5 款是首先需要满足的要求。
介于两者之间的是备份,这也是最容易被忽视的情况。客户数据库转储仍然包含其个人数据,因此个人使用例外不适用于该转储。主要数据库位于俄罗斯境内、境外仅保存加密副本,是否符合第 18 条第 5 款,需要律师根据当前法律文本判断。不要根据互联网上的文章解决这个问题,包括本文。上面列出的法律编号可用于在官方法律信息门户中搜索;该门户会发布已合并并纳入全部修订内容的法律文本。
上传前加密,使主机始终只保存密文
客户端加密表示数据在您的计算机上完成加密,服务器收到的是无法读取的字节。托管公司、所在司法管辖区,以及任何能够强制托管公司提供数据的一方,看到的内容都相同。剩下的关键是密钥管理,这也会成为您的全部风险。
restic 默认会在您的计算机上加密每个数据块,仓库密码不会传到服务器:
sudo apt install -y restic
restic init --repo sftp:backup@198.51.100.10:/srv/restic
restic --repo sftp:backup@198.51.100.10:/srv/restic backup ~/documents ~/photos如果需要一个仍可浏览的镜像,rclone 提供一种 crypt 远程端,用于封装另一个远程端。运行 rclone config,先为 VPS 创建明文远程端,再创建一个类型为 crypt 的第二个远程端,并将其 remote 设置指向第一个远程端上的路径;文件名加密选择 standard,然后设置密码和盐值。
sudo apt install -y rclone
rclone config
rclone sync ~/photos secret:photos --transfers=8 --progress
rclone cryptcheck ~/photos secret:photos在 crypt 远程端上使用 rclone cryptcheck,不要使用普通的 rclone check,因为 check 无法穿过加密层比较校验和。将文件名加密设置为 off 只会添加 .bin 扩展名,服务器上的每个名称仍然可读,因此除非有其他程序必须读取这些名称,否则应保持为 standard。
对于单个归档文件,使用 age 即可。将下面的接收者替换为 age-keygen 为您打印的公钥:
sudo apt install -y age
age-keygen -o ~/.age-key.txt
grep -i 'public key' ~/.age-key.txt
age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p -o photos.tar.zst.age photos.tar.zst加密无法隐藏所有信息。服务器仍会知道文件大小、您保留的对象数量、连接时间,以及每次传输的数据量。加密也不会改变法律分析,因为您持有密钥的个人数据仍属于个人数据:第18条第5款关注的是数据库所在位置,而不是主机是否能够读取数据库。
必须明确说明一点。密码就是数据本身。密码丢失后,密文将无法使用,也没有恢复途径,支持工单也无法提供帮助。请将密码记录在一个即使生成备份的计算机丢失也能保留的位置。深入了解在存储 VPS 上加密数据将更详细地介绍密钥管理。
从俄罗斯向境外托管服务商付款
2022年3月,Visa 和 Mastercard 暂停在俄罗斯的业务后,俄罗斯银行发行的银行卡已无法在俄罗斯境外使用;而大多数主机使用的支付处理商不接受本国的 Mir 系统。许多主机还会在注册时进行制裁筛查,有些主机会在每次续费时再次筛查。截至 2026年9月,大多数欧洲和北美服务商仍然如此。
其后果比付款不便更严重。无法续费的存储 VPS 就无法继续提供存储服务。主机通常会在较短的宽限期后暂停未付款的服务器,并在更长的期限后删除磁盘;这两个期限都会写在您结账时接受的条款中。在上传 1 TB 数据前先阅读这些条款,并将续费日期加入日历,设置一个提前很久触发的提醒。
在提交任何数据前,值得确认两件事:服务商结账页面针对您所在国家实际显示哪些付款方式,以及价格以欧元还是美元计费,因为外币固定月费并不等于以卢布计算的固定月成本。本指南不提供绕过服务商付款规则或制裁规则的方法。如果某个主机不接受您的付款,请选择接受付款的主机。
种子数据计算:首次上传需要多长时间
首次上传最耗时。之后只需发送发生变化的数据,而对于照片和文档来说,变化量通常可以忽略不计。计算公式只有一行:秒数等于字节数乘以 8,再除以每秒比特数。按 1,000,000,000 字节计算 1 GB,500 GB 就是 4 万亿比特。
The data behind this chart
[
{
"label": "10 Mbit/s uplink",
"effective_mbit_s": 8,
"hours_for_500_gb": 138.9
},
{
"label": "40 Mbit/s uplink",
"effective_mbit_s": 32,
"hours_for_500_gb": 34.7
},
{
"label": "100 Mbit/s uplink",
"effective_mbit_s": 80,
"hours_for_500_gb": 13.9
},
{
"label": "500 Mbit/s uplink",
"effective_mbit_s": 400,
"hours_for_500_gb": 2.8
},
{
"label": "1000 Mbit/s uplink",
"effective_mbit_s": 800,
"hours_for_500_gb": 1.4
}
]表中的数据假设实际获得标称上行带宽的 80%,这是为协议开销以及家庭其他用户占用带宽预留的合理余量。这些是计算结果,不代表任何实际网络的测量值。将 iperf3 提供的速率代入相同公式,结果仍然成立。
在 10 Mbit/s 的上行连接上,连续上传 500 GB 需要 138.9 小时,接近 6 天。在有效速率为 80 Mbit/s 时,需要 13.9 小时,也就是运行一夜并持续到次日上午。在千兆连接上,需要 1.4 小时。这 5 行涵盖了大多数家庭和小型办公室连接的范围,规律很明确:播种时间取决于您自己的上行带宽,因此服务器即使位于远 2,000 公里的地方,对这里的耗时几乎没有影响。
有两点需要注意。请在 tmux 中运行首次上传,或将其作为 systemd 服务运行,以免关闭笔记本电脑时进程终止;restic 和 rclone 都能从停止的位置继续运行。还应先阅读 ISP 的合理使用政策,因为一周内上传半 TB 可能触发住宅套餐的限速。如果您还没有确定所需容量,应先计算实际需要多少存储空间,再进行上述计算;比较存储 VPS 与对象存储中 1 TB 的价格可以确定每月播种 1 TB 数据的成本。
验证恢复结果,再信任备份副本
从未执行过恢复的副本只能算猜测。运行 3 条命令,就能把它变成事实。
restic --repo sftp:backup@198.51.100.10:/srv/restic snapshots
restic --repo sftp:backup@198.51.100.10:/srv/restic check --read-data-subset=5%
restic --repo sftp:backup@198.51.100.10:/srv/restic restore latest --target /tmp/restore-test --include /home/me/documents单独运行 check 可以验证仓库结构和元数据,但不会下载任何文件数据,因此无法发现截断或损坏的 pack 文件。--read-data-subset=5% 会下载并验证 5% 的随机 pack 文件,这是发现此类损坏的方法。它消耗的带宽与指定的验证比例成正比,因此验证 500 GB 仓库的 5% 就需要下载 25 GB。该选项也接受 1/5 这样的比例值,以及 10G 这样的大小值。
然后逐字节比较一个真实文件:
sha256sum ~/documents/report.pdf /tmp/restore-test/home/me/documents/report.pdf如果两个哈希值相同,说明整个往返过程都正常,包括加密过程。
在一台不是执行备份的机器上使用你记录下来的密码执行一次恢复测试。这个测试可以发现真正的故障:仓库密码只存在于已经损坏的笔记本 shell 历史记录中。从未通过该测试的远程磁盘只能算副本,不能算备份。在依赖存储 VPS 之前,建议阅读存储 VPS 是否可以单独算作备份。提供商一侧的快照也有同样的限制,因为快照与其保护的服务器位于同一基础设施上,因此请了解快照和备份解决的问题不同。
一种服务器的流程验证成功后,剩下的问题就是机器之间如何通信;通过专用隧道连接不同提供商的两个 VPS可以让这些流量避开公网。如果你还在确定需要哪种服务器,可以从存储 VPS 与普通 VPS 的区别开始。
FAQ
将自己的备份保存在俄罗斯境外的存储 VPS 上是否合法?
第 152-FZ 号联邦法律不适用于自然人出于纯粹个人和家庭需要处理个人数据的情况。该规定见第 1 条第 2 款,前提是此类处理不侵犯他人的权利。您自己的照片,以及您为自己运行的服务器的备份,属于这种情况。
如果数据属于其他人,情况就不同了:此时您属于运营者,第 18 条第 5 款规定的本地化要求适用。该款采用第 23-FZ 号联邦法律(2025 年 2 月 28 日)的措辞,并自 2025 年 7 月 1 日起生效。以上仅说明法律条文的内容,不构成法律意见。因此,在据此构建服务前,请核对当前法律文本并咨询专业人士。
客户端加密是否满足第 152-FZ 号法律的本地化要求?
不满足。加密会改变托管提供商能够读取的内容。第 18 条第 5 款规定的是数据库所在位置,而您持有密钥的数据仍然属于个人数据。
但仍应进行加密,因为这会将主机及其司法管辖区排除在机密性威胁模型之外。至于本地化要求,应单独判断,并依据其自身的法律条件处理。
为什么 VPS 的 ping 看起来正常,但传输速度很慢?
往返时间不等于吞吐量。最常见的两个原因是丢包和逐文件往返。
丢包会使 CUBIC 拥塞控制缩小发送窗口。在长路径上,恢复该窗口需要经历许多次缓慢的往返,因此即使只有百分之几的丢包,也可能占用很大一部分带宽。
通过挂载的远程文件系统复制大量小文件时,每个文件至少需要一次往返,无论链路本身能够承载多少流量。
先运行 iperf3 -c 198.51.100.10 -t 30 -P 1,然后运行带 -P 4 的相同命令。如果 4 个流明显快于 1 个流,限制就在于单个连接,而不是链路本身。
从俄罗斯选择 Frankfurt、Amsterdam、Warsaw 还是 Helsinki?
不要猜测,应进行测量。这 4 个地点都有能够连接俄罗斯网络的托管提供商,但您自己的 ISP 采用的路由比地图上的距离更重要。同一城市中的不同提供商也可能存在差异。
向每家提供商索要测试 IP 地址,然后从您将用于上传的连接,对每个候选地点运行 sudo mtr -rwzbc 200 <ip> 和 iperf3 测试。应选择最终跳的丢包率最低的位置,而不是 ping 最低的位置。
首次上传 500 GB 需要多长时间?
用比特数除以有效上传速率。500 GB 等于 4 万亿比特,因此在有效速率为 80 Mbit/s 时,大约需要 13.9 小时;在有效速率为 8 Mbit/s 时,大约需要 138.9 小时。
这些是计算结果,请替换为 iperf3 在您自己的线路上测得的速率。应在 tmux 中运行上传任务,或将其配置为 systemd 服务,避免连接中断后必须从头开始。开始前还应检查 ISP 的合理使用政策。