我有一个 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
吗?在传输过程中,服务器性能会受到影响吗?该服务器有几个网站正在运行,所以在数据传输期间我是否需要使网站脱机,或者即使网站处于活动状态,我也可以安全地运行传输?
300GB 不算多。SSD 磁盘的读取速度可以达到 100MB/s,如果您在 1Gbps 网络上,也可以达到大约 100MB/s。所以你的 300GB 应该需要大约一个小时才能上传。
是的,它会显示一个进度,是的,运行它,
screen
是的,它会加载服务器。另一方面,它只有一个小时。希望有帮助:)
MLu 的回答很好,这是加法而不是代替他的答案。
就像 MLu 说的,300GB 并不多,也不会花很长时间。我已经将 1TB 从新西兰复制到悉尼 S3 的连接,延迟为 35ms,可用带宽约为 350Mbps,从内存中花费了大约 4-6。您可能拥有更多的带宽和更少的延迟。使用大约 80 个线程,它从内存中使用了大约 100% 的至强内核,所以不多。
您可能会考虑使用s3 sync命令,就好像您需要停止它一样,您可以更轻松地重新启动它,而不是重新启动副本。
在繁忙的生产服务器上,我会像这样调整s3 配置文件。它将以速度为代价降低带宽和 CPU 使用率。这进入 ~.aws\configure 或 c:\users\username.aws\config 。如果您使用 CLI 配置文件,则会进入该配置文件,而不是默认设置。
配置几个较大的文件
配置许多小文件
这从默认的 10 个并发请求、1000 个队列大小减少了 CPU/带宽,并施加了 50MB/秒的带宽限制 (400Mbps)。随心所欲地调整那些 - 10 个线程可能就可以了。我倾向于上传 1GB 或更多的大数据文件,所以我使用更大的块和更小的队列,但如果你的文件更小,请删除最后三行。
两位直接回答你的问题
一到四个小时
是的。使用“s3 同步”,这样您就可以更轻松地重新启动。如果您运行例如“s3://bucket-name/\opt\data &”(注意 &),我认为如果您的 ssh 会话中断,它将继续运行。
不知道 - MLu 说是的
正如我上面所说,我使用了 60 - 80 个线程,它使用了大约一个完整的 Xeon 内核。如果您使用更少的线程,它将使用更少的资源。总而言之,它不是非常耗费资源。在排队文件的前几分钟非常密集,然后在排队更多文件时偶尔会出现 CPU 峰值