GlusterFS叢集部署
适用于比較大的存儲 例如kvm鏡像
官方文檔
<code>#yum安裝centos-release-gluster</code>
<code>#yum安裝glusterfs-server</code>
<code>wget -O </code><code>/etc/yum</code><code>.repos.d</code><code>/epel</code><code>.repo http:</code><code>//mirrors</code><code>.aliyun.com</code><code>/repo/epel-6</code><code>.repo</code>
<code>[root@master ~]</code><code># yum install -y glusterfs-server</code>
安裝完成後啟動
<code>[root@master ~]</code><code># /etc/init.d/glusterd start</code>
<code>Starting glusterd: [ OK ]</code>
<code>[root@master ~]</code><code># gluster peer probe 192.168.80.123 另一個機器的iP</code>
<code>peer probe: success.</code>
<code>[root@master ~]</code><code># gluster peer status 每個伺服器執行都可以</code>
<code>Number of Peers: 1</code>
<code>Hostname: 192.168.80.123</code>
<code>Uuid: 49e15d0e-d499-427a-87aa-fe573a7fd345</code>
<code>State: Peer </code><code>in</code> <code>Cluster (Connected)</code>
<code>192.168.80.123 機器1</code>
<code>192.168.80.201 機器2</code>
測試
兩台伺服器分别建立
<code>[root@master ~]</code><code># mkdir /data/exp1 -p 機器1</code>
<code>[root@master ~]</code><code># mkdir /data/exp2 -p 機器2</code>
在機器1操作
<code>[root@lanyezi yum.repos.d]</code><code># gluster volume create test-volume 192.168.80.123:/data/exp1/ 192.168.80.201:/data/exp2</code>
<code>volume create: </code><code>test</code><code>-volume: failed: The brick 192.168.80.123:</code><code>/data/exp1</code> <code>is being created </code><code>in</code> <code>the root partition. It is recommended that you don</code><code>'t use the system'</code><code>s root partition </code><code>for</code> <code>storage backend. Or use </code><code>'force'</code> <code>at the end of the </code><code>command</code> <code>if</code> <code>you want to override this behavior.</code>
<code>[root@lanyezi yum.repos.d]</code><code># gluster volume create test-volume 192.168.80.123:/data/exp1/ 192.168.80.201:/data/exp2 force</code>
<code>volume create: </code><code>test</code><code>-volume: success: please start the volume to access data</code>
分布式卷建立成功
<code>[root@lanyezi yum.repos.d]</code><code># gluster volume info</code>
<code> </code>
<code>Volume Name: </code><code>test</code><code>-volume</code>
<code>Type: Distribute</code>
<code>Volume ID: 099ad2bc-b83c-4713-9e70-49fc054b5163</code>
<code>Status: Created</code>
<code>Snapshot Count: 0</code>
<code>Number of Bricks: 2</code>
<code>Transport-</code><code>type</code><code>: tcp</code>
<code>Bricks:</code>
<code>Brick1: 192.168.80.123:</code><code>/data/exp1</code>
<code>Brick2: 192.168.80.201:</code><code>/data/exp2</code>
<code>Options Reconfigured:</code>
<code>transport.address-family: inet</code>
<code>nfs.disable: on</code>
<code>[root@master ~]</code><code># mkdir /data/exp3 -p 機器1</code>
<code>[root@master ~]</code><code># mkdir /data/exp4 -p 機器2</code>
<code>[root@lanyezi yum.repos.d]</code><code># gluster volume create repl-volume replica 2 transport tcp 192.168.80.123:/data/exp3/ 192.168.80.201:/data/exp4</code>
<code>Replica 2 volumes are prone to </code><code>split</code><code>-brain. Use Arbiter or Replica 3 to avoid this. See: http:</code><code>//docs</code><code>.gluster.org</code><code>/en/latest/Administrator</code><code>%20Guide</code><code>/Split</code><code>%20brain%20and%20ways%20to%20deal%20with%20it/.</code>
<code>Do you still want to </code><code>continue</code><code>?</code>
<code> </code><code>(y</code><code>/n</code><code>) y</code>
<code>volume create: repl-volume: failed: The brick 192.168.80.123:</code><code>/data/exp3</code> <code>is being created </code><code>in</code> <code>the root partition. It is recommended that you don</code><code>'t use the system'</code><code>s root partition </code><code>for</code> <code>storage backend. Or use </code><code>'force'</code> <code>at the end of the </code><code>command</code> <code>if</code> <code>you want to override this behavior.</code>
<code>[root@lanyezi yum.repos.d]</code><code># gluster volume create repl-volume replica 2 transport tcp 192.168.80.123:/data/exp3/ 192.168.80.201:/data/exp4 force</code>
<code>volume create: repl-volume: success: please start the volume to access data</code>
<code>[root@lanyezi yum.repos.d]</code><code># gluster volume info repl-volume</code>
<code>Volume Name: repl-volume</code>
<code>Type: Replicate</code>
<code>Volume ID: 089c6f46-8131-473a-a6e7-c475e2bd5785</code>
<code>Number of Bricks: 1 x 2 = 2</code>
<code>Brick1: 192.168.80.123:</code><code>/data/exp3</code>
<code>Brick2: 192.168.80.201:</code><code>/data/exp4</code>
<code>performance.client-io-threads: off</code>
兩台機器分别操作
<code>[root@master ~]</code><code># mkdir /data/exp5 -p 機器1</code>
<code>[root@master ~]</code><code># mkdir /data/exp6 -p 機器2</code>
建立
<code>[root@lanyezi exp3]</code><code># gluster volume create raid0-volume stripe 2 transport tcp 192.168.80.123:/data/exp5/ 192.168.80.201:/data/exp6 force</code>
<code>volume create: raid0-volume: success: please start the volume to access data</code>
<code>[root@lanyezi exp3]</code><code># gluster volume info raid0-volume</code>
<code>Volume Name: raid0-volume</code>
<code>Type: Stripe</code>
<code>Volume ID: 123ddf8e-9081-44ba-8d9d-0178c05c6a68</code>
<code>Brick1: 192.168.80.123:</code><code>/data/exp5</code>
<code>Brick2: 192.168.80.201:</code><code>/data/exp6</code>
檢視
<code>[root@lanyezi exp3]</code><code># gluster volume status</code>
<code>Volume raid0-volume is not started</code>
<code>Volume repl-volume is not started</code>
<code>Volume </code><code>test</code><code>-volume is not started</code>
啟動
<code>[root@master exp4]</code><code># gluster volume start raid0-volume</code>
<code>volume start: raid0-volume: success</code>
<code>[root@master exp4]</code><code># gluster volume start repl-volume</code>
<code>volume start: repl-volume: success</code>
<code>[root@master exp4]</code><code># gluster volume start test-volume</code>
<code>volume start: </code><code>test</code><code>-volume: success</code>
再檢視
<code>[root@master exp4]</code><code># gluster volume status</code>
<code>Status of volume: raid0-volume</code>
<code>Gluster process TCP Port RDMA Port Online Pid</code>
<code>------------------------------------------------------------------------------</code>
<code>Brick 192.168.80.123:</code><code>/data/exp5</code> <code>49152 0 Y 43622</code>
<code>Brick 192.168.80.201:</code><code>/data/exp6</code> <code>49152 0 Y 43507</code>
<code>Task Status of Volume raid0-volume</code>
<code>There are no active volume tasks</code>
<code>Status of volume: repl-volume</code>
<code>Brick 192.168.80.123:</code><code>/data/exp3</code> <code>49153 0 Y 43657</code>
<code>Brick 192.168.80.201:</code><code>/data/exp4</code> <code>49153 0 Y 43548</code>
<code>Self-heal Daemon on localhost N</code><code>/A</code> <code>N</code><code>/A</code> <code>Y 43569</code>
<code>Self-heal Daemon on 192.168.80.123 N</code><code>/A</code> <code>N</code><code>/A</code> <code>Y 43678</code>
<code>Task Status of Volume repl-volume</code>
<code>Status of volume: </code><code>test</code><code>-volume</code>
<code>Brick 192.168.80.123:</code><code>/data/exp1</code> <code>49154 0 Y 43704</code>
<code>Brick 192.168.80.201:</code><code>/data/exp2</code> <code>49154 0 Y 43608</code>
<code>Task Status of Volume </code><code>test</code><code>-volume</code>
通過info檢視
<code>[root@master exp4]</code><code># gluster volume info</code>
<code>Status: Started</code>
測試挂載
在随便一台伺服器挂載(前提需要有glusterfs-client這個服務)
<code>[root@master exp4]</code><code># mount.glusterfs 192.168.80.123:/test-volume /mnt/g1/</code>
<code>[root@master exp4]</code><code># mount.glusterfs 192.168.80.123:/repl-volume /mnt/g2</code>
<code>[root@master exp4]</code><code># mount.glusterfs 192.168.80.123:/raid0-volume /mnt/g3</code>
<code>[root@master exp4]</code><code># df -h|column -t</code>
<code>Filesystem Size Used Avail Use% Mounted on</code>
<code>/dev/sda3</code> <code>18G 5.7G 12G 34% /</code>
<code>tmpfs 491M 0 491M 0% </code><code>/dev/shm</code>
<code>/dev/sda1</code> <code>190M 31M 150M 17% </code><code>/boot</code>
<code>192.168.80.123:</code><code>/test-volume</code>
<code>36G 7.8G 27G 23% </code><code>/mnt/g1</code>
<code>192.168.80.123:</code><code>/repl-volume</code>
<code>18G 5.7G 12G 34% </code><code>/mnt/g2</code>
<code>192.168.80.123:</code><code>/raid0-volume</code>
<code>36G 7.8G 27G 23% </code><code>/mnt/g3</code>
分布式卷
随機選擇一台伺服器寫到/data/exp1 或2
複制式卷
兩台複制寫到/data/exp* 相當于raid1 寫兩份
調帶式卷
兩台伺服器都操作
<code>[root@lanyezi exp3]</code><code># mkdir /exp1 /exp2</code>
建立邏輯卷(+force強制建立)
[
<code>root@lanyezi ~]</code><code># gluster volume create hehe-volume replica 2 transport tcp 192.168.80.123:/exp1/ 192.168.80.123:/exp2/ 192.168.80.201:/exp1/ 192.168.80.201:/exp2/ force</code>
<code>volume create: hehe-volume: success: please start the volume to access data</code>
<code>[root@lanyezi ~]</code><code># gluster volume start hehe-volume</code>
<code>volume start: hehe-volume: success</code>
查詢
<code>[root@lanyezi ~]</code><code># gluster volume info hehe-volume</code>
<code>Volume Name: hehe-volume</code>
<code>Type: Distributed-Replicate</code>
<code>Volume ID: 321c8da7-43cd-40ad-a187-277018e43c9e</code>
<code>Number of Bricks: 2 x 2 = 4</code>
<code>Brick1: 192.168.80.123:</code><code>/exp1</code>
<code>Brick2: 192.168.80.123:</code><code>/exp2</code>
<code>Brick3: 192.168.80.201:</code><code>/exp1</code>
<code>Brick4: 192.168.80.201:</code><code>/exp2</code>
<code>建立挂載目錄并挂載</code>
<code>[root@lanyezi ~]</code><code># mkdir /mnt/g5</code>
<code>[root@lanyezi ~]</code><code># mount.glusterfs 192.168.80.123:/hehe-volume /mnt/g5/</code>
<code>[root@lanyezi ~]</code><code># df -h</code>
<code>Filesystem Size Used Avail Use% Mounted on</code>
<code>/dev/sda3</code> <code>18G 2.2G 15G 13% /</code>
<code>tmpfs 491M 0 491M 0% </code><code>/dev/shm</code>
<code>/dev/sda1</code> <code>190M 31M 150M 17% </code><code>/boot</code>
<code>192.168.80.123:</code><code>/hehe-volume</code>
<code> </code><code>18G 3.9G 14G 23% </code><code>/mnt/g5</code>
測試成果
<code>[root@lanyezi ~]</code><code># man tcp > /mnt/g5/tcp1.txt</code>
<code>[root@lanyezi ~]</code><code># man tcp > /mnt/g5/tcp2.txt</code>
<code>[root@lanyezi ~]</code><code># man tcp > /mnt/g5/tcpe.txt</code>
<code>[root@lanyezi ~]</code><code># man tcp > /mnt/g5/tcp4.txt</code>
機器1
<code>[root@lanyezi ~]</code><code># tree /exp*</code>
<code>/exp1</code>
<code>├── tcp2.txt</code>
<code>├── tcp4.txt</code>
<code>└── tcpe.txt</code>
<code>/exp2</code>
機器2
<code>[root@master ~]</code><code># tree /exp*</code>
<code>└── tcp1.txt</code>
<code>0 directories, 2 files</code>
這樣的分布不均勻 是以這些目錄裡的檔案建立的時候跟邏輯卷的順序有關系
我們再來測試建立不同順序的複制卷
<code>[root@lanyezi ~]</code><code># gluster volume create hehehe-volume replica 2 transport tcp 192.168.80.123:/exp3/ 192.168.80.201:/exp3/ 192.168.80.123:/exp4/ 192.168.80.201:/exp4/ force</code>
<code>volume create: hehehe-volume: success: please start the volume to access data</code>
<code>[root@lanyezi ~]</code><code># gluster volume start hehehe-volume</code>
<code>volume start: hehehe-volume: success</code>
檢視狀态
<code>[root@lanyezi ~]</code><code># gluster volume info hehehe-volume</code>
<code>Volume Name: hehehe-volume</code>
<code>Volume ID: 2f24e2cf-bb86-4fe8-a2bc-23f3d07f6f86</code>
<code>Brick1: 192.168.80.123:</code><code>/exp3</code>
<code>Brick2: 192.168.80.201:</code><code>/exp3</code>
<code>Brick3: 192.168.80.123:</code><code>/exp4</code>
<code>Brick4: 192.168.80.201:</code><code>/exp4</code>
挂載
<code>[root@lanyezi ~]</code><code># mkdir /mnt/gg</code>
<code>[root@lanyezi ~]</code><code># mount.glusterfs 192.168.80.123:/hehehe-volume /mnt/gg</code>
測試寫入檔案
<code>[root@lanyezi gg]</code><code># man tcp > /mnt/gg/tcp1.txt</code>
<code>[root@lanyezi gg]</code><code># man tcp > /mnt/gg/tcp2.txt</code>
<code>[root@lanyezi gg]</code><code># man tcp > /mnt/gg/tcp3.txt</code>
<code>[root@lanyezi gg]</code><code># man tcp > /mnt/gg/tcp4.txt</code>
機器1檢視
<code>[root@lanyezi gg]</code><code># ll /exp3</code>
<code>total 168</code>
<code>-rw-r--r-- 2 root root 51310 Oct 20 11:02 tcp2.txt</code>
<code>-rw-r--r-- 2 root root 51310 Oct 20 11:02 tcp3.txt</code>
<code>-rw-r--r-- 2 root root 51310 Oct 20 11:02 tcp4.txt</code>
<code>[root@lanyezi gg]</code><code># ll /exp4</code>
<code>total 56</code>
<code>-rw-r--r-- 2 root root 51310 Oct 20 11:02 tcp1.txt</code>
機器2檢視
<code>[root@master ~]# ll /exp3/</code>
<code>total </code><code>168</code>
<code>-rw-r--r-- </code><code>2</code> <code>root root </code><code>51310</code> <code>Dec </code><code>25</code> <code>18</code><code>:</code><code>05</code> <code>tcp2.txt</code>
<code>-rw-r--r-- </code><code>2</code> <code>root root </code><code>51310</code> <code>Dec </code><code>25</code> <code>18</code><code>:</code><code>05</code> <code>tcp3.txt</code>
<code>-rw-r--r-- </code><code>2</code> <code>root root </code><code>51310</code> <code>Dec </code><code>25</code> <code>18</code><code>:</code><code>05</code> <code>tcp4.txt</code>
<code>[root@master ~]# ll /exp4/</code>
<code>total </code><code>56</code>
<code>-rw-r--r-- </code><code>2</code> <code>root root </code><code>51310</code> <code>Dec </code><code>25</code> <code>18</code><code>:</code><code>05</code> <code>tcp1.txt</code>
這樣分布就均勻了 資料庫也分布複制成功
<code>[root@master ~]</code><code># mkdir /data/exp9</code>
<code>[root@master ~]</code><code># gluster volume add-brick test-volume 192.168.80.201:/data/exp9/ force 添加的是已經存在的卷</code>
<code>volume add-brick: success</code>
<code>[root@master ~]</code><code># gluster volume info test-volume</code>
<code>Number of Bricks: 3</code>
<code>Brick3: 192.168.80.201:</code><code>/data/exp9</code> <code>新增加的卷</code>
重新平衡一下分布式券
<code>[root@master g1]</code><code># gluster volume rebalance test-volume start</code>
<code>volume rebalance: </code><code>test</code><code>-volume: success: Rebalance on </code><code>test</code><code>-volume has been started successfully. Use rebalance status </code><code>command</code> <code>to check status of the rebalance process.</code>
<code>ID: aa05486b-11df-4bac-9ac7-2237a8c12ad6</code>
删除brick 資料會丢失
<code>[root@lanyezi gg]</code><code># gluster volume remove-brick test-volume 192.168.80.201:/data/exp9 start</code>
<code>volume remove-brick start: success</code>
<code>ID: 4f16428a-7e9f-4b7b-bb07-2917a2f14323</code>
再次檢視
<code>[root@master g1]</code><code># gluster volume status test-volume</code>
<code>Brick 192.168.80.123:</code><code>/data/exp1</code> <code>49158 0 Y 1237</code>
<code>Brick 192.168.80.201:</code><code>/data/exp9</code> <code>49159 0 Y 44717</code>
<code>Task : Remove brick </code>
<code>ID : 4f16428a-7e9f-4b7b-bb07-2917a2f14323</code>
<code>Removed bricks: </code>
<code>192.168.80.201:</code><code>/data/exp9</code>
<code>Status : completed</code>
再次删除
<code>[root@master g1]</code><code># gluster volume remove-brick test-volume 192.168.80.201:/data/exp9 force</code>
<code>Removing brick(s) can result </code><code>in</code> <code>data loss. Do you want to Continue? (y</code><code>/n</code><code>) y</code>
<code>volume remove-brick commit force: success</code>
再次檢視狀态
删除卷之後再平衡一下
<code>[root@lanyezi gg]</code><code># gluster volume rebalance test-volume start</code>
<code>ID: 747d499c-8f20-4514-b3af-29d93ce3a995</code>
<code>[root@lanyezi gg]</code><code># gluster volume info test-volume</code>
<code>performance.client-io-threads: on</code>
本文轉自 藍葉子Sheep 51CTO部落格,原文連結:http://blog.51cto.com/dellinger/2054693,如需轉載請自行聯系原作者