導航:首頁 > 源碼編譯 > 編譯分布式存儲安裝

編譯分布式存儲安裝

發布時間:2022-12-22 19:17:34

A. Xoreax IncrediBuild安裝過程

IncrediBuild是一款分布式編程開發工具,能夠加速C/C++ 的編譯和創建。特別是在大型C/C++項目中,採用IncrediBuild的多線程處理技術,不必改變項目文件的代碼,在編譯過程中自動查找區域網中空閑的CPU,並將源文件發到空閑CPU一起編譯,加快項目90%的編譯速度。

IncrediBuild需要分別在服務端(Coordinator)和客戶端(Agent)進行安裝。

1、服務端(Coordinator)的安裝

運行IncrediBuild安裝程序,選擇Install IncrediBuild,點擊Next下一步,繼續下一步,在安裝組件選擇窗口(Component Selection)鉤選IncrediBuild Coordinator。安裝組件選擇窗口,還可以不選擇服務端參與編譯,把IncrediBuild Agent前的鉤點掉就可以了。


B. 在個人電腦上怎麼進行分布式編譯伺服器的安裝

方法一:直接在命令行安裝

~$ aptitude install distcc

方法二: 下載distc,解壓,編譯安裝如下:

~$ wgethttp://distcc.samba.org/ftp/distcc/distcc-2.18.3.tar.bz2

~$ tar-jxf distcc-2.18.3.tar.bz2

~$ cddistcc-2.18.3

~$./configure && make && sudo make install

C. android系統編譯能用分布式編譯嗎

項目越來越大,每次需要重新編譯整個項目都是一件很浪費時間的事情。Research了一下,找到以下可以幫助提高速度的方法,總結一下。
1. 使用tmpfs來代替部分IO讀寫
2.ccache,可以將ccache的緩存文件設置在tmpfs上,但是這樣的話,每次開機後,ccache的緩存文件會丟失
3.distcc,多機器編譯
4.將屏幕輸出列印到內存文件或者/dev/null中,避免終端設備(慢速設備)拖慢速度。

tmpfs
有人說在Windows下用了RAMDisk把一個項目編譯時間從4.5小時減少到了5分鍾,也許這個數字是有點誇張了,不過粗想想,把文件放到內存上做編譯應該是比在磁碟上快多了吧,尤其如果編譯器需要生成很多臨時文件的話。
這個做法的實現成本最低,在linux中,直接mount一個tmpfs就可以了。而且對所編譯的工程沒有任何要求,也不用改動編譯環境。
mount -t tmpfs tmpfs ~/build -o size=1G
用2.6.32.2的Linux Kernel來測試一下編譯速度:
用物理磁碟:40分16秒
用tmpfs:39分56秒
呃……沒什麼變化。看來編譯慢很大程度上瓶頸並不在IO上面。但對於一個實際項目來說,編譯過程中可能還會有打包等IO密集的操作,所以只要可能,用tmpfs是有益無害的。當然對於大項目來說,你需要有足夠的內存才能負擔得起這個tmpfs的開銷。
make -j
既然IO不是瓶頸,那CPU就應該是一個影響編譯速度的重要因素了。
用make -j帶一個參數,可以把項目在進行並行編譯,比如在一台雙核的機器上,完全可以用make -j4,讓make最多允許4個編譯命令同時執行,這樣可以更有效的利用CPU資源。
還是用Kernel來測試:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
由此看來,在多核CPU上,適當的進行並行編譯還是可以明顯提高編譯速度的。但並行的任務不宜太多,一般是以CPU的核心數目的兩倍為宜。
不過這個方案不是完全沒有cost的,如果項目的Makefile不規范,沒有正確的設置好依賴關系,並行編譯的結果就是編譯不能正常進行。如果依賴關系設置過於保守,則可能本身編譯的可並行度就下降了,也不能取得最佳的效果。
ccache
ccache工作原理:
ccache也是一個編譯器驅動器。第一趟編譯時ccache緩存了GCC的「-E」輸出、編譯選項以及.o文件到$HOME/.ccache。第二次編譯時盡量利用緩存,必要時更新緩存。所以即使"make clean; make"也能從中獲得好處。ccache是經過仔細編寫的,確保了與直接使用GCC獲得完全相同的輸出。

