很多人会提出这样的问题:

  • 能不能够将 Ceph journal 分区从一个磁盘替换到另一个磁盘?
  • 怎样替换 Ceph 的 journal 分区?

有两种方法来修改Ceph的journal:

  • 创建一个journal分区,在上面创建一个新的journal
  • 转移已经存在的journal分区到新的分区上,这个适合整盘替换

Ceph 的journal是基于事务的日志,所以正确的下刷journal数据,然后重新创建journal并不会引起数据丢失,因为在下刷journal的数据的时候,osd是停止的,一旦数据下刷后,这个journal是不会再有新的脏数据进来的

第一种方法

在开始处理前,最开始要设置OSD状态为noout

[root@lab8106 ~]# ceph osd set noout
set noout

停止需要替换journal的osd(这里是osd.1)

[root@lab8106 ~]# systemctl stop ceph-osd@1

我的版本是jewel的,如果是hammer版本,就使用 /etc/init.d/ceph stop osd.1

下刷journal到osd,使用 -i 指定需要替换journal的 osd的编号

[root@lab8106 ~]# ceph-osd -i 1 --flush-journal
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 01 cf 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 01 cf 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2016-07-26 22:47:20.185292 7fc54a6c3800 -1 flushed journal /var/lib/ceph/osd/ceph-1/journal for object store /var/lib/ceph/osd/ceph-1

创建一个新的journal

删除原来的journal

[root@lab8106 ~]# ll /var/lib/ceph/osd/ceph-1/journal
lrwxrwxrwx 1 ceph ceph 58 Jul 25 09:25 /var/lib/ceph/osd/ceph-1/journal -> /dev/disk/by-partuuid/872f8b40-a750-4be3-9150-033b990553f7
[root@lab8106 ~]# rm -rf /var/lib/ceph/osd/ceph-1/journal

准备一个新的分区

我的环境准备使用/dev/sdd1,分区大小为10G,这个注意磁盘大小比参数设置的要大一点即可

[root@lab8106 ~]# ls -l /dev/disk/by-partuuid/
total 0
lrwxrwxrwx 1 root root 10 Jul 25 14:25 4766ce93-a476-4e97-9aac-894d461b367e -> ../../sdb2
lrwxrwxrwx 1 root root 10 Jul 26 22:51 5bb48687-6be6-4aef-82f6-5af822c3fad8 -> ../../sdd1
lrwxrwxrwx 1 root root 10 Jul 26 22:47 872f8b40-a750-4be3-9150-033b990553f7 -> ../../sdc2

我的新的journal的uuid的路径为 /dev/disk/by-partuuid/5bb48687-6be6-4aef-82f6-5af822c3fad8

将这个磁盘的分区链接到原始路径

[root@lab8106 ~]# ln -s /dev/disk/by-partuuid/5bb48687-6be6-4aef-82f6-5af822c3fad8 /var/lib/ceph/osd/ceph-1/journal
[root@lab8106 ~]# chown ceph:ceph /var/lib/ceph/osd/ceph-1/journal
[root@lab8106 ~]# echo 5bb48687-6be6-4aef-82f6-5af822c3fad8 > /var/lib/ceph/osd/ceph-1/journal_uuid

创建journal

[root@lab8106 ~]# ceph-osd -i 1 --mkjournal

启动进程

[root@lab8106 ~]# systemctl restart ceph-osd@1

去除 noout 的标记

[root@lab8106 ~]# ceph osd unset noout

启动后检查集群的状态

第二种方法

这个属于备份和转移分区表的方法

首先进行上面方法的停进程,下刷journal

备份需要替换journal的分区表

[root@lab8106 ~]# sgdisk --backup=/tmp/backup_journal_sdd /dev/sdd

还原分区表

[root@lab8106 ~]# sgdisk --load-backup=/tmp/backup_journal_sde /dev/sde
[root@lab8106 ~]# parted -s /dev/sde print

新的journal磁盘现在跟老的journal的磁盘的分区表一样的了。这意味着新的分区的UUID和老的相同的。如果选择的是这种备份还原分布的方法,那么journal的那个软连接是不需要进行修改的,因为两个磁盘的uuid是一样的,所以需要注意将老的磁盘拔掉或者清理掉分区,以免冲突

在做完这个以后同样跟上面的方法一样需要重建journal

创建journal

[root@lab8106 ~]# chown ceph:ceph /var/lib/ceph/osd/ceph-1/journal
[root@lab8106 ~]# ceph-osd -i 1 --mkjournal

启动进程

[root@lab8106 ~]# systemctl restart ceph-osd@1

去除 noout 的标记

[root@lab8106 ~]# ceph osd unset noout

变更记录

Why Who When
创建 武汉-运维-磨渣 2016-07-27

