自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何借助GlusterFS構(gòu)建存儲池

譯文
大數(shù)據(jù)
GlusterFS可存儲網(wǎng)絡(luò)上的數(shù)據(jù),還可以用作云環(huán)境下的存儲后端。

【51CTO.com快譯】GlusterFS可存儲網(wǎng)絡(luò)上的數(shù)據(jù),還可以用作云環(huán)境下的存儲后端。

不久之前,軟件定義存儲還是各大存儲解決方案廠商獨(dú)占的領(lǐng)域,如今卻可以用開源免費(fèi)軟件來加以實(shí)施。另一個(gè)好處是,你有望獲得基于硬件的解決方案所沒有的額外功能。GlusterFS讓你得以構(gòu)建一個(gè)可擴(kuò)展、虛擬化的存儲池,它由常規(guī)存儲系統(tǒng)組成(這些存儲系統(tǒng)組成網(wǎng)絡(luò)RAID),并使用不同的方法來定義卷,描述數(shù)據(jù)如何分布在每個(gè)存儲系統(tǒng)上。

不管你選擇了哪一種類型的卷,GlusterFS都可以利用單個(gè)的存儲資源構(gòu)建一個(gè)通用的存儲陣列,并通過單一命名空間提供給客戶(見圖1)??蛻暨€可以是使用GlusterFS服務(wù)器存儲后端用于虛擬系統(tǒng)的應(yīng)用程序,比如云軟件。相比這種類型的其他解決方案,GlusterFS無需專用的元數(shù)據(jù)服務(wù)器在存儲池中查找文件。相反使用了一種哈希算法,讓任何存儲節(jié)點(diǎn)得以識別存儲池中的文件。這與其他存儲解決方案相比是一大優(yōu)點(diǎn),因?yàn)樵獢?shù)據(jù)服務(wù)器常常是瓶頸和單一故障點(diǎn)。

圖1:客戶系統(tǒng)通過單一命名空間,訪問所需的GlusterFS卷

如果你看一下GlusterFS的內(nèi)部結(jié)構(gòu),就會驚訝地發(fā)現(xiàn):文件系統(tǒng)實(shí)施在用戶空間里面,訪問通過用戶空間中的文件系統(tǒng)(FUSE)接口來進(jìn)行。這樣一來,處理文件系統(tǒng)非常容易、非常靈活,不過代價(jià)是性能受到影響。然而,libgfapi庫能夠直接訪問文件系統(tǒng)。比如說,Qemu用它來存儲GlusterFS上虛擬系統(tǒng)的映像,沒必要經(jīng)由FUSE掛載來繞行。

如前所述,文件系統(tǒng)是在可分布于多個(gè)系統(tǒng)上的卷上創(chuàng)建的。單個(gè)系統(tǒng)通過TCP/IP或InfiniBand遠(yuǎn)程直接內(nèi)存訪問(RDMA)加以連接。然后,通過原生的GlusterFS客戶軟件、通過網(wǎng)絡(luò)文件系統(tǒng)(NFS)或服務(wù)器消息塊(SMB)協(xié)議,就可以使用存儲卷。除了鏡像數(shù)據(jù)外,GlusterFS還可以使用轉(zhuǎn)換工具,將數(shù)據(jù)分布到單個(gè)存儲系統(tǒng)上。

對分布式數(shù)據(jù)和鏡像數(shù)據(jù)而言,最小的單位是文件本身;以條帶化(striping)為列,一個(gè)文件的每個(gè)部分分布在系統(tǒng)上。這種系統(tǒng)的擴(kuò)展性良好,如果你需要管理大文件更是如此。這種模式下的性能幾乎隨著系統(tǒng)的數(shù)量呈線性增長。鏡像數(shù)據(jù)時(shí),GlusterFS創(chuàng)建一個(gè)文件的多個(gè)副本。多種模式的數(shù)據(jù)還可以結(jié)合起來。比如說,結(jié)合分布式數(shù)據(jù)和鏡像數(shù)據(jù)讓你可以兼顧性能和數(shù)據(jù)安全性。

分散模式就好比是一種RAID 5配置,它是比較新的模式。為了獲得容錯(cuò)和高可用性,你還可以通過異地復(fù)制,將存儲卷鏡像到遠(yuǎn)程站點(diǎn)。如果災(zāi)難發(fā)生,服務(wù)器在分布式存儲卷方面出現(xiàn)故障,就很容易恢復(fù)數(shù)據(jù)。

Gluster卷還可以加以擴(kuò)展,可能立即擴(kuò)展:為此,你只要為卷添加一個(gè)額外的brick。用Gluster專業(yè)術(shù)語來講,brick是存儲系統(tǒng)的目錄,卷是由這些目錄組成的。單一卷的brick通常但未必駐留在不同的系統(tǒng)上。為了擴(kuò)大可信賴存儲池,你只要為現(xiàn)有的聯(lián)合體添加額外的服務(wù)器。

這里的例子基于Fedora 22,旨在為基于Qemu/KVM和libvirt虛擬化框架的虛擬系統(tǒng)提供后端存儲。Glusterfs軟件包包含在常規(guī)的Fedora軟件庫中,只要使用dnf軟件包管理器就可以安裝:

dnf install glusterfs glusterfs-cli glusterfs-server

除了安裝GlusterFS社區(qū)版外還有一個(gè)辦法:還可以向Linux發(fā)行版經(jīng)銷商紅帽公司購買商用Gluster Storage產(chǎn)品。它隨帶典型的企業(yè)功能(比如,你可以訪問Linux發(fā)行版經(jīng)銷商的支持服務(wù))。

安裝GlusterFS

為了避免讓例子過于復(fù)雜,我的環(huán)境包括兩個(gè)系統(tǒng)。每個(gè)系統(tǒng)提供一個(gè)brick,它將在兩個(gè)系統(tǒng)之間復(fù)制。在這兩個(gè)系統(tǒng)上,glusterfs服務(wù)都由systemd來啟動(代碼片段1)。

代碼片段1

GlusterFS服務(wù)

  1. # systemctl start glusterd.service 
  2.  
  3. # systemctl status glusterd.service 
  4.  
  5. glusterd.service - GlusterFS, a clustered file-system server 
  6.  
  7. Loaded: loaded (/usr/lib/systemd/system/glusterd.service; disabled; vendor preset: disabled) 
  8.  
  9. Active: active (running) since Thu 2015-08-27 21:26:45 CEST; 2min 53s ago 
  10.  
  11. Process: 1424 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid (code=exited, status=0/SUCCESS) 
  12.  
  13. Main PID: 1425 (glusterd) 
  14.  
  15. CGroup: /system.slice/glusterd.service ??1425 /usr/sbin/glusterd -p /var/run/glusterd.pid 
  16.  
  17. Aug 27 21:26:45 gluster2.example.com systemd[1]: Starting GlusterFS, a clustered file-system server... 
  18.  
  19. Aug 27 21:26:45 gluster2.example.com systemd[1]: Started GlusterFS, a clustered file-system server. 

在這兩臺計(jì)算機(jī)上,專用的塊設(shè)備掛載在/storage/下面。之后將用來創(chuàng)建GlusterFS卷的brick在該設(shè)備上設(shè)置。在這個(gè)例子中,每個(gè)系統(tǒng)只使用一個(gè)brick。然而,如果你之前將所有存儲系統(tǒng)添加到前面所述的可信賴存儲池,這才有可能實(shí)現(xiàn)。登錄到哪個(gè)存儲系統(tǒng)來創(chuàng)建可信賴存儲池沒有關(guān)系。在這個(gè)例子中,***個(gè)系統(tǒng)(gluster1)用于這個(gè)用途:

  1. # gluster peer probe gluster2 
  2.  
  3. Probe successful 

本地系統(tǒng)自動屬于可信賴存儲池,它不需要添加上去。來自gluster peer status的輸出現(xiàn)在應(yīng)該會將另一個(gè)系統(tǒng)標(biāo)為兩個(gè)系統(tǒng)上的peer。下面這個(gè)命令在兩個(gè)存儲系統(tǒng)之間生成一個(gè)復(fù)制卷。在此之后需要啟用該卷:

  1. # gluster volume create gv0 replica gluster1:/storage/brick1/gv0/ gluster2:/storage/brick1/gv0/ 
  2.  
  3. volume create: gv0: success: please start the volume to access data 
  4.  
  5. # gluster volume start gv0 
  6.  
  7. volume start: gv0: success 

由于傳輸模式在默認(rèn)情況下被設(shè)成TCP/IP,不需要指定它。如果你偏愛InfiniBand而非TCP/IP,只要在創(chuàng)建卷時(shí)指定rdma transport作為進(jìn)一步的變量。這種方式創(chuàng)建的卷為你提供了額外的功能特性。比如說,你可以允許只從某個(gè)特定的網(wǎng)絡(luò)來訪問:

  1. # gluster volume set gv0 auth.allow 192.168.122.* 
  2.  
  3. volume set: success 

此處(http://www.admin-magazine.com/Articles/Build-storage-pools-with-GlusterFS/(offset)/3#article_i2)大致介紹了所有可用的Gluster選項(xiàng)。安裝卷后,你可以輸入volume info命令,獲得詳細(xì)信息(見代碼片段2)。

代碼片段2

獲得卷的詳細(xì)信息

  1. # gluster volume info gv0 
  2.  
  3. Volume Name: gv0 
  4.  
  5. Type: Replicate 
  6.  
  7. Volume ID: 4f8d25a9-bbee-4e8c-a922-15a7f5a7673d 
  8.  
  9. Status: Started 
  10.  
  11. Number of Bricks: 1 x 2 = 2 
  12.  
  13. Transport-type: tcp 
  14.  
  15. Bricks: 
  16.  
  17. Brick1: gluster1:/storage/brick1/gv0 
  18.  
  19. Brick2: gluster2:/storage/brick1/gv0 
  20.  
  21. Options Reconfigured: 
  22.  
  23. auth.allow: 192.168.122.* 

使用FUSE實(shí)現(xiàn)最快的客戶訪問

可以使用各種方法,以便最終訪問以這種方式創(chuàng)建的卷。經(jīng)由FUSE的原生訪問提供了***性能,你也可以為卷創(chuàng)建一個(gè)NFS或SMB共享區(qū),以便通過網(wǎng)絡(luò)來訪問。然而,我建議使用原生客戶軟件,不僅僅為了獲得更好的性能,還因?yàn)榇_??梢酝该鞯卦L問單個(gè)brick,不管用來掛載卷的存儲服務(wù)器是哪一臺。如果你想創(chuàng)建GlusterFS卷,通過NFS-Ganesha或CTDB,配置一臺具有高可用性的數(shù)據(jù)服務(wù)器,那么使用NFS或SMB值得關(guān)注。如果你按如下方式運(yùn)行mount命令,就要用到原生客戶軟件:

  1. mount -t glusterfs gluster1:/gv0 /mnt/glusterfs/ 

為了提供***訪問卷的服務(wù),往你的etc/fstab文件添加一個(gè)相應(yīng)的行。眼下值得一提的是,使用哪種存儲系統(tǒng)來訪問無關(guān)重要,因?yàn)樗皇怯脕碜x取元數(shù)據(jù),元數(shù)據(jù)表明了你的卷到底是如何組成的。你可以在這里找到為卷提供brick的所有系統(tǒng)。

擴(kuò)展存儲池

GlusterFS讓用戶很容易調(diào)整現(xiàn)有的存儲池。比如說,如果你想為存儲池添加一個(gè)新的存儲系統(tǒng),可以使用下列命令:

  1. gluster peer probe gluster3 
  2.  
  3. gluster volume add-brick replica 3 gv0 gluster3:/storage/brick1/gv0/ 

這里,gluster3系統(tǒng)被添加到存儲池,將現(xiàn)有的卷擴(kuò)大一個(gè)brick。調(diào)用gluster卷信息應(yīng)該會證實(shí)這一點(diǎn):現(xiàn)在這個(gè)卷已有三個(gè)brick。視選擇的模式而定,你可能需要為卷添加額外的brick。比如說,分布式復(fù)制卷需要四個(gè)brick。

你可以從卷刪除brick,這個(gè)過程就跟添加brick來得一樣容易。如果不再需要某個(gè)存儲系統(tǒng),可以從可信賴存儲池刪除它:

  1. gluster volume remove-brick gv0 gluster3:/storage/brick1/gv0/ 
  2.  
  3. gluster peer detach gluster3 

你為分布式卷添加brick或從分布式卷刪除brick后,需要重新排序數(shù)據(jù),以體現(xiàn)brick數(shù)量發(fā)生變化的事實(shí)。為了啟動這個(gè)過程,使用這個(gè)命令:

  1. gluster volume rebalance gv0 start 

使用參數(shù)status而不是start調(diào)用這個(gè)參數(shù),為你提供了重組進(jìn)度方面的詳細(xì)信息。

GlusterFS作為云存儲

由于良好性能和易于擴(kuò)展,GlusterFS經(jīng)常用作云環(huán)境的存儲解決方案。既可以部署在純粹基于libvirt的Qemu/KVM環(huán)境,也可以部署在多個(gè)KVM實(shí)例并行運(yùn)行的環(huán)境。oVirt框架和紅帽的商用變種(Enterprise Virtualization)是兩個(gè)例子。它們提供了這一功能:將Gluster卷用作一段時(shí)間的存儲池或存儲域。Qemu可以直接訪問磁盤,沒必要經(jīng)由FUSE掛載繞行,這歸功于GlusterFS版本3.4中集成了libgfapi庫。性能測試表明,直接訪問GlusterFS卷獲得了與直接訪問brick幾乎一樣的性能。

下面這個(gè)例子表明了如何為基于libvirt的KVM實(shí)例提供一個(gè)簡單的存儲池。至此,我假設(shè)虛擬機(jī)管理程序已安裝,只有之前創(chuàng)建的Gluster卷需要連接到該虛擬機(jī)管理程序。原則上來說,除了借助命令行工具可以實(shí)現(xiàn)外,這還可以借助圖形化virt-manager(虛擬機(jī)管理器)工具來實(shí)現(xiàn)(見圖2)。

圖2:使用virt-manager圖形化工具,你可以創(chuàng)建GlusterFS存儲池,但眼下,你仍無法創(chuàng)建卷

代碼片段3顯示了一個(gè)XML文件,該文件描述了一個(gè)Gluster卷,然后把它添加到libvirt框架。你只要指定單一的存儲系統(tǒng),同時(shí)指定配置卷時(shí)使用的卷名。下一步,創(chuàng)建一個(gè)新的libvirt存儲池,并啟用它:

  1. # virsh pool-define /tmp/gluster-storage.xml 
  2.  
  3. Pool glusterfs-pool defined from /tmp/gluster-storage.xml 
  4.  
  5. # virsh pool-start glusterfs-pool 
  6.  
  7. Pool glusterfs-pool started 

代碼片段3

池定義

  1. <pool type='gluster'
  2.  
  3. <name>glusterfs-pool</name
  4.  
  5. <source> 
  6.  
  7. <host name='192.168.122.191'/> 
  8.  
  9. <dir path='/'/> 
  10.  
  11. <name>gv0</name
  12.  
  13. </source> 
  14.  
  15. </pool> 

如果這一步行,可以輸入virsh pool-list,即可顯示本地虛擬機(jī)管理程序上的現(xiàn)有存儲池的概況信息:

  1. # virsh pool-list --all 

Name State Autostart

------------------------------------------------

default active yes

glusterfs-pool active no

卷可以分配給這個(gè)存儲池里面的虛擬機(jī)。遺憾的是,截至本文截稿時(shí),libvirt并不允許你在GlusterFS池里面創(chuàng)建卷,所以需要手動創(chuàng)建卷(見圖2)。下面這個(gè)命令在虛擬機(jī)管理程序上創(chuàng)建一個(gè)4GB大小的卷,用于安裝紅帽企業(yè)級Linux系統(tǒng):

qemu-img create gluster://192.168.122.191/gv0/rhel7.img 4G

IP地址對應(yīng)于可信賴存儲池里面的***個(gè)存儲系統(tǒng),GlusterFS卷之前在該存儲池里面創(chuàng)建。virsh vol-list命令顯示卷已正確創(chuàng)建:

  1. # virsh vol-list glusterfs-pool 

Name Path

---------------------------------------------------

rhel7.img gluster://192.168.122.191/gv0/rhel7.img

***,你可以使用virt-manager或virt-install命令行工具,創(chuàng)建所需的虛擬系統(tǒng),并定義剛設(shè)置為存儲后端的那個(gè)卷。在GlusterFS卷上安裝虛擬系統(tǒng)的一個(gè)很簡單的例子看起來就像這樣:

  1. # virt-install --name rhel7 --memory 4096 --disk vol=glusterfs-pool/rhel7.img,bus=virtio --location ftp://192.168.122.1/pub/products/rhel7/ 

當(dāng)然,你需要相應(yīng)修改針對virt-install的調(diào)用。這里目的只是顯示如何可以把GlusterFS卷用作安裝系統(tǒng)的后端。

***,還要注意GlusterFS版本3.3帶來了另一個(gè)創(chuàng)新,那就是統(tǒng)一文件和對象(UFO)轉(zhuǎn)換工具,它讓文件系統(tǒng)能夠?qū)OSIX文件處理成對象,反之亦然。在OpenStack環(huán)境下,文件系統(tǒng)是內(nèi)置的OpenStack存儲組件Swift的名副其實(shí)的替代者,因?yàn)樗С炙械腛penStack存儲協(xié)議(文件、塊和對象)。

結(jié)束語

GlusterFS可以基于免費(fèi)軟件和商用硬件,構(gòu)建可橫向擴(kuò)展的存儲系統(tǒng)。管理員可以在數(shù)據(jù)安全和性能之間作一選擇,也可以兩者兼顧。

原文標(biāo)題:Build storage pools with GlusterFS,作者:Thorsten Scherf

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

責(zé)任編輯:趙立京 來源: 51CTO
相關(guān)推薦

2017-03-03 10:18:13

存儲云APIGUI

2017-03-01 14:30:48

存儲云私有云公有云

2021-02-06 14:02:55

線程池Builder模式

2020-07-29 12:50:10

人工智能企業(yè)AI

2014-08-19 08:47:58

2021-01-04 11:10:08

人工智能存儲云計(jì)算

2009-09-22 12:52:37

ibmdwWiki

2023-12-08 07:59:04

2015-02-05 09:56:53

2017-07-25 14:45:32

GlusterFSCeph存儲

2017-01-12 20:37:03

公共云云存儲云計(jì)算

2014-02-17 10:48:57

NagiosBGP會話

2018-12-14 09:00:00

MoleculeAnsible角色軟件測試

2013-12-23 10:36:57

Nagios監(jiān)控監(jiān)測

2024-11-27 08:14:43

2023-03-16 10:05:26

物聯(lián)網(wǎng)供應(yīng)鏈

2015-01-22 09:22:47

OpenStack存儲云開源云

2018-08-17 10:05:25

存儲系統(tǒng)轉(zhuǎn)型

2014-09-05 10:15:20

CentOSRHEL 7

2011-11-30 09:29:18

BYODWindows服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號