ccache用於把編譯的中間結果進行緩存,以便在再次編譯的時候可以節省時間。這對於玩Kernel來說實在是再好不過了,因為經常需要修改一些Kernel的代碼,然後再重新編譯,而這兩次編譯大部分東西可能都沒有發生變化。對於平時開發項目來說,也是一樣。為什麼不是直接用make所支持的增量編譯呢?還是因為現實中,因為Makefile的不規范,很可能這種「聰明」的方案根本不能正常工作,只有每次make clean再make才行。
安裝完ccache後,可以在/usr/local/bin下建立gcc,g++,c++,cc的symbolic link,鏈到/usr/bin/ccache上。總之確認系統在調用gcc等命令時會調用到ccache就可以了(通常情況下/usr/local /bin會在PATH中排在/usr/bin前面)。
安裝的另外一種方法:
vi ~/.bash_profile
把/usr/lib/ccache/bin路徑加到PATH下
PATH=/usr/lib/ccache/bin:$PATH:$HOME/bin
這樣每次啟動g++的時候都會啟動/usr/lib/ccache/bin/g++,而不會啟動/usr/bin/g++
效果跟使用命令行ccache g++效果一樣
這樣每次用戶登錄時,使用g++編譯器時會自動啟動ccache
繼續測試:
用ccache的第一次編譯(make -j4):23分38秒
用ccache的第二次編譯(make -j4):8分48秒
用ccache的第三次編譯(修改若干配置,make -j4):23分48秒

看來修改配置(我改了CPU類型...)對ccache的影響是很大的,因為基本頭文件發生變化後,就導致所有緩存數據都無效了,必須重頭來做。但如果只是修改一些.c文件的代碼,ccache的效果還是相當明顯的。而且使用ccache對項目沒有特別的依賴,布署成本很低,這在日常工作中很實用。
可以用ccache -s來查看cache的使用和命中情況:
cache directory /home/lifanxi/.ccachecache hit 7165cache miss 14283called for link 71not a C/C++ file 120no input file 3045files in cache 28566cache size 81.7 Mbytesmax cache size 976.6 Mbytes
可以看到,顯然只有第二編次譯時cache命中了,cache miss是第一次和第三次編譯帶來的。兩次cache佔用了81.7M的磁碟,還是完全可以接受的。
distcc
一台機器的能力有限,可以聯合多台電腦一起來編譯。這在公司的日常開發中也是可行的,因為可能每個開發人員都有自己的開發編譯環境,它們的編譯器版本一般是一致的,公司的網路也通常具有較好的性能。這時就是distcc大顯身手的時候了。
使用distcc,並不像想像中那樣要求每台電腦都具有完全一致的環境,它只要求源代碼可以用make -j並行編譯,並且參與分布式編譯的電腦系統中具有相同的編譯器。因為它的原理只是把預處理好的源文件分發到多台計算機上,預處理、編譯後的目標文件的鏈接和其它除編譯以外的工作仍然是在發起編譯的主控電腦上完成,所以只要求發起編譯的那台機器具備一套完整的編譯環境就可以了。
distcc安裝後,可以啟動一下它的服務:
/usr/bin/distccd --daemon --allow 10.64.0.0/16
默認的3632埠允許來自同一個網路的distcc連接。
然後設置一下DISTCC_HOSTS環境變數,設置可以參與編譯的機器列表。通常localhost也參與編譯,但如果可以參與編譯的機器很多,則可以把localhost從這個列表中去掉,這樣本機就完全只是進行預處理、分發和鏈接了,編譯都在別的機器上完成。因為機器很多時,localhost的處理負擔很重,所以它就不再「兼職」編譯了。
export DISTCC_HOSTS="localhost 10.64.25.1 10.64.25.2 10.64.25.3"
然後與ccache類似把g++,gcc等常用的命令鏈接到/usr/bin/distcc上就可以了。
在make的時候,也必須用-j參數,一般是參數可以用所有參用編譯的計算機CPU內核總數的兩倍做為並行的任務數。
同樣測試一下:
一台雙核計算機,make -j4:23分16秒
兩台雙核計算機,make -j4:16分40秒
兩台雙核計算機,make -j8:15分49秒
跟最開始用一台雙核時的23分鍾相比,還是快了不少的。如果有更多的計算機加入,也可以得到更好的效果。
在編譯過程中可以用distccmon-text來查看編譯任務的分配情況。distcc也可以與ccache同時使用,通過設置一個環境變數就可以做到,非常方便。
總結一下:
tmpfs: 解決IO瓶頸,充分利用本機內存資源
make -j: 充分利用本機計算資源
distcc: 利用多台計算機資源
ccache: 減少重復編譯相同代碼的時間
這些工具的好處都在於布署的成本相對較低,綜合利用這些工具,就可以輕輕鬆鬆的節省相當可觀的時間。上面介紹的都是這些工具最基本的用法,更多的用法可以參考它們各自的man page。
5.還有提速方法是把屏幕輸出重定向到內存文件或/dev/null,因對終端設備(慢速設備)的阻塞寫操作也會拖慢速度。推薦內存文件,這樣發生錯誤時,能夠查看。