如何替换Ceph的Journal的更多相关文章

  1. 影响性能的关键部分-ceph的osd journal写

    在前面一篇文章中,我们看到,当使用filestore时,osd会把磁盘分成data和journal两部分.这主要是为了支持object的transaction操作.我的想法是,ceph需要具有数据保护 ...

  2. Ceph 概述和理论

    1.1 Ceph概述 官网地址:https://docs.ceph.com/docs/master/ 1.Ceph简介 概述:Ceph是可靠的.可扩展的.统一的.分布式的存储系统.同时提供对象存储RA ...

  3. ceph luminous版本的安装部署

    1. 前期准备   本次安装环境为:   ceph1(集群命令分发管控,提供磁盘服务集群) CentOs7.5 10.160.20.28   ceph2(提供磁盘服务集群) CentOs7.5 10. ...

  4. The Dos and Don'ts for Ceph for OpenStack

    Ceph和OpenStack是一个非常有用和非常受欢迎的组合. 不过,部署Ceph / OpenStack经常会有一些容易避免的缺点 - 我们将帮助你解决它们 使用 show_image_direct ...

  5. ceph 分布式存储安装

    [root@localhost ~]# rm -rf /etc/yum.repos.d/*.repo 下载阿里云的base源 [root@localhost ~]# wget -O /etc/yum. ...

  6. linux运维基础知识-系统分区及LVM逻辑卷的创建

    系统分区及LVM逻辑卷的创建 分区 创建逻辑卷 LVM简介:逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,如图 ...

  7. ceph使用memdisk做journal

    记得在很久很久以前,ceph当时的版本是有提供使用内存做journal的配置的,当时是使用的tmpfs,但是现在的版本在搜资料的时候,发现关于这个的没怎么找到资料,邮件列表里面有人有提到怎么做,看了下 ...

  8. ceph journal操作

    查询ceph journal的地方 ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | grep osd_journal & ...

  9. ceph journal更换位置

    只在这里做简单的演示 ceotos7 环境 3个mon节点 3个osd节点 环境搭建我这里不再叙述 我们查看一下分区情况: [root@ceph_1 ~]# lsblkNAME        MAJ: ...

随机推荐

  1. Jetson AGX Xavier部署ORB_SLAM2(ROS)

    1. 修改CMakeLists.txt Examples/ROS/ORB_SLAM2下的CMakeLists.txt 原 set(LIBS ${OpenCV_LIBS} ${EIGEN3_LIBS} ...

  2. 四年了自学了C/C++那么久,还写不出项目,正常吗?

    前言: 这是之前在V2EX职场话题里看到的一个话题,类似的小编身边人呢也有相似的困扰. 现在大学里基本都开设了计算机课程,看了那么多相关知识性的书,但学了四年出来,仍然写不出项目,这肯定是有问题的. ...

  3. Linux系统编程—信号捕捉

    前面我们学习了信号产生的几种方式,而对于信号的处理有如下几种方式: 默认处理方式: 忽略: 捕捉. 信号的捕捉,说白了就是抓到一个信号后,执行我们指定的函数,或者执行我们指定的动作.下面详细介绍两个信 ...

  4. spring boot:使用分布式事务seata(druid 1.1.23 / seata 1.3.0 / mybatis / spring boot 2.3.2)

    一,什么是seata? Seata:Simpe Extensible Autonomous Transcaction Architecture, 是阿里中间件开源的分布式事务解决方案. 前身是阿里的F ...

  5. swoole创建进程

    <?php /** * Created by PhpStorm. * User: mac * Date: 2020/4/23 * Time: 21:57 */ use Swoole\Proces ...

  6. Seaborn系列 | 散点图scatterplot()

    散点图 解读 可以通过调整颜色.大小和样式等参数来显示数据之间的关系. 函数原型 seaborn.scatterplot(x=None, y=None, hue=None, style=None, s ...

  7. Helium文档3-WebUI自动化-click点击

    前言 click点击方法在web UI自动化中使用频率非常高,此方法就是模拟鼠标左键单击动作 click入参说明 1.首先我们来分析一下click方法的代码 click(element):   &qu ...

  8. docker是个啥?

    docker 第一问:什么是容器 容器就是在一个隔离的环境中运行的一个进程.注意关键词,隔离和进程.如果进程停止,那么容器就销毁.因为具有隔离的特点,所以每个容器都拥有自己的文件系统:包括IP地址.主 ...

  9. Docker学习—概念及基本应用

    1.Doker基本概念: Docker架构: Docker使用客户端-服务器架构.Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作  相关描 ...

  10. svnsync笔记

    svnsync从库配置 1.创建空的从库 root@test: /svn # svnadmin create test 2.从库用户配置 修改authz : [groups] sync = sync ...