雲存儲工程師的技能樹是怎樣的?

目前入職一家雲計算公司,被分配到了負責存儲的小組,之前沒有從事過存儲方面的工作,請問這個職位的技能樹是怎樣的?謝謝


雲存儲知識可以簡單歸納為存儲基礎相關知識和分散式技術原理,這裡主要談談分散式文件存儲系統,資料庫存儲雖然也算存儲系統,但水太深學識太淺,不敢妄自涉及。技能樹畫不出,直接上技能列表==

存儲相關的基本概念、知識,包括但不限於以下幾點:

1. 塊設備:block、chunk、partition等概念,操作系統如何管理塊設備、如何與物理世界的實體對應起來,比如硬碟、U盤等。

2. 文件系統:文件系統如何組織保存文件,inode、superblock、posix介面、Sparse文件等知識,一些常見的文件系統,比如Ext4、XFS、Btrfs等。注意文件系統存儲和塊存儲的區別。

3.傳統企業級存儲,RAID技術、NAS、NFS、CIFS等。

4.Linux設備、文件相關操作,比如mount、lsblk、lsof、lspci、fdisk等。

5. IO性能測試,IO性能的常用指標,比如IOPS、IO延遲等,使用fio進行性能測試。

6. 校驗、糾刪碼。

7. Cache、Buffer。

8. iSCSI、FC、SRP、SATA。

分散式:

1. 分塊思想。分散式的基本思想就是分而治之,幾乎所有的分散式存儲系統都會對一個文件切成一個一個的塊(block)。

2. 數據分布演算法。分散式存儲系統需要把所有分割的塊對象存儲到不同的機器中,這些塊應該如何分布使得既能保證數據均勻,又能使節點增加或者減少時盡量減少數據遷移,即數據分布演算法,比如crush演算法、一致性hash演算法等。以前遇到一個面試題大概意思是說有N個文件需要保存到M台機器中,存儲策略是什麼?最簡單的演算法就是對文件求hash取模,這樣既能保證數據均衡分布,又能高效索引(再去求hash取模就找到了文件存儲位置),萬一我增加個存儲節點該怎麼辦呢?

3. 冗餘副本。一個文件被分割成了若干塊後被分布在不同的機器上,萬一網路故障或者某台機器掛了,文件就訪問不了了,為了保證可用性和可靠性,通常都是通過冗餘副本來實現,即一個塊會複製成多個相同的塊副本(通常3副本),並分布在不同的機器上,這樣即使某個塊所在的機器訪問不了了,也能通過其它塊讀取。這些副本同樣需要考慮如何分布的問題,盡量不要在同一個故障域中。

4. 糾刪碼。採用以上副本的方式保護數據,缺點是需要佔用多倍的存儲空間來提供冗餘,成本太高,你也可以考慮使用糾刪碼的數據保護方法,能夠使用較少的冗餘存儲空間提供一樣的可靠性等級,當然讀寫性能要下降些,典型時間換空間的例子。

5. 數據同步和一致性。每個塊都被分割成了多個副本,這些副本如何保證一致性,讀寫效率和一致性之間如何權衡,了解CAP理論和NWR策略,各種一致性模型,比如最終一致性、強一致性等。

6.數據索引。一個文件被分割成塊並分布在不同的機器,如何重新找到這些塊組裝成原來的文件。你可以用一個專門的服務來維護和存儲文件和塊之間的映射關係(HDFS namenode),也可以通過計算的方法找到這些映射關係(Ceph crushmap)。

7.其它。比如網路通信、RPC、序列化等。

8.塊存儲、文件系統存儲、對象存儲區別,參考openstack 中的swift是對象存儲? - int32bit 的回答。一些主流的分散式存儲系統:

    1. 塊存儲:Ceph RBD、EBS、Openstack Cinder等。
    2. 分散式文件系統存儲:HDFS、CephFS、GFS、Alluxio(內存分散式系統)等。
    3. 對象存儲:Openstack Swift、Ceph RGW、S3、百度雲等。

以上是雲存儲相關的基本原理,掌握以上知識就能夠對雲存儲有個大致的感性認識了。不過要想更深入地理解分散式存儲,必然離不開親自動手,建議手動部署分散式存儲系統並使用之,實踐出真知,閱讀開源分散式存儲系統源碼,跟蹤IO路徑等。


基礎的就是 cpp,tcpip,rpc,linux,s3基本概念,disk基本概念,CAP原理及延展,RS演算法基本概念,伺服器負載控制,伺服器的線上調試。


甩鍋,及甩不了鍋怎麼趕緊找下家。


有想要跳槽到新華三成都存儲部門的嗎,開發測試都歡迎。簡歷可發送至zuo.jing@h3c.com


如果是分散式資料庫的話,了解下

  1. 目前的分散式系統的設計的一般方法。

  2. 目前流行的幾種分散式系統的架構,優缺點
  3. 動手用用目前流行的分散式存儲系統
  4. 研究下目前流行的分散式存儲系統的文檔,看的時候可以多思考(開源的有hbase,mongodb,阿里雲的TableStore)
  5. 使用過程中,可能會有些不爽的地方,動手去修改


推薦閱讀:

雲計算行業中的影響是否被過分誇大了?
浙江特色小鎮未來將會作為一種什麼樣的存在?
雲時代 U 盤會被淘汰嗎?
老機器編譯linux內核花了幾個小時,像編譯內核這樣的事情能用免費的雲計算來做嗎?
選用什麼雲伺服器做編程學習比較好?

TAG:雲計算 | 雲存儲 | 雲計算產品 |