本文由Ceph中国社区-LittleWindSXF 翻译、小猴子校稿。
英文出处:Chown Ceph OSD data directory using GNU Parallel欢迎加入CCTG
在Ceph的Jewel(10.2.X)版本之前,守护进程都是运行在根用户root之下,这是一个潜在的安全隐患。因此在Jewel中,所有守护进程(MON和OSD)都使用特权用户ceph来运行。
这意味着使用Jewel版本的代码时,要求运行daemon必须改变数据的所有权。
chown命令
正如Release Notes中所表述的,你必须把/var/lib/ceph/中所有数据的所有权改变为ceph:ceph。
1 |
chown -R <span class="hljs-string" style="color:#DD1144;line-height:1.6;">ceph:</span>ceph <span class="hljs-regexp" style="color:#009926;line-height:1.6;">/var/</span>lib/ceph |
在多OSD系统中这相当费时,使用GNU Parallel可以节省很多时间。
静态UID
在主要的Linux发行版中,ceph用户及用户组都已经被指定了静态UID和GIDs:
- Fedora/CentOS/RHEL: 167:167
- Debian/Ubuntu: 64045/64045
在parallel中使用chown命令
可以在parallel中使用以下指令来改变/var/lib/ceph中数据的所有权,这样速度快得多。
警告:开始前请确保系统中所有OSD都停止运行。
现在可以运行以下指令(以Ubuntu为例)
1 2 3 |
find /var/lib/ceph/osd -maxdepth <span class="hljs-number" style="color:teal;line-height:1.6;">1</span> -mindepth <span class="hljs-number" style="color:teal;line-height:1.6;">1</span> -type d|parallel chown -R <span class="hljs-number" style="color:teal;line-height:1.6;">64045</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">64045</span> chown <span class="hljs-number" style="color:teal;line-height:1.6;">64045</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">64045</span> /var/lib/ceph chown <span class="hljs-number" style="color:teal;line-height:1.6;">64045</span>:<span class="hljs-number" style="color:teal;line-height:1.6;">64045</span> /var/lib/ceph<span class="hljs-comment" style="color:#999988;font-style:italic;line-height:1.6;">/* chown 64045:64045 /var/lib/ceph/bootstrap-*/</span>* |
第一条指令花费的时间最长。我在一个有24个OSD,包含800GB数据的系统中测试过,耗时约20分钟。
原作者:Wido den Hollander,PCextreme B.V的CTO,他的个人博客用来发布平时工作中一些有趣的信息。