原文: http://www.taodudu.cc/news/show-4208262.html?action=onClick
https://my.oschina.net/u/2306127/blog/2865263
------------------------------------------
我這用的 Ubuntu 18.04 系統(已經內置支持 ZFS 和 Gluster 文件系統了),原來磁盤存儲使用的 Ext4 格式和 LVM,現在需要遷移到 ZFS/Gluster 支持的分佈式軟件定義存儲(SDS)和容器存儲體系(CSI),以充分利用分佈式架構的存儲虛擬化、多機容錯、水平擴容、網絡訪問的集羣環境下應用的需要。
方案:
- 集羣節點既能提供存儲服務,也能執行高通量、非密集型計算任務。
- 集羣存儲主機至少有兩個節點。
- 每節點四核 CPU,16G 內存,512G 高速 SSD。
- 每節點 PCIE 至少雙槽,一塊雙口萬兆網卡,一塊 SATA 擴展卡或 SAS 陣列卡。
- 每節點至少 4 塊磁盤(達到 400MB/s 以上,磁盤越多越快;8 塊盤可達到 800MB/s 左右)。
- 節點的磁盤使用 ZFS 條帶卷以獲得最大磁盤 IO 速度,將 SSD 設爲緩存和 log 卷執行加速。
- 多個節點存儲通過 Gluster 做網絡鏡像存儲,可以靈活地按照鏡像(可靠性高)或者條帶(容量大、性能高)來組織存儲方案。節點越多,可靠性、性能越好。
步驟:
中間需要有多個步驟,記錄如下:
- 先把新的存儲系統準備好。
- 安裝 ZFS,sudo apt install zfsutils-linux 。
- 安裝 Gluster,sudo apt install glusterfs-server 。
- 在所有節點上,創建 ZFS 存儲池和文件系統。
- 在所有節點上,互相添加爲 gluster peer。
- 在任一節點上,創建 gluster volume 存儲卷,可選鏡像或條帶模式。
- 在需要訪問的工作節點掛載 gluster 存儲卷,映射爲本地卷,然後就可以直接訪問了。
- 在 Kubernetes 上,每一個 Node 都需要能訪問網絡存儲卷,或者掛載爲本地卷、通過 hostpah 來使用。
- 把 Ext4 和原來磁盤陣列的數據複製到新的存儲系統。
- 確認數據已經全部複製。
- 把原來的存儲系統重新格式化爲 ZFS/Gluster。
- 再次確認數據已經全部複製。
- 把原始數據複製回原來的存儲系統。
- 建立軟連接,連接到原來的捲到新的存儲系統主目錄。
- ln -s 新的目錄 原來目錄的鏈接名
- 如:ln -s /zpool/data/home/supermap/data
- 恢復原來的服務。
- ln -s 新的目錄 原來目錄的鏈接名
注意:
- ⚠️不要出錯,否則把原始數據搞丟了,就麻煩大了。
- 建議使用萬兆(10Gbps)網絡(存儲節點使用萬兆網卡,全萬兆交換機連接)。
- 網絡存儲傳輸帶寬,理論上:
- 百兆連接 9MB/s。
- 千兆連接 90MB/s。
- 萬兆連接 900MB/s。
- 雙萬兆連接 1600MB/s 以上。
- 推薦:雙萬兆端口網卡,雙路互備、鏈路聚合。
- 網絡存儲傳輸帶寬,理論上:
- 需要至少雙倍於現有數據的存儲空間。
- 新的分佈式存儲啓用鏡像和副本,需要 “數據容量 X 副本數量” 的物理磁盤容量。