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,如需转载请自行联系原作者