![将 300GB 数据从 Linux 服务器迁移到 S3 存储桶](https://linux22.com/image/742401/%E5%B0%86%20300GB%20%E6%95%B0%E6%8D%AE%E4%BB%8E%20Linux%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%81%E7%A7%BB%E5%88%B0%20S3%20%E5%AD%98%E5%82%A8%E6%A1%B6.png)
我有一台 Linux 专用服务器,其中有 300GB 的上传文件,我需要将其传输到 AWS Storage S3,因为我现在要将上传文件保存在 S3 存储桶中,而不是本地磁盘中。我了解到我可以使用 aws cli 命令进行传输,将目录复制到 S3 存储桶。我的问题是:
- 当我
cp
从 aws cli 执行命令时,专用服务器大约需要多长时间才能将 300GB 的数据传输到 S3 存储桶?S3 和服务器都位于同一区域。
这些是我的服务器规格:
RAID Policy Raid 1
Operating System Cloud Linux
HDD Bay 1 480GB SSD
HDD Bay 2 480GB SSD
Network Bandwidth 10TB
CPU 6 Core E5-2620v2 - 2.00Ghz x2
RAM 64 GB
我完全理解有很多变量,但想从将数据从 Linux 服务器迁移到 S3 存储的人那里获得一个粗略的估计。
当我使用 aws cli
cp
命令时,它会显示当时的进度吗?如果命令仍在运行时我断开了 SSH 连接,会发生什么情况?cp
对于我来说,使用命令运行 aws cli 命令是否更安全screen
?在传输过程中,服务器性能会受到影响吗?此服务器上有几个网站正在运行,因此在数据传输期间我是否需要将网站离线,或者即使网站处于在线状态,我是否可以安全地运行传输?
答案1
MLu的回答很好,这是对他答案的补充而不是替代。
就像 MLu 所说的那样,300GB 并不多,而且不会花很长时间。我曾将 1TB 从新西兰复制到悉尼 S3,连接延迟为 35ms,可用带宽约为 350Mbps,从内存复制大约需要 4-6 分钟。您可能拥有更多带宽和更少延迟。它使用大约 80 个线程,从内存中占用了大约 100% 的 Xeon 核心,所以不会花太多时间。
您可能会考虑s3 同步命令,就好像您需要停止它一样,您可以更轻松地重新启动,而不是重新启动副本。
在繁忙的生产服务器上,我会调整s3 配置文件类似这样的内容。它将以牺牲速度为代价来减少带宽和 CPU 使用率。这将进入 ~.aws\configure 或 c:\users\username.aws\config 。如果您使用 CLI 配置文件,这将进入该配置文件,而不是默认配置文件。
配置一些较大的文件
[default]
region = us-west-2
output = json
s3 =
max_bandwidth = 50MB/s
max_concurrent_requests = 5
max_queue_size = 100
multipart_chunksize = 75MB
multipart_threshold = 200MB
针对许多小文件的配置
[default]
region = us-west-2
output = json
s3 =
max_bandwidth = 50MB/s
max_concurrent_requests = 5
max_queue_size = 1000
multipart_chunksize = 75MB
multipart_threshold = 100MB
这会将 CPU/带宽从默认的 10 个并发请求、1000 个队列大小降低,并施加 50MB/秒的带宽限制(400Mbps)。您可以随意调整这些设置 - 10 个线程可能就足够了。我倾向于上传 1GB 或更大的大型数据文件,因此我使用更大的块和更小的队列,但如果您的文件较小,请删除最后三行。
两个直接回答你的问题
一到四个小时
是的。使用“s3 sync”,这样您就可以更轻松地重新启动。如果您运行例如“s3://bucket-name/ \opt\data &”(注意 &),我认为即使您的 ssh 会话中断,它仍会继续运行。
不知道 - MLu 说是的
正如我上面所说,我使用了 60 - 80 个线程,它使用了大约一个完整的 Xeon 核心。如果你使用较少的线程,它将使用较少的资源。总的来说,它不是很耗费资源。在排队文件的前几分钟,它非常耗费资源,然后在排队更多文件时偶尔会出现 CPU 峰值
答案2
300GB 不算多。SSD 磁盘的读取速度约为 100MB/s,如果您使用的是 1Gbps 网络,则速度也约为 100MB/s。因此,您的 300GB 大约需要一个小时才能上传。
是的,它会显示进度,是的,它会运行screen
,是的,它会加载服务器。另一方面,它只持续一个小时。
希望有帮助:)