D. 如何部署hadoop分布式文件系統

一、實戰環境
系統版本:CentOS 5.8x86_64
java版本:JDK-1.7.0_25
Hadoop版本:hadoop-2.2.0
192.168.149.128namenode (充當namenode、secondary namenode和ResourceManager角色)
192.168.149.129datanode1 (充當datanode、nodemanager角色)
192.168.149.130datanode2 (充當datanode、nodemanager角色)

二、系統准備

1、Hadoop可以從Apache官方網站直接下載最新版本Hadoop2.2。官方目前是提供了linux32位系統可執行文件,所以如果需要在64位系統上部署則需要單獨下載src 源碼自行編譯。(如果是真實線上環境,請下載64位hadoop版本,這樣可以避免很多問題,這里我實驗採用的是32位版本)
1234 Hadoop
Java

2、我們這里採用三台CnetOS伺服器來搭建Hadoop集群,分別的角色如上已經註明。
第一步:我們需要在三台伺服器的/etc/hosts裡面設置對應的主機名如下(真實環境可以使用內網DNS解析)
[root@node1 hadoop]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1localhost.localdomain localhost
192.168.149.128node1
192.168.149.129node2
192.168.149.130node3

(注* 我們需要在namenode、datanode三台伺服器上都配置hosts解析)
第二步:從namenode上無密碼登陸各台datanode伺服器,需要做如下配置:
在namenode 128上執行ssh-keygen,一路Enter回車即可。
然後把公鑰/root/.ssh/id_rsa.pub拷貝到datanode伺服器即可,拷貝方法如下:
ssh--id -i .ssh/id_rsa.pub [email protected]
ssh--id -i .ssh/id_rsa.pub [email protected]

三、Java安裝配置
tar -xvzf jdk-7u25-linux-x64.tar.gz &&mkdir -p /usr/java/ ; mv /jdk1.7.0_25 /usr/java/ 即可。
安裝完畢並配置java環境變數,在/etc/profile末尾添加如下代碼:
export JAVA_HOME=/usr/java/jdk1.7.0_25/
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVE_HOME/lib/dt.jar:$JAVE_HOME/lib/tools.jar:./

保存退出即可,然後執行source /etc/profile 生效。在命令行執行java -version 如下代表JAVA安裝成功。
[root@node1 ~]# java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

(注* 我們需要在namenode、datanode三台伺服器上都安裝Java JDK版本)
四、Hadoop版本安裝
官方下載的hadoop2.2.0版本,不用編譯直接解壓安裝就可以使用了,如下:
第一步解壓:
tar -xzvf hadoop-2.2.0.tar.gz &&mv hadoop-2.2.0/data/hadoop/
(注* 先在namenode伺服器上都安裝hadoop版本即可,datanode先不用安裝,待會修改完配置後統一安裝datanode)

第二步配置變數:
在/etc/profile末尾繼續添加如下代碼,並執行source /etc/profile生效。
export HADOOP_HOME=/data/hadoop/
export PATH=$PATH:$HADOOP_HOME/bin/
export JAVA_LIBRARY_PATH=/data/hadoop/lib/native/
(注* 我們需要在namenode、datanode三台伺服器上都配置Hadoop相關變數)

五、配置Hadoop
在namenode上配置,我們需要修改如下幾個地方:
1、修改vi /data/hadoop/etc/hadoop/core-site.xml 內容為如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href=\'#\'" Put site-specific property overrides inthisfile. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.149.128:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
<description>A base forother temporary directories.</description>
</property>
</configuration>

2、修改vi /data/hadoop/etc/hadoop/mapred-site.xml內容為如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href=\'#\'" Put site-specific property overrides inthisfile. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.149.128:9001</value>
</property>
</configuration>

3、修改vi /data/hadoop/etc/hadoop/hdfs-site.xml內容為如下:
<?xml version="1.0"encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"href=\'#\'" /name>
<value>/data/hadoop/data_name1,/data/hadoop/data_name2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/data_1,/data/hadoop/data_2</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

4、在/data/hadoop/etc/hadoop/hadoop-env.sh文件末尾追加JAV_HOME變數:
echo "export JAVA_HOME=/usr/java/jdk1.7.0_25/">> /data/hadoop/etc/hadoop/hadoop-env.sh

5、修改 vi /data/hadoop/etc/hadoop/masters文件內容為如下:
192.168.149.128

6、修改vi /data/hadoop/etc/hadoop/slaves文件內容為如下:
192.168.149.129
192.168.149.130

如上配置完畢,以上的配置具體含義在這里就不做過多的解釋了,搭建的時候不明白,可以查看一下相關的官方文檔。
如上namenode就基本搭建完畢,接下來我們需要部署datanode,部署datanode相對簡單,執行如下操作即可。
1 fori in`seq 129130` ; doscp -r /data/hadoop/ [email protected].$i:/data/ ; done

自此整個集群基本搭建完畢,接下來就是啟動hadoop集群了。

E. k8s分布式存儲-Ceph

RADOS

Librados

Crush

Pool

PG

Object

Pool、PG和OSD的關系

OSD

塊存儲( RBD )

文件存儲( CephFS )

對象存儲( Object )

關閉防火牆

關閉selinux

關閉 swap

根據規劃設置主機名

添加 hosts

設置文件描述符

時間同步

配置 SSH 免交互認證

1、創建rbd使用的pool

2、指定存儲池使用存儲類型

3、創建一個塊設備

3、查看塊設備

1、禁用當前系統內核不支持的feature

2、映射(任意節點操作)

3、格式化塊設備

4、mount到本地

5、取消塊設備和內核映射

6、刪除RBD塊設備

1、拷貝配置文件和秘鑰

2、安裝 Ceph 客戶端

3、剩餘操作就與本地掛載操作一樣了

1、創建快照

2、列出創建的快照

3、還原快照

4、重新映射並掛載驗證

5、刪除快照

1、創建一個塊設備

2、創建快照

3、設置快照處於被保護狀態

4、通過快照克隆一個新塊設備

5、將克隆的快照獨立於父設備

掛載本地目錄

fuse方式掛載

**全部統一命名空間到 ceph-csi **

k8s節點安裝 Ceph 客戶端

csi-config-map.yaml

storageclass

secret

啟動驗證

rbd-pod-test.yaml

測試

**全部統一命名空間到 ceph-csi **

k8s節點安裝 Ceph 客戶端

csi-config-map

storageclass

secret

啟動驗證

ceph-cephfs-test

測試

F. 基於mogileFS搭建分布式文件系統--海量小文件的存儲利器

1.簡介

分布式文件系統(Distributed File System)是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網路與節點相連。分布式文件系統的設計基於客戶機/伺服器模式。一個典型的網路可能包括多個供多用戶訪問的伺服器。另外,對等特性允許一些系統扮演客戶機和伺服器的雙重角色。例如,用戶可以「發表」一個允許其他客戶機訪問的目錄,一旦被訪問,這個目錄對客戶機來說就像使用本地驅動器一樣。

