簡體   English   中英

如何備份aws ec2實例/臨時存儲?

[英]How do I take a backup of aws ec2 instance/ephemeral storage?

我的數據庫保存在/ mnt,使用ec2實例附帶的臨時存儲。 要使用ec2 api工具進行備份,我們需要一個卷標識,但在aws控制台中,我只能找到8gb根存儲的卷標識。

如果想要臨時存儲的備份,我該怎么辦? 有備份實例存儲的替代方法嗎?

首先,除非您確切知道自己在做什么並且准備好始終進行時間點備份等,否則您永遠不應該在亞馬遜EC2中 存儲任何具有持久價值的東西 ,但是您的問題似乎表明您可能是誤解了短暫存儲的概念, Amazon EC2實例存儲Amazon EBS之間的差異以及對數據安全和備份要求的重大影響:

短暫存儲將在停止/啟動周期中丟失並且通常會消失 ,因此您絕對不希望在那里放置任何持久值,即只將臨時數據放在那里,您可以承受丟失或輕松重建 ,如交換文件或嚴格在計算過程中使用的臨時數據。 當然,您可以在那里存儲大量索引,但必須准備好在存儲因任何原因被清除后重建這些索引(實例重新啟動,硬件故障,......)。

問題方案

這些解釋應闡明您無法使用僅適用於EBS卷(即EBS快照)的機制備份臨時存儲卷的原因。 因此,您可以通過您選擇的常規操作系統級備份工具備份前者, Duplicity是一個受歡迎的選擇,可選擇促進Amazon S3 ,例如我最簡單地使用備份軟件用於實時Linux服務器的回答。

臨時存儲或實例存儲,就像一個/ tmp文件夾,其內容在重新啟動后消失。 當然,短暫的驅動器內容不會在軟重啟時被破壞,但是它們應該被視為它們,因為您無法實際控制或預測實例何時決定死亡。

已經指出了這一點。

我想指出的是,如果您正確地創建和配置AMI,您仍然可以使用短暫存儲來大幅提高(讀取)吞吐量,只要您還將EBS驅動器保留在實際存儲中即可。

我目前使用的是帶有bcache的Linux(Ubuntu Tahr)實例。 這主要是因為bcache內核支持相對較新(IIRC,第一個bcache是​​3.10),你肯定想要盡可能最新的內核。 此外,Tahr是Ubuntu的下一個LTS版本,當我的項目接近發布時它是最終的;)

Bcache的默認配置允許您從短暫存儲的讀取速度中受益,同時為您提供EBS的持久性:它需要一個快速緩存設備(臨時SSD)並使用它來加速慢速設備(EBS),通過緩存設備寫入(即同時寫入短暫緩存和EBS)。

這意味着如果實例崩潰或以其他方式停止,您仍然可以直接安裝EBS卷而不使用緩存,並像訪問僅使用EBS卷一樣訪問所有數據。 您還可以重新配置現在已擦除的短暫設備,並將它們重新配置為EBS的緩存,以恢復享受非常快速的讀取和搜索。

我的特殊設置是兩個EBS設備,使用mdadm +兩個短暫的SSD設備以條紋模式進行突襲,也以相同的方式進行搜索。 然后我用bcache配置它們,使用短暫的數組作為緩存,將EBS數組作為“備份”設備。 EBS驅動器可以是任何大小,您可以隨時擴展它們(EC2有點棘手,因為您必須創建當前EBS卷的快照,然后根據該快照創建新的更大的 - 您無法調整大小現有的EBS卷)。

當然,您必須創建一個在啟動時在實例內運行的腳本,以配置臨時存儲並將其作為緩存設備附加到EBS支持的備份設備上。 我鼓勵閱讀,並嘗試使用mdadmbcache

為了記錄,使用Cassandra壓力工具進行測試,我獲得了更好的讀取性能,其中EBS卷使用臨時驅動器進行了bcached,而不是簡單地剝離短暫驅動器。 這是因為bcache中使用的算法非常聰明。

使用臨時驅動器作為緩存還可以減少網絡流量並且具有成本效益,因為它可以減少EBS上的I / O,從而減少每月帳單。

另請注意bcache提供的不同類型的緩存:

  1. 回寫:使用SSD作為讀/寫設備,只有在需要從緩存中逐出頁面時才寫入備份設備。 這對於EC2短暫設置沒有用,因為它會使您的備份設備在崩潰或停止時無用。
  2. 直寫:所有寫入都同時進行緩存和備份。 這可確保備份設備始終與高速緩存設備保持同步,並且始終可以在沒有高速緩存設備的情況下使用它。 對EC2有用。
  3. 寫入:所有寫入都直接進入備份設備,並且在將來某個時間發生對該數據的讀取請求之前,不會寫入高速緩存設備。 只有讀取緩存在緩存設備上。 這與直寫一樣安全,如果您知道在不久的將來不可能讀取您的寫入,則非常有用。 這避免了填充不經常被請求的數據高速緩存設備,從而有對請求哪些數據更多的空間。 一些示例可以是文件上載服務器,您可以編寫大量日志記錄數據的系統等。如果您知道整個數據集明顯大於短暫存儲大小,那么這很可能是最有效的大量用例中的選項。

如果能夠配置軟件RAID鏡像,則可以將EBS支持的磁盤連接到實例,配置鏡像,然后等待復制完成。 我已經成功地使用這種方法在我創建實例后將“短暫”數據移動到EBS中(我不想關閉並重新啟動)。

獲得EBS數據后,使用EBS圖像進行備份。

當您在不同的相同實例上運行多個數據副本時,此方法特別有效,但您只需將其中一個持久保存到EBS(在我的情況下,使用Couchbase服務器,CB數據在短暫的驅動器上,但我有一個鏡像到EBS的實例,以便我的集群上的所有數據最終都在EBS中。

任何文件級備份解決方案(不基於EBS快照)都可以備份臨時存儲。 也就是說,您應該考慮何時使用臨時存儲,並且有充分的理由將其用於持久數據。 對於某些應用程序,如Cassandra,這是推薦的配置。 在這種情況下,您的備份解決方案主要將數據從臨時存儲轉儲到將要快照或直接轉發到S3的EBS卷。 在某些情況下,您可以定義復制並確保臨時設備中的所有數據也復制到EBS卷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM