摘要:機器配置主機名地址說明存儲節點存儲節點測試掛載的機器格式化和掛載磁盤主要目的就是將磁盤格式化為,作為的底層存儲文件系統個節點都需要執行注意這個示例是以作為數據磁盤。
以 Docker 為代表的容器技術在云計算領域正扮演著越來越重要的角色,甚至一度被認為是虛擬化技術的替代品。企業級的容器應用常常需要將重要的數據持久化,方便在不同容器間共享。為了能夠持久化數據以及共享容器間的數據,Docker 提出了 Volume 的概念。單機環境的數據卷難以滿足 Docker 集群化的要求,因此需要引入分布式文件系統。目前開源的分布式文件系統有許多,例如 GFS,Ceph,HDFS,FastDFS,GlusterFS 等。
應用場景正常安裝環境下云幫需要一個分布式文件系統,社區版默認使用NFS作為共享存儲,如果你的環境中有分布式文件存儲系統,需要使用dc-ctl set storage --mode custom 命令安裝存儲管理服務,然后再將你系統中的分布式存儲掛載到 /grdata 目錄。GlusterFS 支持文件接口, Ceph 支持塊,文件,對象接口
本文的應用場景主要針對云幫如何使用GlusterFS,后期會介紹云幫如何支持塊存儲。
GlusterFS是一個開源的分布式文件系統,它可以將分散的存儲空間聚合在一起,形成一個虛擬的存儲池。它支持橫向擴展(Scale-Out),可通過增加存儲節點來提升整個系統的容量或性能,存儲容量可擴展至PB級。這一擴展機制是目前的存儲技術熱點,能有效應對容量、性能等存儲需求。GlusterFS除了支持分散存儲(Distributed,將不同的文件放在不同的存儲節點)之外,還支持鏡像存儲(Replicated,同一個文件存放在兩個以上的存儲節點) 和分片存儲(Stripped,將一個文件分劃分為多個固定長度的數據,分散存放在所有存儲節點),其總體架構如下所示:
安裝GlusterFS 至少需要2個節點,在本例中我們成為gfs01,gfs02,
需要這兩臺機器可以通過網絡互相連接
兩個節點的系統中必須包含2塊磁盤,假設sda作為系統盤,那么sdb則作為GlusterFS的存儲盤
注意:GlusterFS會將集群的動態配置信息存放到 /var/lib/glusterd文件中,需要確保這個文件可以寫入,否則集群可能會發生問題,甚至下線,因此,需要確保系統某有足夠的空間,不要讓磁盤寫滿。
機器配置
主機名 | IP地址 | 說明 |
---|---|---|
gfs01 | 172.16.0.151 | 存儲節點01 |
gfs02 | 172.16.0.150 | 存儲節點01 |
client | 172.16.0.152 | 測試掛載的機器 |
主要目的就是將磁盤格式化為xfs,作為glusterfs的底層存儲文件系統.
(2個節點都需要執行): 注意: 這個示例是以/dev/sdb作為數據磁盤。
如果是Debian/Ubuntu系統可能沒有mkfs.xfs命令,需要手動執行安裝
apt-get install -y xfsprogs
mkfs.xfs -i size=512 /dev/sdb mkdir -p /grdata echo "/dev/sdb /grdata xfs defaults 1 2" >> /etc/fstab mount -a && mount
命令執行完成后,你可以看到 /dev/sdb被掛載到了 /grdata 目錄下。
root@gfs01:~# df -h ... /dev/sdb 97M 5.2M 92M 6% /grdata安裝Glusterfs
Debian8
#add GPG key wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.8/LATEST/rsa.pub | apt-key add - #add source echo deb http://download.gluster.org/pub/gluster/glusterfs/3.8/LATEST/Debian/jessie/apt jessie main > /etc/apt/sources.list.d/gluster.list #update package apt-get update #install apt-get install -y glusterfs-server
CentOS
yum install centos-release-gluster38 yum makechche yum install glusterfs-server
Ubuntu 14
sudo apt-get install software-properties-common sudo add-apt-repository ppa:gluster/glusterfs-3.8 sudo apt-get update sudo apt-get install glusterfs-server啟動GlusterFS管理服務
service glusterfs-server start service glusterfs-server status
service glusterd start service glusterd status glusterd.service - LSB: glusterfs server Loaded: loaded (/etc/rc.d/init.d/glusterd) Active: active (running) since Mon, 13 Aug 2012 13:02:11 -0700; 2s ago Process: 19254 ExecStart=/etc/rc.d/init.d/glusterd start (code=exited, status=0/SUCCESS) CGroup: name=systemd:/system/glusterd.service ├ 19260 /usr/sbin/glusterd -p /run/glusterd.pid ├ 19304 /usr/sbin/glusterfsd --xlator-option georep-server.listen-port=24009 -s localhost... └ 19309 /usr/sbin/glusterfs -f /var/lib/glusterd/nfs/nfs-server.vol -p /var/lib/glusterd/...配置信任池(trusted pool)
在gfs01執行
gluster peer probe gfs02
注意: 當使用主機名時,需要確保兩臺機器之間都設置了主機名(ip也可以)。
查看狀態
# gluster peer status Number of Peers: 1 Hostname: gfs02 Uuid: c191b17b-ab9d-4b15-a70d-dcc92be067c9 State: Peer in Cluster (Connected)
注意:一旦存儲池建立之后,只有池中的信任成員可以添加新的節點,新服務器不能從外部加入到已經存在的池
#### 邏輯卷問題
邏輯卷由一個或多個存儲塊(Brick)組成,每個存儲塊對應存儲池中的一個目錄。
GlusterFS的基本類型有三個,分別是分散存儲(Distributed,將不同的文件放在不同的存儲塊)、鏡像存儲(Replicated,同一個文件存放在兩個以上的存儲塊,相當于RAID1) 和分片存儲(Striped,將一個文件分劃分為多個固定長度的數據,分散存放在所有存儲塊,相當于RAID0)。另外Distributed也可以跟Replicated和Striped組合形成新的類型。
這里簡單介紹一些基本卷
###### distribute volume 分布式卷
基于 Hash 算法將文件分布到所有 brick server,只是擴大了磁盤空間,不具備容錯能力。由于distribute volume 使用本地文件系統,因此存取效率并沒有提高,相反會因為網絡通信的原因使用效率有所降低,另外本地存儲設備的容量有限制,因此支持超大型文件會有一定難度。
###### stripe volume 條帶卷
類似 RAID0,文件分成數據塊以 Round Robin 方式分布到 brick server 上,并發粒度是數據塊,支持超大文件,大文件的讀寫性能高。
###### replica volume 復制卷
文件同步復制到多個 brick 上,文件級 RAID1,具有容錯能力,寫性能下降,讀性能提升。Replicated 模式,也稱作 AFR(Auto File Replication),相當于 RAID1,即同一文件在多個鏡像存儲節點上保存多份,每個 replicated 子節點有著相同的目錄結構和文件,replica volume 也是在容器存儲中較為推崇的一種
gfs01和gfs02都需要執行
#這里跳過,已經建立了 mkdir -p /grdata/
隨便在一臺機器上執行
root@gfs01:~# gluster volume create gv0 replica 2 gfs01:/grdata/ gfs02:/grdata/ volume create: gv0: success: please start the volume to access data # 使用Replicated的方式,建立一個名為gv0的卷(Volume),存儲塊(Brick)為2個,分別為gfs01:/grdata和gfs02:/grdata。
啟用邏輯卷
root@gfs01:~# gluster volume start gv0 volume start: gv0: success
查看邏輯卷狀態,確認狀態為 “Started”
root@gfs01:~# gluster volume info Volume Name: gv0 Type: Replicate Volume ID: fde79f7d-294b-4eea-ac95-73bba9f24435 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: 172.16.0.151:/grdata Brick2: 172.16.0.150:/grdata Options Reconfigured: transport.address-family: inet performance.readdir-ahead: on nfs.disable: on
注意:如果存儲卷沒有啟動,需要/var/log/glusterfs 目錄查看日志,文件通常是 glusterfs-glusterd.vol.log
相關命令1.創建信任存儲池(如要創建一個包含3個服務器的存儲池,則需要從第一個服務器server1中把另外兩個服務器加入存儲池中) # gluster peer probe server2 Probe successful # gluster pool peer server3 Probe successful 2.查看存儲池狀態 # gluster peer status Number of Peers: 2 Hostname: 172.16.0.151 Uuid: 86bd7b96-1320-4cd5-b3e1-e537d06dd5f7 State: Peer in Cluster (Connected) Hostname: 172.16.0.150 Uuid: c191b17b-ab9d-4b15-a70d-dcc92be067c9 State: Peer in Cluster (Connected) 3.從存儲池移除服務器 # gluster peer detach 172.16.0.150 Detach successful 4.邏輯卷管理 gluster volume delete/stop/start 邏輯卷名(gv0) 5.邏輯卷中新增存儲塊(操作存儲塊后都需要執行gluster volume rebalance gv0 start重建數據) gluster volume add-brick/remove-brick gv0 gfs03:/grdata測試GlusterFS存儲卷
在這一步中,我們使用client這臺機器來掛載GlusterFS的存儲卷進行測試。這臺機器需要安裝GlusterFS的client端程序,這里我們只使用client機器進行掛載和文件讀寫測試。
# 安裝GlusterFS client程序 ### CentOS / RHEL ### yum install -y glusterfs-client ### Ubuntu / Debian ### apt-get install -y glusterfs-client # 將GlusterFS 存儲卷掛載到/mnt mount -t glusterfs 172.16.0.151:/gv0 /grdata df -h 172.16.0.151:/gv0 97M 5.4M 92M 6% /grdata # 確認掛載結果 mount -t fuse.glusterfs 172.16.0.151:/gv0 on /grdata type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072) # 重啟自動掛載 在/etc/fstab 172.16.0.151:/grdata /grdata glusterfs defaults,_netdev 0 0 # 將/var/log/messages復制到存儲卷,循環執行100次 for i in `seq -w 1 100`; do cp -rp /var/log/messages /grdata/copy-test-$i; done
先檢查掛載點
ls -lA /mnt | wc -l
可以看到 100個文件,在每個存儲節點查看掛載點信息
ls -lA /grdata
因為創建卷gv0的時候使用的是鏡像存儲(Replicated),所以在gv0上寫入的文件應該同時出現在兩個服務器的/grdata目錄上,你可以看到每臺機器都有100個文件,如果集群不是復制模式,每臺機器的存儲文件應該各50
END到這里關于GlusterFS介紹就到這里了。那么云幫如何配置呢,很簡單第一步
dc-ctl set storage --mode custom,接著按照如上的操作將系統中的分布式存儲掛載到 /grdata 目錄即可。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26902.html
摘要:初步理解如果最近打電話給武漢的小伙伴,他說信號不好,那么相信我,他肯定不是真的信號不好,也不是不想和你說話,而是他可能在冰箱里。。。 初步理解 如果最近打電話給武漢的小伙伴,他說信號不好,那么相信我,他肯定不是真的信號不好,也不是不想和你說話,而是他可能在冰箱里。。。武漢的天氣從來都是喜怒無常的,是吧,屌絲氣十足,今年也是絲毫看不出有任何逆襲的跡象和可能性,當然咱也沒必要去操那個心;好...
摘要:從最大的同性社交平臺獲取數據好了,言歸正傳,回到題目。烏云密布的爬蟲百度網盤這件事,是我不想看到的,這類安全問題的一個共同特點用戶自身確實存在問題。 本文作者:夏之冰雪,i春秋簽約作家 《我在百度網盤上看到上萬條車主個人信息,企業、政府高官信息、各種數據庫和無窮無盡的盜版》,一時間,這篇文章就火了,火爆程度另百度猝不及防。 其實呢,這事真不能全怪百度,畢竟用戶分享出去了。之所以引起這么...
摘要:從現在開始,養成寫技術博客的習慣,或許可以在你的職業生涯發揮著不可忽略的作用。如果想了解更多優秀的前端資料,建議收藏下前端英文網站匯總這個網站,收錄了國外一些優質的博客及其視頻資料。 前言 寫文章是一個短期收益少,長期收益很大的一件事情,人們總是高估短期收益,低估長期收益。往往是很多人堅持不下來,特別是寫文章的初期,剛寫完文章沒有人閱讀會有一種挫敗感,影響了后期創作。 從某種意義上說,...
摘要:已經超出本地存儲限定大小可進行超出限定大小之后的操作,如下面可以先清除記錄,再次保存面試官一波素質三連對于只是會使用的同學來說,肯定是不得其解的。 最近面試的時候關于html5API總會被問到localStorage的問題, 對于一般的問題很簡單,無非就是 localStorage、sessionStorage和cookie這三個客戶端緩存的區別 localStorage的API,g...
閱讀 3196·2021-11-18 10:02
閱讀 1446·2021-10-12 10:08
閱讀 1236·2021-10-11 10:58
閱讀 1269·2021-10-11 10:57
閱讀 1167·2021-10-08 10:04
閱讀 2121·2021-09-29 09:35
閱讀 773·2021-09-22 15:44
閱讀 1269·2021-09-03 10:30