本文由Ceph中国社区-徐小胖翻译、Ceph中国社区-luokexue校稿
英文出处:Testing Ceph BlueStore with the Kraken release 欢迎加入CCTG
Ceph Kraken(11.2.0) 版本已经发布,版本说明告诉我们新的 OSD 后端 BlueStore 已经可以使用。
BlueStore
现在 OSD 的后端是 FileStore, 它使用 XFS 文件系统来保存其数据。 总的来说,BlueStore 为了克服 XFS 和 POSIX 的一些限制而被开发出来。 BlueStore 提供了更高的性能(主要是写性能),还有新的校验及压缩算法提供了更高的数据安全性。 从 Kraken 系列开始, 社区鼓励用户在非生产环境和不重要的数据上测试 BlueStore 并且将使用情况及遇到的问题反馈给社区。
部署 BlueStore
你可以使用 ceph-deploy 部署使用 BlueStore 的 OSD, 需要添加 -bluestore 标记。 我用三台机器:alpha, bravo, charlie,搭建了一个简单的测试集群。 每一台机器会运行一个 ceph-mon 和 一个 ceph-osd 进程。 下面是我部署集群时使用的 ceph-deploy 指令:
1 2 |
ceph-deploy <span class="hljs-keyword" style="font-weight:700;line-height:1.6;">new</span> alpha bravo charlie ceph-deploy mon create alpha bravo charlie |
现在,编辑 当前目录的ceph.conf 文件, 添加:
1 2 |
[osd] enable_experimental_unrecoverable_data_corrupting_features = bluestore |
使用这个设置,我们允许 BlueStore 的使用,现在我们开始部署 OSD:
1 |
<span class="hljs-tag" style="color:navy;line-height:1.6;">ceph-deploy</span> <span class="hljs-tag" style="color:navy;line-height:1.6;">--overwrite-conf</span> <span class="hljs-tag" style="color:navy;line-height:1.6;">osd</span> <span class="hljs-tag" style="color:navy;line-height:1.6;">create</span> <span class="hljs-tag" style="color:navy;line-height:1.6;">--bluestore</span> <span class="hljs-tag" style="color:navy;line-height:1.6;">alpha</span><span class="hljs-pseudo" style="line-height:1.6;">:sdb</span> <span class="hljs-tag" style="color:navy;line-height:1.6;">bravo</span><span class="hljs-pseudo" style="line-height:1.6;">:sdb</span> <span class="hljs-tag" style="color:navy;line-height:1.6;">charlie</span><span class="hljs-pseudo" style="line-height:1.6;">:sdb</span> |
运行 BlueStore
这个小的集群现在运行着三个使用 BlueStore 的 OSD:
1 2 3 4 5 6 7 8 9 10 |
root@alpha:~<span class="hljs-preprocessor" style="color:#999999;font-weight:700;line-height:1.6;"># ceph -s</span> cluster c824e460-<span class="hljs-number" style="color:teal;line-height:1.6;">2f</span>09-<span class="hljs-number" style="color:teal;line-height:1.6;">4994</span>-<span class="hljs-number" style="color:teal;line-height:1.6;">8</span>b2f-<span class="hljs-number" style="color:teal;line-height:1.6;">108</span>aedc52d19 health HEALTH_OK monmap e2: <span class="hljs-number" style="color:teal;line-height:1.6;">3</span> mons at {alpha=[<span class="hljs-number" style="color:teal;line-height:1.6;">2001</span>:db8::<span class="hljs-number" style="color:teal;line-height:1.6;">100</span>]:<span class="hljs-number" style="color:teal;line-height:1.6;">6789</span>/<span class="hljs-number" style="color:teal;line-height:1.6;">0</span>,bravo=[<span class="hljs-number" style="color:teal;line-height:1.6;">2001</span>:db8::<span class="hljs-number" style="color:teal;line-height:1.6;">101</span>]:<span class="hljs-number" style="color:teal;line-height:1.6;">6789</span>/<span class="hljs-number" style="color:teal;line-height:1.6;">0</span>,charlie=[<span class="hljs-number" style="color:teal;line-height:1.6;">2001</span>:db8::<span class="hljs-number" style="color:teal;line-height:1.6;">102</span>]:<span class="hljs-number" style="color:teal;line-height:1.6;">6789</span>/<span class="hljs-number" style="color:teal;line-height:1.6;">0</span>} election epoch <span class="hljs-number" style="color:teal;line-height:1.6;">14</span>, quorum <span class="hljs-number" style="color:teal;line-height:1.6;">0</span>,<span class="hljs-number" style="color:teal;line-height:1.6;">1</span>,<span class="hljs-number" style="color:teal;line-height:1.6;">2</span> alpha,bravo,charlie mgr active: charlie standbys: alpha, bravo osdmap e14: <span class="hljs-number" style="color:teal;line-height:1.6;">3</span> osds: <span class="hljs-number" style="color:teal;line-height:1.6;">3</span> up, <span class="hljs-number" style="color:teal;line-height:1.6;">3</span> in flags sortbitwise,require_jewel_osds,require_kraken_osds pgmap v24: <span class="hljs-number" style="color:teal;line-height:1.6;">64</span> pgs, <span class="hljs-number" style="color:teal;line-height:1.6;">1</span> pools, <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> bytes data, <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> objects <span class="hljs-number" style="color:teal;line-height:1.6;">43356</span> kB used, <span class="hljs-number" style="color:teal;line-height:1.6;">30374</span> MB / <span class="hljs-number" style="color:teal;line-height:1.6;">30416</span> MB avail <span class="hljs-number" style="color:teal;line-height:1.6;">64</span> active+clean root@alpha:~<span class="hljs-preprocessor" style="color:#999999;font-weight:700;line-height:1.6;">#</span> root@alpha:~<span class="hljs-preprocessor" style="color:#999999;font-weight:700;line-height:1.6;"># ceph osd tree</span> ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -<span class="hljs-number" style="color:teal;line-height:1.6;">1</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0.02907</span> root <span class="hljs-keyword" style="font-weight:700;line-height:1.6;">default</span> -<span class="hljs-number" style="color:teal;line-height:1.6;">2</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0.00969</span> host alpha <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0.00969</span> osd<span class="hljs-number" style="color:teal;line-height:1.6;">.0</span> up <span class="hljs-number" style="color:teal;line-height:1.6;">1.00000</span> <span class="hljs-number" style="color:teal;line-height:1.6;">1.00000</span> -<span class="hljs-number" style="color:teal;line-height:1.6;">3</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0.00969</span> host bravo <span class="hljs-number" style="color:teal;line-height:1.6;">1</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0.00969</span> osd<span class="hljs-number" style="color:teal;line-height:1.6;">.1</span> up <span class="hljs-number" style="color:teal;line-height:1.6;">1.00000</span> <span class="hljs-number" style="color:teal;line-height:1.6;">1.00000</span> -<span class="hljs-number" style="color:teal;line-height:1.6;">4</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0.00969</span> host charlie <span class="hljs-number" style="color:teal;line-height:1.6;">2</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0.00969</span> osd<span class="hljs-number" style="color:teal;line-height:1.6;">.2</span> up <span class="hljs-number" style="color:teal;line-height:1.6;">1.00000</span> <span class="hljs-number" style="color:teal;line-height:1.6;">1.00000</span> root@alpha:~<span class="hljs-preprocessor" style="color:#999999;font-weight:700;line-height:1.6;">#</span> |
在 alpha 机器上,我看到了 osd.0 只使用了一个很小的分区,剩下的都被 BlueStore 使用:
1 2 3 4 5 6 7 8 9 10 11 |
root@alpha:~<span class="hljs-preprocessor" style="color:#999999;font-weight:700;line-height:1.6;"># df -h /var/lib/ceph/osd/ceph-<span class="hljs-number" style="color:teal;line-height:1.6;">0</span></span> Filesystem Size Used Avail Use% Mounted on /dev/sdb1 <span class="hljs-number" style="color:teal;line-height:1.6;">97</span>M <span class="hljs-number" style="color:teal;line-height:1.6;">5.4</span>M <span class="hljs-number" style="color:teal;line-height:1.6;">92</span>M <span class="hljs-number" style="color:teal;line-height:1.6;">6</span>% /var/lib/ceph/osd/ceph-<span class="hljs-number" style="color:teal;line-height:1.6;">0</span> root@alpha:~<span class="hljs-preprocessor" style="color:#999999;font-weight:700;line-height:1.6;"># lsblk </span> NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda <span class="hljs-number" style="color:teal;line-height:1.6;">8</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">0</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> <span class="hljs-number" style="color:teal;line-height:1.6;">8</span>G <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> disk ├─sda1 <span class="hljs-number" style="color:teal;line-height:1.6;">8</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">1</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> <span class="hljs-number" style="color:teal;line-height:1.6;">7.5</span>G <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> part / ├─sda2 <span class="hljs-number" style="color:teal;line-height:1.6;">8</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">2</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> <span class="hljs-number" style="color:teal;line-height:1.6;">1</span>K <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> part └─sda5 <span class="hljs-number" style="color:teal;line-height:1.6;">8</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">5</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> <span class="hljs-number" style="color:teal;line-height:1.6;">510</span>M <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> part [SWAP] sdb <span class="hljs-number" style="color:teal;line-height:1.6;">8</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">16</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> <span class="hljs-number" style="color:teal;line-height:1.6;">10</span>G <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> disk ├─sdb1 <span class="hljs-number" style="color:teal;line-height:1.6;">8</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">17</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> <span class="hljs-number" style="color:teal;line-height:1.6;">100</span>M <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> part /var/lib/ceph/osd/ceph-<span class="hljs-number" style="color:teal;line-height:1.6;">0</span> └─sdb2 <span class="hljs-number" style="color:teal;line-height:1.6;">8</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">18</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> <span class="hljs-number" style="color:teal;line-height:1.6;">9.9</span>G <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> part sdc <span class="hljs-number" style="color:teal;line-height:1.6;">8</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">32</span> <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> <span class="hljs-number" style="color:teal;line-height:1.6;">10</span>G <span class="hljs-number" style="color:teal;line-height:1.6;">0</span> disk root@alpha:~<span class="hljs-preprocessor" style="color:#999999;font-weight:700;line-height:1.6;"># cat /var/lib/ceph/osd/ceph-<span class="hljs-number" style="color:teal;line-height:1.6;">0</span>/type</span> bluestore root@alpha:~<span class="hljs-preprocessor" style="color:#999999;font-weight:700;line-height:1.6;">#</span> |
这些基于 BlueStore 的OSD 应该像运行着 FileStore 的 OSD 一样工作, 但是它们的性能可能会更好。