Linux

將 300GB 數據從 Linux 伺服器遷移到 S3 儲存桶

  • September 9, 2019

我有一個 linux 專用伺服器,它有 300GB 的上傳文件,我需要將這些文件傳輸到 AWS Storage S3,因為我現在將上傳內容更改為保存在 S3 儲存桶而不是本地磁碟中。我讀到我可以使用 aws cli 命令將目錄複製到 S3 儲存桶進行傳輸。我的問題是:

  1. 當我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 儲存的人那裡得到一個粗略的估計。

  1. 當我使用 aws clicp命令時,它會顯示那段時間內的進度嗎?如果我在命令仍在執行時與 SSH 斷開連接會發生什麼?
  2. cp使用命令執行 aws cli 命令對我來說更安全screen嗎?
  3. 在傳輸過程中,伺服器性能會受到影響嗎?該伺服器有幾個網站正在執行,所以在數據傳輸期間我是否需要使網站離線,或者即使網站處於活動狀態,我也可以安全地執行傳輸?

MLu 的回答很好,這是加法而不是代替他的答案。

就像 MLu 說的,300GB 並不多,也不會花很長時間。我已經將 1TB 從紐西蘭復製到悉尼 S3 的連接,延遲為 35ms,可用頻寬約為 350Mbps,從記憶體中花費了大約 4-6。您可能擁有更多的頻寬和更少的延遲。使用大約 80 個執行緒,它從記憶體中使用了大約 100% 的至強核心,所以不多。

您可能會考慮使用s3 sync命令,就好像您需要停止它一樣,您可以更輕鬆地重新啟動它,而不是重新啟動副本。

在繁忙的生產伺服器上,我會像這樣調整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

這從預設的 10 個並發請求、1000 個隊列大小減少了 CPU/頻寬,並施加了 50MB/秒的頻寬限制 (400Mbps)。隨心所欲地調整那些 - 10 個執行緒可能就可以了。我傾向於上傳 1GB 或更多的大數據文件,所以我使用更大的塊和更小的隊列,但如果你的文件更小,請刪除最後三行。

兩位直接回答你的問題

  1. 一到四個小時
  2. 是的。使用“s3 同步”,這樣您就可以更輕鬆地重新啟動。如果您執行例如“s3://bucket-name/\opt\data &”(注意 &),我認為如果您的 ssh 會話中斷,它將繼續執行。
  3. 不知道 - MLu 說是的
  4. 正如我上面所說,我使用了 60 - 80 個執行緒,它使用了大約一個完整的 Xeon 核心。如果您使用更少的執行緒,它將使用更少的資源。總而言之,它不是非常耗費資源。在排隊文件的前幾分鐘非常密集,然後在排隊更多文件時偶爾會出現 CPU 峰值

引用自:https://serverfault.com/questions/982476