欧盟存储VPS每TB每月多少钱?如何核查数据驻留
用月费除以可用TB,先算欧盟存储VPS每TB每月成本,再核查数据驻留声明、数据处理协议和磁盘类型,避免用NVMe价格存放冷数据。
欧盟存储 VPS 每 TB 每月的成本
欧盟存储 VPS 按 TB 销售,因此决定是否购买的关键是计算每 TB 每月的成本:用月费除以可用容量。小型方案的价格通常为每 TB 每月几十欧元。采用机械硬盘的大容量方案,价格通常接近每 TB 每月几欧元。在查看任何功能列表前,先对每个候选方案进行这项计算。
下面的区块展示了完整计算示例。示例使用四舍五入后的价格,仅用于说明计算方法。这些价格不是任何供应商的当前价格,网页上显示的实际价格通常几个月内就会变化。请将其替换为当前订单页面上的价格。
The data behind this chart
[
{
"label": "1 TB NVMe VPS",
"monthly_eur": 40,
"capacity_tb": 1,
"eur_per_tb": 40
},
{
"label": "2 TB HDD plan",
"monthly_eur": 12,
"capacity_tb": 2,
"eur_per_tb": 6
},
{
"label": "8 TB HDD plan",
"monthly_eur": 30,
"capacity_tb": 8,
"eur_per_tb": 3.75
},
{
"label": "16 TB HDD plan",
"monthly_eur": 50,
"capacity_tb": 16,
"eur_per_tb": 3.13
}
]在该示例中,小型闪存方案的成本为每 TB 每月 40 欧元。最大容量方案的成本为每 TB 3.13 欧元;其月费为 50 欧元,容量为 16 TB。两端之间相差超过一个数量级,这正是容量型方案作为独立产品存在的原因。如果您的成本比接近表格顶部,说明您正在以闪存价格存储冷数据。
以下两点有助于确保比较准确。请使用文件系统报告的容量,而不是宣传页面上的容量进行计算。请比较相同的计费周期,因为月费与要求年度承诺的价格属于不同产品。
为何标称容量价格适用于机械硬盘
以低价提供 TB 容量的方案,底层使用的是硬盘驱动器(HDD)。只有这种介质的每 TB 成本足以支撑该价格。应用服务器下方的 NVMe(非易失性内存快速通道)存储是另一种产品,价格更接近上方表格的第一行。两者都以 VPS 形式销售,而存储型 VPS 与普通 VPS 的区别主要在于介质的选择,以及这种选择对延迟的影响。
The data behind this chart
[
{
"label": "7200 rpm HDD",
"random_4k_iops": 150,
"sequential_mb_s": 180
},
{
"label": "SATA SSD",
"random_4k_iops": "50,000",
"sequential_mb_s": 500
},
{
"label": "NVMe SSD",
"random_4k_iops": "200,000",
"sequential_mb_s": 3000
}
]这些是相关介质常见的公开指标,表示数量级,不代表任何具体方案的保证值。7200 rpm 硬盘每秒可处理约 150 次随机 4k 操作,因为每个未命中缓存的请求都要等待磁头移动,并等待盘片转到磁头下方。这个等待时间以毫秒计算。NVMe 硬盘的处理路径中没有移动部件,每秒可处理约 200,000 次相同操作,等待时间以微秒计算。顺序操作的差距要小得多:同一块机械硬盘每秒可连续传输约 180 MB,足以在一夜之间完成备份窗口内的数据写入。
因此,规则很简单。机械硬盘的容量适合按顺序写入和读取大文件。不适合在磁盘各处分散执行大量小型操作。本页后续的每个设计决策都基于这一点。
实际获得的存储性能
lsblk -d -o NAME,ROTA,SIZE,MODEL
df -h /mnt/store
df -i /mnt/storeROTA 会读取旋转设备的 1。不要相信 VPS 上的 0:磁盘通过 virtio 驱动提供给来宾系统,而虚拟块设备通常会报告 0,无论底层介质是什么。该标志只能作为提示,测量结果才是依据。
df -h 也可以解决容量的争议。标称 8 TB 的方案会显示约 7.3 TiB,因为供应商按 1000 的幂计算,而 df 按 1024 的幂计算。再扣除文件系统开销和 ext4 为 root 保留的块数后,实际用于计算价格的容量还会更低。阅读账单使用的相同单位后,计算实际需要多少容量会更容易。
在信任存储方案前使用 fio 测量性能
安装 fio,然后针对已挂载存储上的文件运行一次随机读取测试和一次顺序写入测试。两项测试都会写入实际数据,因此应将测试文件指向有足够剩余空间的临时路径,并在测试后删除该文件。
sudo apt update && sudo apt install -y fio
fio --name=randread --filename=/mnt/store/fio.test --size=1G --bs=4k \
--rw=randread --ioengine=libaio --direct=1 --iodepth=32 \
--runtime=60 --time_based --group_reporting
fio --name=seqwrite --filename=/mnt/store/fio.test --size=4G --bs=1M \
--rw=write --ioengine=libaio --direct=1 --iodepth=8 --group_reporting
rm -f /mnt/store/fio.test从随机读取测试结果中读取 IOPS= 字段,从顺序写入测试结果中读取 bw= 字段。如果某个容量方案的随机 IOPS 只有几百、顺序吞吐量只有几百 MB/s,那么它的表现就像其标称的机械硬盘。如果存储空间通过网络文件系统而非块设备提供,请使用 --ioengine=psync,因为 libaio 用于本地块设备,否则测试会失败或回退。
哪些因素会影响每 TB 的实际欧元成本
除法只是起点。还有 5 个因素会改变实际总价,而且付款前都可以核实。
- VAT。德国和欧盟的主机服务商通常会向企业客户显示未含税价格。截至 2026 年 9 月,德国标准税率为 19 percent,因此无法抵扣 VAT 的买家实际支付的金额会明显高于页面显示的价格。
- 设置费。一些容量套餐会收取设置费,较大的套餐通常更常见。应将这笔费用分摊到你预计会持续使用的实际期限内。
- 最短期限和通知期。按年承诺可以降低月均价格,同时也会固定你的退出时间。
- 流量。容量套餐通常包含一定的流量额度,超出后会限速或计费。你恢复全部数据的那一天,就会知道服务商采用哪种方式。
- 与存储空间重复计算的额外服务。如果你已经在不同位置保存了 两个相互独立的 restic 仓库,那么为备份目标创建服务商快照的额外价值就很小。
将所有费用计入 24 个月的总价,除以 24,再除以 df -h 报告的 TB 数。这就是你可以在预算会议上说明依据的数字。VPS 的一般成本使用相同的方法,而比较存储型 VPS、块存储和对象存储的低价 TB则将这种方法应用于另外两种购买相同字节容量的方式。
实践中“欧盟数据中心”的含义
这表示存储您数据的机器位于某个明确的欧盟国家的一栋建筑内。除此之外没有其他含义。这是关于建筑位置的事实,因此应直接询问:位于哪个国家,以及由哪家公司运营该设施。不愿说明国家的提供商,并没有真正向您提供数据驻留服务。
一旦数据属于您的客户,这种安排在法律上就有明确的称谓。您是控制者。您的主机服务商是处理者。GDPR(通用数据保护条例)第28条要求双方签订书面合同。德国合同将该文件称为 Auftragsverarbeitungsvertrag,简称 AVV;英语合同称其为 DPA(数据处理协议)。该文件必须说明处理事项和期限、数据类别、安全措施、委托次处理者的规则,以及合同结束后如何处理数据。
买方通常会忽略已记录的位置。定价页面上的位置声明可能在不通知您的情况下发生变化。将同一声明写入 AVV 或其附件后,它就成为合同条款,也会用于填写您自己的第30条处理活动记录中的传输列。请在签署前索要该附件,不要等审计员要求时才索要。
次处理者是第二个缺口。主机服务商很少拥有所有层级。建筑可能属于托管运营商,远程运维人员可能是承包商,支持团队可能位于另一个国家,监控或工单工具也可能是其他地方提供的托管服务。如果这些主体能够访问个人数据,就属于次处理者。请索要当前名单,以及名单变更前的通知期限。
来自欧洲经济区(EEA)以外的访问是第三个问题。存储在 Frankfurt 的数据仍可能被从其他地区登录的工程师读取;根据 GDPR 第V章,这种访问属于传输。数据传输依据充分性决定或标准合同条款(SCC)进行。欧盟-美国数据隐私框架于 2023年7月通过,为经过认证的美国组织提供充分性依据。该框架自通过以来一直面临法律挑战,因此依赖该框架的合同应设置复核日期,而不应默认其长期有效。这些内容都不是法律建议,而是您自己的法律顾问首先会向您提出的问题清单。
客户端加密会改变提供商能够读取的内容,但不会终止双方的关系。restic 和 Borg 会在任何数据离开您的机器前完成加密,因此主机存储的是密文,也不持有密钥。主机仍会处理您的账户信息、网络地址、备份大小和备份运行时间,并且仍负责数据是否始终可用。请保留 AVV。
“欧盟公司”和“欧盟数据中心”不是同一项声明
这是两个相互独立的事实,但定价页面经常将它们混在同一个徽章中。注册于柏林的公司可以在欧盟以外的设施租用容量。总部位于美国的公司可以在法兰克福运营数据中心,并雇用当地员工、使用当地供应商。这两句话可以同时成立,且其中任何一句都不能推出另一句。
两者的重要性不同。磁盘所在的位置决定哪些国家或地区的法规适用于这台机器,也决定网络延迟。公司的注册地和所有权结构决定哪个法律体系可以强制该公司配合,包括通过位于其他国家的母公司施加这种强制。请分别提出这两个问题,并要求对方以书面形式回答。这个区分同样适用于:加拿大 VPS 的数据驻留,其核心正是硬件所在位置与实际控制方之间的区别。
发送客户备份前需要询问的问题
- 静态数据存储在哪个国家和城市?这是否写入合同,还是只公布在网站上?
- 签署 AVV 的法律实体是哪一家?该实体注册在哪里?
- 当前有哪些子处理者?子处理者名单变更前,我会提前多久收到通知?
- EEA 以外的员工能否访问系统以提供支持?访问受哪些控制措施约束?是否会记录访问?
- 您自己的备份以及我的卷的副本会存放在哪里?将副本放在其他区域会改变数据所在位置。
- 我取消服务或付款失败后,磁盘会如何处理?请说明删除流程,以及执行删除前会提前多久通知我。
选择存储型 VPS 时的完整检查清单涵盖了这次沟通中技术方面的内容。以上六个问题涵盖的是律师之后会询问的部分。
冷数据:HDD 容量擅长处理什么
备份归档是机械硬盘容量盘的理想负载。数据通常只写入一次,很少读取;发生恢复时,也会进行长距离顺序读取。将 VPS 用作异地备份目标 是购买 TB 级容量的常见原因,自托管照片库及其恢复操作 也属于同类负载。
restic 和 Borg 都会将文件拆分为内容定义分块,再将这些分块打包成较大的文件。备份运行会读取源数据并追加新的 pack 文件,这一过程主要是顺序操作,很适合磁盘。介质性能会在维护操作中体现出来。restic forget --prune 会重写 pack 文件,以删除未引用的 blob;restic check --read-data-subset 会重新读取 pack 文件进行验证。Borg 的 prune 后接 compact 也执行相同的工作。这些操作受延迟限制,而不是受吞吐量限制。因此,对 NVMe 执行只需几分钟的维护任务,在存储相同数据的 HDD 后端上可能需要数小时。
restic -r sftp:user@storage.example.net:/srv/restic init
restic -r sftp:user@storage.example.net:/srv/restic backup /srv/data
restic -r sftp:user@storage.example.net:/srv/restic check --read-data-subset=5%
restic -r sftp:user@storage.example.net:/srv/restic forget \
--keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune有两个设置可以节省数小时。将 prune 安排为每周或每月运行,而不是每次备份后运行,因为每次 prune 都会重写 pack 文件,而下一次 prune 可能再次重写这些文件。将 restic 的缓存保留在本地高速存储上;在 ~/.cache/restic 下,这是默认行为。不要将 RESTIC_CACHE_DIR 指向远程挂载点。将缓存放在链路的慢速一侧,会抵消缓存存在的全部意义,导致每次运行都必须再次通过网络读取索引。
Borg 的工作方式相同,只是使用的命令不同:
borg init --encryption=repokey-blake2 ssh://user@storage.example.net/./repo
borg create --stats --compression zstd,3 \
'ssh://user@storage.example.net/./repo::{hostname}-{now}' /srv/data
borg prune --keep-daily=7 --keep-weekly=4 ssh://user@storage.example.net/./repo
borg compact ssh://user@storage.example.net/./repo数据库的负载正好相反。它会执行大量小型随机读取,并在提交时调用 fsync。在机械硬盘上,每个 fsync 都要等待物理寻道,因此提交延迟会从微秒级上升到毫秒级;原本在 NVMe 上运行良好的负载会形成队列。数据库仍然可以工作,但速度会慢到让用户以为应用程序卡住了。将在线数据库保留在 NVMe 上,并将其转储文件和旧备份放入容量存储规划中。
网络路径与存储介质同样重要。容量存储通常通过 SSH、SFTP、NFS、SMB 或 WebDAV 提供空间,因此每次操作除了磁盘耗时,还要增加服务器与存储设备之间的往返延迟。规划架构前先进行测量:
mtr -rwc 20 storage.example.net同一国家内两台机器之间相差几毫秒,对备份来说通常没有问题。跨越海洋的往返延迟,会使针对数千个小对象的维护操作变成隔夜任务。这也是将存储放在使用这些服务器的同一区域的实际原因之一,此外还要考虑数据驻留要求。
故障模式与将看到的确切字符串
仓库已锁定。 restic 会停止,并显示 repository is already locked exclusively by PID,后面跟着持有锁的进程和主机。上一次运行可能被强制终止,或者 prune 仍在运行。确认没有相关进程运行后,使用 restic unlock 清除锁。Borg 会显示 Failed to create/acquire the lock,其中包含仓库路径和 (timeout);完成相同检查后,使用 borg break-lock 清除该锁。
No space left on device,但 df -h 显示仍有可用空间。 文件系统耗尽的是 inode,而不是字节空间。df -i 会显示 IUse% 为 100。ext4 会在创建文件系统时固定 inode 数量,因此修复方法是重新格式化,并使用更小的每 inode 字节数比例(mkfs.ext4 -i 16384),或者迁移到 XFS;XFS 会在使用过程中动态分配 inode。包含大量小文件的仓库,通常会在磁盘空间用尽之前很久就达到此限制。
备份速度逐月变慢。 检查 prune 是否曾经运行。未执行 prune 的仓库会保留所有未引用的 blob,因此每次检查读取的数据都比上次更多,流量配额也会更快耗尽。然后检查是否存在限速:传输开始时速度很快,随后稳定在固定速率,说明这是流量策略,而不是磁盘问题。
从未测过耗时的恢复操作。 使用 restic restore latest --target /tmp/restore-test --include /etc 有意执行一次恢复,并测量耗时。然后将仓库大小除以使用 fio 测得的顺序读写速率,以得到完整恢复所需时间的可靠数量级。如果结果是数天,现在就决定是否可以接受,因为在故障处理中途才发现这一点并不合适。
FAQ
EU 存储 VPS 每 TB 每月应花费多少?
不要直接查现成数据,因为公开价格变化很快。计算月租,再加上按预计使用期限分摊的设置费;如果无法抵扣 VAT,还要加上 VAT。然后除以 df -h 实际报告的 TB 数量。基于机械硬盘的容量型方案通常是每 TB 每月几欧元,基于闪存的方案通常高一个数量级。如果容量型方案的价格与闪存方案相当,它要么并非机械硬盘,要么缺乏竞争力。
EU 数据中心是否足以满足 GDPR 合规要求?
不够。建筑物所在位置只是其中一个因素。您还需要与数据持有实体签署 Article 28 要求的书面处理协议;协议中应明确列出数据处理地点,而不能只在网页上说明;还需要当前的子处理者列表,并明确说明 EEA 以外的支持人员是否可以访问这些系统。位于 Frankfurt、但由 EEA 以外人员管理的机器仍涉及 Chapter V 下的数据传输,因此需要单独的合法依据,例如标准合同条款。
客户端加密后,是否可以不签署处理协议?
不可以,但它会改变数据泄露可能暴露的内容。restic 和 Borg 在您的机器上加密数据,因此提供商只存储密文,不持有密钥。提供商仍会处理您的账户数据和网络地址,仍能看到每次备份的大小和时间,还负责服务可用性。应保留该协议,并将加密视为限制损失的控制措施,而不是合同的替代方案。
可以在基于 HDD 的存储 VPS 上运行数据库吗?
可以,但在负载下可能无法满足预期。数据库使用 fsync 提交事务;在机械硬盘上,每次提交都要等待物理寻道,因此提交延迟以毫秒计,而不是以微秒计。随机读取较小数据行的查询也会受到同样影响。应将在线数据库放在 NVMe 上,并使用容量型方案存储数据库转储和较旧的备份。