當下我們處在一個互聯網飛速發展的信息 社會 ,在海量並發連接的驅動下每天所產生的數據量必然以幾何方式增長,隨著信息連接方式日益多樣化,數據存儲的結構也隨著發生了變化。在這樣的壓力下使得人們不得不重新審視大量數據的存儲所帶來的挑戰,例如:數據採集、數據存儲、數據搜索、數據共享、數據傳輸、數據分析、數據可視化等一系列問題。

傳統存儲在面對海量數據存儲表現出的力不從心已經是不爭的事實,例如:縱向擴展受陣列空間限制、橫向擴展受交換設備限制、節點受文件系統限制。

然而分布式存儲的出現在一定程度上有效的緩解了這一問題,之所以稱之為緩解是因為分布式存儲在面對海量數據存儲時也並非十全十美毫無壓力,依然存在的難點與挑戰例如:節點間通信、數據存儲、數據空間平衡、容錯、文件系統支持等一系列問題仍處在不斷摸索和完善中。

2.分布式文件系統的一些解決方案

Google Filesystem適合存儲海量大個文件,元數據存儲與內存中

HDFS(Hadoop Filesystem)GFS的山寨版,適合存儲大量大個文件

TFS(Taobao Filesystem)淘寶的文件系統,在名稱節點上將元數據存儲與關系資料庫中,文件數量不在受限於名稱節點的內容空間,可以存儲海量小文件LustreOracle開發的企業級分布式系統,較重量級MooseFS基於FUSE的格式,可以進行掛載使用MogileFS

擅長存儲海量的小數據,元數據存儲與關系型資料庫中

1.簡介

MogileFS是一個開源的分布式文件系統,用於組建分布式文件集群,由LiveJournal旗下DangaInteractive公司開發,Danga團隊開發了包括 Memcached、MogileFS、Perlbal等不錯的開源項目:(註:Perlbal是一個強大的Perl寫的反向代理伺服器)。MogileFS是一個開源的分布式文件系統。

目前使用 MogileFS 的公司非常多,比如國外的一些公司,日本前幾名的公司基本都在使用這個.

國內所知道的使用 MogileFS 的公司有圖片託管網站 yupoo又拍,digg, 土豆, 豆瓣,1 號店, 大眾點評,搜狗,安居客等等網站.基本很多網站容量,圖片都超過 30T 以上。

2.MogileFS特性

1) 應用層提供服務,不需要使用核心組件

2)無單點失敗,主要有三個組件組成,分為tracker(跟蹤節點)、mogstore(存儲節點)、database(資料庫節點)

3)自動復制文件,復制文件的最小單位不是文件,而是class

4)傳輸中立,無特殊協議,可以通過NFS或HTTP實現通信

5)簡單的命名空間:沒有目錄,直接存在與存儲空間上,通過域來實現

6)不用共享任何數據

3.MogileFS的組成

1)Tracker--跟蹤器,調度器

MogileFS的核心,是一個調度器,mogilefsd進程就是trackers進程程序,trackers的主要職責有:刪除數據、復制數據、監控、查詢等等.這個是基於事件的( event-based ) 父進程/消息匯流排來管理所有來之於客戶端應用的交互(requesting operations to be performed), 包括將請求負載平衡到多個"query workers"中,然後讓 mogilefs的子進程去處理.

mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定義好trackers,因此最好同時運行多個trackers來做負載均衡.trackers也可以只運行在一台機器上,使用負載均衡時可以使用搞一些簡單的負載均衡解決方案,如haproxy,lvs,nginx等,

tarcker的配置文件為/etc/mogilefs/mogilefsd.conf,監聽在TCP的7001埠

2)Database--資料庫部分

主要用來存儲mogilefs的元數據,所有的元數據都存儲在資料庫中,因此,這個數據相當重要,如果資料庫掛掉,所有的數據都不能用於訪問,因此,建議應該對資料庫做高可用

3)mogstored--存儲節點

