我這用的Ubuntu 18.04系統(已經內置支持ZFS和Gluster文件系統了),原來磁盤存儲使用的Ext4格式和LVM,如今須要遷移到ZFS/Gluster支持的分佈式軟件定義存儲(SDS)和容器存儲體系(CSI),以充分利用分佈式架構的存儲虛擬化、多機容錯、水平擴容、網絡訪問的集羣環境下應用的須要。linux
方案:
- 集羣節點既能提供存儲服務,也能執行高通量、非密集型計算任務。
- 集羣存儲主機至少有兩個節點。
- 每節點四核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
- 恢復原來的服務。
注意:
- ⚠️不要出錯,不然把原始數據搞丟了,就麻煩大了。
- 建議使用萬兆(10Gbps)網絡(存儲節點使用萬兆網卡,全萬兆交換機鏈接)。
- 網絡存儲傳輸帶寬,理論上:
- 百兆鏈接9MB/s。
- 千兆鏈接90MB/s。
- 萬兆鏈接900MB/s。
- 雙萬兆鏈接1600MB/s以上。
- 推薦:雙萬兆端口網卡,雙路互備、鏈路聚合。
- 須要至少雙倍於現有數據的存儲空間。
- 新的分佈式存儲啓用鏡像和副本,須要「數據容量X副本數量」的物理磁盤容量。
參考: