對于我的存儲環境,我總是努力維持至少6個月的增長空間。擁有一個合適的容量規劃制度,就能夠預測資本支出和運維支出,也使得數據中心的空間、電力以及供應鏈物流的規劃更為有效。你最不希望發生的事是凌晨接到電話,說生產負荷已經超出基礎架構的性能或容量的能力。這里有個例子,說明容量規劃做得多么糟糕。
我工作的公司使用NAS設備存儲用戶上載的文件,并供用戶瀏覽。NAS設備的容量對于工作負荷來說是合適的,而且也能夠將文件異步復制到位于幾千英里的輔助NAS設備上。系統能夠充裕地存儲及提供文件服務,異步復制的延遲也沒有超出RPO的要求,而且也能夠承受像磁盤損壞及系統重建這樣的事情。我們維持著6個月的增長空間,確保容量有充分的緩沖,以便能夠消化高流量的沖擊和計劃中的有機增長。
設備工作正常,就是太貴了。就是因為太貴,所以公司不愿意再買更多的設備了,而且公司了解到,通過創建自己的存儲引擎,可以設計一種更為經濟的方案。
新的存儲引擎是一項令人興奮的技術,能夠以一種非常經濟的方式建立可伸縮的應用存儲基礎架構。它運行在非常便宜的存儲設備上,是為存儲和提供文件服務的任務而特別設計的,效率很高。花了一年多的時間才完成,存儲引擎現在已經完成了編碼,并已經在若干綜合性的工作負荷下進行了測試。唯一要做的是確保在真實的應用負荷下能夠正常工作,并能夠在這種規模下正確地存儲和提供文件服務。在存儲引引擎最后的測試階段,我們決定以最安全的方式進行推進,即將文件同時存儲在新的存儲引擎和NAS設備上。一旦我們確信新的存儲引擎能夠正確地工作,并完全值得信任能夠處理進來的文件內容,將不再向AS設備寫入文件。
正好在這段時間,公司網站極為火爆,在所有方面都有爆炸性的增長。隨著越來越多的人使用我們的網站,向網站上載的文件數也急劇增多。對業務而言非常好,尤其因為我們正在測試的新存儲引擎存儲文件的成本比NAS方案要低得多。我們已經停止購買新的NAS設備,就指望著存儲引擎能夠盡快就位。然而不幸的是,一些錯誤延緩了對新存儲引擎信任的確認,而網站人氣的增加很快達到了剩余NAS設備的負荷及復制能力的極限。由于沒有將購買新的NAS設備納人流程,我們不得不重新平衡NAS設備的工作負荷,減少異步復制的頻率,以增加可用于存儲和提供文件服務的資源。而這樣一來,就在RPO上造成了缺口。我們的狀態很糟糕,一方面NAS設備已經超出了能夠充裕運行的范圍,另一方面仍然還有源源不斷的需求。我們已經停止購買新的NAS設備,指望著能夠完全切換到新的存儲引擎上,而存儲引擎卻無法就位。
然后,一個磁盤壞掉了。由于RAID的重建,導致了NAS設備的利用率突然升高,而存儲系統已經無法應付生產和復制的工作負荷。我們禁掉了向出現壞磁盤的設備的寫入,而讓其他系統承擔寫入負荷。即使這樣做了之后,網站建設數據讀取的性能仍然受到了影響。更為不幸的是,我們取消了異步復制的作業,這樣在第二地點就沒有完整的數據集可用了。所以,在受損磁盤的RAID組重建期間,不得不禁掉從中讀取數據的操作。幸好,RAID組重建成功,而且數據沒有損失。我們從中學到了非常有價值的教訓。總是要確保有足夠的空間以應對突然的爆炸性增長,以及軟件開發方面出現的延遲。假如我們將6個月的增長空間堅持維持到新存儲引擎完成生產測試階段,就能輕松應對這次事件。
本文地址:http://m.murenxiang.com.cn//article/3340.html