數據存儲的位置,通常是一個HTTP(webDAV)伺服器,用來做數據的創建、刪除、獲取,任何 WebDAV 伺服器都可以, 不過推薦使用 mogstored . mogilefsd可以配置到兩個機器上使用不同埠… mogstored 來進行所有的 DAV 操作和流量,IO監測, 並且你自己選擇的HTTP伺服器(默認為 perlbal)用來做 GET 操作給客戶端提供文件.

典型的應用是一個掛載點有一個大容量的SATA磁碟. 只要配置完配置文件後mogstored程序的啟動將會使本機成為一個存儲節點.當然還需要mogadm這個工具增加這台機器到Cluster中.

配置文件為/etc/mogilefs/mogstored.conf,監聽在TCP的7500埠

4.基本工作流程

應用程序請求打開一個文件 (通過RPC 通知到 tracker, 找到一個可用的機器). 做一個 「create_open」 請求.

tracker 做一些負載均衡(load balancing)處理,決定應該去哪兒,然後給應用程序一些可能用的位置。

應用程序寫到其中的一個位置去 (如果寫失敗,他會重新嘗試並寫到另外一個位置去).

應用程序 (client) 通過」create_close」 告訴tracker文件寫到哪裡去了.

tracker 將該名稱和域命的名空間關聯 (通過資料庫來做的)

tracker, 在後台, 開始復制文件,知道他滿足該文件類別設定的復制規則

然後,應用程序通過 「get_paths」 請求 domain+key (key == 「filename」) 文件, tracker基於每一位置的I/O繁忙情況回復(在內部經過 database/memcache/etc 等的一些抉擇處理), 該文件可用的完整 URLs地址列表.

應用程序然後按順序嘗試這些URL地址. (tracker』持續監測主機和設備的狀態,因此不會返回死連接,默認情況下他對返回列表中的第一個元素做雙重檢查,除非你不要他這么做..)

1.拓撲圖

說明:1.用戶通過URL訪問前端的nginx

2.nginx根據特定的挑選演算法,挑選出後端一台tracker來響應nginx請求

3.tracker通過查找database資料庫,獲取到要訪問的URL的值,並返回給nginx

4.nginx通過返回的值及某種挑選演算法挑選一台mogstored發起請求

5.mogstored將結果返回給nginx

6.nginx構建響應報文返回給客戶端

2.ip規劃

角色運行軟體ip地址反向代理nginx192.168.1.201存儲節點與調度節點1

mogilefs192.168.1.202存儲節點與調度節點2

mogilefs192.168.1.203資料庫節點

MariaDB192.168.1.204

3.資料庫的安裝操作並為授權

關於資料庫的編譯安裝,請參照本人相關博文http://wangfeng7399.blog.51cto.com/3518031/1393146,本處將不再累贅,本處使用的為yum源的安裝方式安裝mysql

4.安裝mogilefs. 安裝mogilefs,可以使用yum安裝,也可以使用編譯安裝,本處通過yum安裝

5.初始化資料庫

可以看到在資料庫中創建了一些表

6.修改配置文件,啟動服務

7.配置mogilefs

添加存儲主機

添加存儲設備

添加域

添加class

8.配置192.168.1.203的mogilefs 。切記不要初始化資料庫,配置應該與192.168.1.202一樣

9.嘗試上傳數據,獲取數據,客戶端讀取數據

上傳數據,在任何一個節點上傳都可以

獲取數據

客戶端查看數據

我們可以通過任何一個節點查看到數據

要想nginx能夠實現對後端trucker的反向代理,必須結合第三方模塊來實現

1.編譯安裝nginx

2.准備啟動腳本

3.nginx與mofilefs互聯

查看效果

5.配置後端truckers的集群

查看效果

大功告成了,後續思路,前段的nginx和資料庫都存在單點故障,可以實現高可用集群

G. 如何實現高性能分布式文件存儲

其實分布式文件存儲,最復雜的就是元數據的保存和處理,而我使用的XGFS文件存儲軟體只需要三個全快閃記憶體元數據高可用節點,就可以高效保存和處理 100 億文件規模的數據,可以靈活擴展。【感興趣的話點擊此處,免費了解一下】

