Linux
將 300GB 數據從 Linux 伺服器遷移到 S3 儲存桶
我有一個 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
嗎?- 在傳輸過程中,伺服器性能會受到影響嗎?該伺服器有幾個網站正在執行,所以在數據傳輸期間我是否需要使網站離線,或者即使網站處於活動狀態,我也可以安全地執行傳輸?
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 或更多的大數據文件,所以我使用更大的塊和更小的隊列,但如果你的文件更小,請刪除最後三行。
兩位直接回答你的問題
- 一到四個小時
- 是的。使用“s3 同步”,這樣您就可以更輕鬆地重新啟動。如果您執行例如“s3://bucket-name/\opt\data &”(注意 &),我認為如果您的 ssh 會話中斷,它將繼續執行。
- 不知道 - MLu 說是的
- 正如我上面所說,我使用了 60 - 80 個執行緒,它使用了大約一個完整的 Xeon 核心。如果您使用更少的執行緒,它將使用更少的資源。總而言之,它不是非常耗費資源。在排隊文件的前幾分鐘非常密集,然後在排隊更多文件時偶爾會出現 CPU 峰值