我有一些數據,我想保存在Amazon S3。其中一些數據被加密,一些被壓縮。我應該擔心一點翻轉?我知道可以添加的MD5哈希頭。這(根據我的經驗)將防止交易中最不可靠的部分翻轉(網絡通信),但是我仍然想知道是否需要防止磁盤上的翻轉?我應該關注Amazon S3上的位翻轉嗎?
回答
我幾乎可以肯定的答案是「否」,但如果你想成爲額外的偏執狂,你可以預先計算上傳之前的MD5哈希值,比較,爲MD5哈希你下載計算MD5時上傳後得到的,然後下載數據的散列並將其與您存儲的散列進行比較。
我不確定你擔心什麼風險。在某些時候,你必須將風險推遲給其他人。 「損壞的數據」是否屬於亞馬遜的服務水平協議?據推測他們知道什麼文件散列是假設是,如果他們給你的數據散列不匹配,那麼這顯然是他們的問題。
我想還有其他的方法太:
- Store中有FEC這樣的數據,你可以檢測和糾正的N比特錯誤取決於您的選擇N.的
- 商店不止一次您的數據更在亞馬遜S3中,也許在美國和歐洲的數據中心(我認爲新加坡也有一個新的即將上線的網站),具有類RAID冗餘功能,以便在某些數據源消失或損壞時恢復數據。
這實際上取決於您存儲的數據對您有多寶貴,以及您願意接受多少風險。
我從兩個角度看你的問題,一個理論和實踐。
從理論的角度來看,是的,你應該關注的 - 而不僅是位翻轉,但對其他一些可能出現的問題。在客戶協議中特別section 11.5說,亞馬遜
作出任何陳述或保證任何形式明示,暗示,法定或其他方式對於服務產品。 (..omiss ..)我們和我們的許可人不保證服務提供的功能如下所述,不會中斷或沒有錯誤,或不含有害組件,或者您存儲在服務提供中的數據將是安全的不會有其他損失或損壞。現在
,在實踐中,我不關心。如果您的數據丟失,您會在博客上發佈有關它的信息(雖然它們可能不會面臨任何法律行爲),但他們的業務將會大打折扣。
另一方面,這取決於您的數據有多重要。假設您正在自己的數據中心中滾動自己的東西。您如何計劃在那裏進行災難恢復?如果你說:我只是保持兩個副本在兩個不同的機架,只需使用與亞馬遜相同的技術,也許保持在兩個不同的數據中心的兩個副本(因爲你寫的,你不感興趣的如何防止位翻轉,我只提供在這裏一個簡單的例子)
有閱讀你的問題有兩種方式:「難道亞馬遜S3完美」
- 「我如何處理Amazon S3不完美的情況?」
答案(1)幾乎可以肯定是 「不」。他們可能有很多保護措施要結束,但仍然有失敗的可能性。
離開(2)。事實是設備出現故障,有時以明顯的方式和其他方式出現,但出現錯誤的答案。爲了解決這個問題,許多數據庫使用每頁CRC來確保從磁盤讀取的頁面與寫入的頁面相同。這種方法也是現代文件系統(例如ZFS,它可以編寫一個頁面的多個副本,每一個CRC處理RAID控制器故障使用我通過閱讀的第二個副本看到ZFS從一個磁盤糾正單比特錯誤;磁盤是不完美的。)
一般來說,你應該有一個檢查,以驗證您的系統運行的是你的期望。使用散列函數是一種好方法。當您檢測到故障時採取什麼方法取決於您的要求。存儲多個副本可能是最好的方法(當然也是最簡單的方法),因爲使用FEC可以避免站點故障,連接故障甚至廠商故障(通過選擇第二個供應商),而不僅僅是數據本身的冗餘。
可能不是:亞馬遜正在使用校驗和來防止位翻轉,定期檢查靜止的數據,確保沒有發生位翻轉。因此,除非在完整性檢查循環的時間間隔內對所有數據實例有損壞,否則應該沒問題。
在內部,S3在整個系統中使用MD5校驗和來檢測/防止位翻轉。將對象放入S3中時,我們計算MD5並存儲該值。當您獲取對象時,我們會重新計算MD5,並將其返回。如果我們存儲的MD5與我們計算的值不匹配,那麼我們將返回一個GET請求的錯誤。然後您可以重試請求。
我們也不斷地通過靜止的所有數據,重新計算校驗和驗證他們不要當我們最初存儲的對象,我們節省了MD5循環。這使我們能夠檢測和修復靜止數據中發生的位翻轉。當我們在休息時發現數據翻轉時,我們使用我們爲每個對象存儲的冗餘數據來修復它。
您還可以通過當你把對象(如果我們收到的數據不匹配校驗,我們將誤差)提供的MD5校驗和驗證MD5時保護自己免受bitflips傳輸和S3期間獲取對象。
來源: https://forums.aws.amazon.com/thread.jspa?threadID=38587
- 1. 我應該如何處理Amazon S3上的error.html?
- 2. 我應該在我的iOS應用程序中加密Amazon S3密鑰嗎?
- 3. 我應該多關注NullPointerException嗎?
- 4. 關於Amazon S3
- 5. 我應該關注木偶控制器的關閉嗎?
- 6. 我應該關閉cURL嗎?
- 7. 我應該使用Amazon S3還是SimpleDB存儲小文檔?
- 8. Amazon Athena - S3位置錯誤
- 9. 我應該在EBS或S3上保留圖像嗎?
- 10. 我應該關注從VS Pro遷移到VSTS的「陷阱」嗎?
- 11. 我應該關注受感染的zip文件嗎?
- 12. 我們應該關注JSF託管bean的線程安全嗎?
- 13. 我可以將文件從Web上找到Amazon S3嗎?
- 14. 我可以通過ajax將jquery文件上傳到amazon s3嗎?
- 15. JSON中的Amazon S3響應?
- 16. 我應該關注我的React Redux應用中的狀態變化率嗎?
- 17. ASP.NET MVC jQuery:我們應該關注View上的很多jQuery/javascript嗎?
- 18. 我應該繼續註冊失敗嗎?
- 19. 我應該關注這個compareTo/equals/hashCode實現嗎?
- 20. 我應該主辦AWS S3
- 21. 我可以在Amazon S3上運行網站嗎?說,通過使用Amazon S3 PHP SDK?
- 22. 我應該關注哪個AI分支?
- 23. 進度條復位翻轉該設備
- 24. 純Javascript應用+ Amazon S3?
- 25. Amazon S3的數據位置Athena
- 26. 從Android上傳到Amazon S3
- 27. Amazon S3 Bucket失敗上傳
- 28. 上傳流到Amazon S3
- 29. 在Amazon S3上使用TfileUnarchive
- 30. Amazon S3存儲桶上傳
你平時不用擔心位翻轉在磁盤上? – 2009-11-30 02:27:42
如果您使用本地磁盤,您將如何解決此問題? – Dave 2009-12-03 15:53:18
我通常做的擔心位翻轉 - 不採取行動來糾正他們的觀點,但是從我如何對待我的最重要的索引數據的角度。我的經驗表明,大多數誰試圖阻止他們的數據位翻轉的鄉親有一樣多的成功,那些誰試圖推動繩:P 這樣說,如果我有幾百萬的小片數據的一個指標的數據中,我將通過索引來加倍努力。 (想想NTFS上的MFT,有兩個副本)。我可能不會壓縮,或沒有某種檢測/糾正設施 – stuck 2009-12-03 17:04:03