存儲伺服器通常是獨立的單元。有的時候它們會被設計成4U機架式。或者,它們也可以由兩個箱子組成一個存儲單元以及一個位於附近的伺服器。然後兩個箱子可以並行地安裝在機櫃中。像Sun StorEdge 3120 存儲單元和SunFire X4100伺服器,就可以合並為一個存儲伺服器並放置在一個機櫃中。

億萬克研發高性能 MCA 移動網路信息終端產品,榮獲「國家重點新產品證書」,並在同年成為英特爾嵌入式聯盟 (Intel Embedded Alliance) 的 Associate 級會員、微軟嵌入式全球金牌合作夥伴,開啟伺服器研究領域新征程。億萬克亞當R322N6是一款搭載英特爾第三代至強可擴展系列處理器的2U雙路虛擬化計算型伺服器,計算性能強,性能穩定,擁有優異的整機輸出性能。

H. CentOS 7部署 Ceph分布式存儲架構

隨著OpenStack日漸成為開源雲計算的標准軟體棧,Ceph也已經成為OpenStack的首選後端存儲。Ceph是一種為優秀的性能、可靠性和可擴展性而設計的統一的、分布式文件系統。

Ceph是一個開源的分布式文件系統。因為它還支持塊存儲、對象存儲,所以很自然的被用做雲計算框架openstack或cloudstack整個存儲後端。當然也可以單獨作為存儲,例如部署一套集群作為對象存儲、SAN存儲、NAS存儲等。

前三台伺服器增加一塊硬碟/dev/sdb實驗, 創建目錄並掛載到/var/local/osd{1,2,3};

規范系統主機名添加hosts文件實現集群主機名與主機名之間相互能夠解析(host 文件添加主機名不要使用fqdn方式)可用 hostnamectl set-hostname [name] 設置分別打開各節點的 /etc/hosts 文件,加入這四個節點ip與名稱的對應關系:

在管理節點使用ssh-keygen 生成ssh keys 發布到各節點

第一步:增加 yum配置文件(各個節點都需要增加yum源) vim /etc/yum.repos.d/ceph.repo

或阿里的ceph源

復制配置文件到其它節點和客戶端

在ceph1更新軟體源並安裝ceph-deploy 管理工具

配置文件的默認副本數從3改成2,這樣只有兩個osd也能達到 active+clean 狀態,添加行 osd_pool_default_size = 2

(如果網路源安裝失敗,手工安裝epel-release 然後安裝yum –yinstall cep-release再yum –y install ceph ceph-radosgw)
錯誤參考: https://blog.csdn.net/yenai2008/article/details/72457463

添加osd節點 (所有osd節點執行)
我們實驗准備時已經創建目錄/var/local/osd{id}

(用ceph-deploy把配置文件和admin密鑰拷貝到所有節點,這樣每次執行Ceph命令行時就無需指定monitor地址和ceph.client.admin.keyring了)

以上基本上完成了ceph存儲集群的搭建。

其中: <pg_num> = 128 ,
關於創建存儲池
確定 pg_num 取值是強制性的,因為不能自動計算。下面是幾個常用的值:

隨著 OSD 數量的增加,正確的 pg_num 取值變得更加重要,因為它顯著地影響著集群的行為、以及出錯時的數據持久性(即災難性事件導致數據丟失的概率)。

創建好存儲池後,你就可以用 fs new 命令創建文件系統了
ceph fs new <fs_name> cephfs_metadata cephfs_data
其中: <fs_name> = cephfs 可自定義

在這里想起沒在/etc/fstab配置ceph1、ceph2、ceph3的sdb自動掛載。

ceph在開源社區還是比較熱門的,但是更多的是應用於雲計算的後端存儲。所以大多數在生產環境中使用ceph的公司都會有專門的團隊對ceph進行二次開發,ceph的運維難度也比較大。但是經過合理的優化之後,ceph的性能和穩定性都是值得期待的。

清理機器上的ceph相關配置

可以參考內容: http://blog.51cto.com/12270625/1887648

I. 如何自己在linux上搭建類似雲盤的分布式雲存儲

我們常用的系統大多數是Windows和Mac,但是相比較來說在Linux上部署雲盤更穩定。樓主的想要的是如何從0到1,一步步開發、搭建雲存儲,但相對於大眾來說,難度系數太高,畢竟不是人人都有IT技術,也不是每個公司都有IT人員能夠完成開發、搭建、部署、運維的。

樓上已經有答案說到開發的層面,那我就來說說更適合大眾的搭建方式,那就是拿成熟的雲盤產品直接搭建。

現在雲盒子企業私有雲盤的官網上提供了雲盒子Linux伺服器安裝包,大家有伺服器或者閑置電腦的話,可以直接進入下載板塊下載適用,為方便大家搭建,雲盒子還附上了使用幫助,根據提示輕松部署。

Linux搭建雲存儲

關於運維也不用擔心,雲盒子配備了實施工程師,排查、解決、更新都不用你操心。

有興趣的朋友可以試試

J. 分布式minio搭建指南

分布式Minio可以讓你將多塊硬碟(甚至在不同的機器上)組成一個對象存儲服務。由於硬碟分布在不同的節點上,分布式Minio避免了單點故障。

在大數據領域,通常的設計理念都是無中心和分布式的。Minio分布式模式可以幫助你搭建一個高可用的對象存儲服務,你可以使用這些存儲設備,而不用考慮其真實物理位置。

分布式Minio採用 糾刪碼來防範多個節點宕機和位衰減bit rot。

分布式Minio至少需要4個硬碟,使用分布式Minio自動引入了糾刪碼功能。

單機Minio服務存在單點故障,相反,如果是一個有N塊硬碟的分布式Minio,只要有N/2硬碟在線,你的數據就是安全的。不過你需要至少有N/2+1個硬碟來創建新的對象。

例如,一個16節點的Minio集群,每個節點16塊硬碟,就算8台伺服器宕機,這個集群仍然是可讀的,不過你需要9台伺服器才能寫數據。

注意,只要遵守分布式Minio的限制,你可以組合不同的節點和每個節點幾塊硬碟。比如,你可以使用2個節點,每個節點4塊硬碟,也可以使用4個節點,每個節點兩塊硬碟,諸如此類。

Minio在分布式和單機模式下,所有讀寫操作都嚴格遵守 read-after-write 一致性模型。

如果你了解Minio單機模式的搭建的話,分布式搭建的流程基本一樣,Minio服務基於命令行傳入的參數自動切換成單機模式還是分布式模式。

安裝Minio - Minio快速入門.

啟動一個分布式Minio實例,你只需要把硬碟位置做為參數傳給minio server命令即可,然後,你需要在所有其它節點運行同樣的命令。

注意

目錄創建

run:啟動腳本及二進制文件目錄;

data:數據存儲目錄;

/etc/minio:配置文件目錄;

集群啟動文件

配置為系統服務

將minio二進制文件上傳到/data/minio/run目錄

給所有涉及到的文件或目錄添加許可權!

集群啟動

閱讀全文

與編譯分布式存儲安裝相關的資料

熱點內容
廣播PDF 瀏覽:216
單片機編程300例匯編百度 瀏覽:33
騰訊雲連接不上伺服器 瀏覽:221
不能用來表示演算法的是 瀏覽:859
6軸機器人演算法 瀏覽:890
手機主題照片在哪個文件夾 瀏覽:294
安卓手機後期用什麼軟體調色 瀏覽:628
cad修改快捷鍵的命令 瀏覽:242
好錢包app怎麼登錄不了 瀏覽:859
樹莓派都用python不用c 瀏覽:757
access文件夾樹的構造 瀏覽:662
安卓多指操作怎麼設置 瀏覽:658
linux樹形目錄 瀏覽:727
平方根的簡單演算法 瀏覽:898
千牛訂單頁面信息加密取消 瀏覽:558
單片機自製紅外遙控燈 瀏覽:719
伺服器最小配置怎麼弄 瀏覽:853
ibm伺服器硬體如何升級 瀏覽:923
全球程序員節點贊 瀏覽:986
php函數傳遞數組 瀏覽:632