400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

ceph-deploy中osd模块有什么用

这篇文章主要为大家展示了“ceph-deploy中osd模块有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ceph-deploy中osd模块有什么用”这篇文章吧。

创新互联建站专注于永川网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供永川营销型网站建设,永川网站制作、永川网页设计、永川网站官网定制、微信小程序服务,打造永川网络公司原创品牌,更为您提供永川网站排名全网营销落地服务。

ceph-deploy源码分析——osd模块

ceph-deploy的osd.py模块是用来管理osd守护进程,主要是创建与激活OSD。

osd 子命令格式如下

ceph-deploy osd [-h] {list,create,prepare,activate} ...

OSD管理

make函数

osd函数,osd子命令list,create,prepare,activate分别对应的函数为osd_list、prepare、prepare、activate。

def osd(args):
    cfg = conf.ceph.load(args)
    if args.subcommand == 'list':
        osd_list(args, cfg)
    elif args.subcommand == 'prepare':
        prepare(args, cfg, activate_prepared_disk=False)
    elif args.subcommand == 'create':
        prepare(args, cfg, activate_prepared_disk=True)
    elif args.subcommand == 'activate':
        activate(args, cfg)
    else:
        LOG.error('subcommand %s not implemented', args.subcommand)
        sys.exit(1)


OSD列表

命令行格式为:ceph-deploy osd list [-h] HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL] …]

osd_list函数

创建OSD&准备OSD

创建OSD的命令行格式为:ceph-deploy osd create [-h] [–zap-disk] [–fs-type FS_TYPE] [–dmcrypt] [–dmcrypt-key-dir KEYDIR] [–bluestore] HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL] …]

准备OSD的命令行格式为:ceph-deploy osd prepare [-h] [–zap-disk] [–fs-type FS_TYPE] [–dmcrypt] [–dmcrypt-key-dir KEYDIR] [–bluestore] HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL] …]

prepare函数,参数activate_prepared_disk为True是创建OSD,为False是准备OSD

def prepare(args, cfg, activate_prepared_disk):
    LOG.debug(
        'Preparing cluster %s disks %s',
        args.cluster,
        ' '.join(':'.join(x or '' for x in t) for t in args.disk),
        )
    # 单台主机超过20个OSD,将会warning
    hosts_in_danger = exceeds_max_osds(args)
    if hosts_in_danger:
        LOG.warning('if ``kernel.pid_max`` is not increased to a high enough value')
        LOG.warning('the following hosts will encounter issues:')
        for host, count in hosts_in_danger.items():
            LOG.warning('Host: %8s, OSDs: %s' % (host, count))
    # 获取当前目录下的ceph.bootstrap-osd.keyring
    key = get_bootstrap_osd_key(cluster=args.cluster)
    bootstrapped = set()
    errors = 0
    for hostname, disk, journal in args.disk:
        try:
            if disk is None:
                raise exc.NeedDiskError(hostname)
            distro = hosts.get(
                hostname,
                username=args.username,
                callbacks=[packages.ceph_is_installed]
            )
            LOG.info(
                'Distro info: %s %s %s',
                distro.name,
                distro.release,
                distro.codename
            )
            if hostname not in bootstrapped:
                bootstrapped.add(hostname)
                LOG.debug('Deploying osd to %s', hostname)
                conf_data = conf.ceph.load_raw(args)
                # 配置写入/etc/ceph/ceph.conf
                distro.conn.remote_module.write_conf(
                    args.cluster,
                    conf_data,
                    args.overwrite_conf
                )
                # 创建并写入 /var/lib/ceph/bootstrap-osd/ceph.keyring
                create_osd_keyring(distro.conn, args.cluster, key)
            LOG.debug('Preparing host %s disk %s journal %s activate %s',
                      hostname, disk, journal, activate_prepared_disk)
            storetype = None
            if args.bluestore:
                storetype = 'bluestore'
            # 准备OSD
            prepare_disk(
                distro.conn,
                cluster=args.cluster,
                disk=disk,
                journal=journal,
                activate_prepared_disk=activate_prepared_disk,
                init=distro.init,
                zap=args.zap_disk,
                fs_type=args.fs_type,
                dmcrypt=args.dmcrypt,
                dmcrypt_dir=args.dmcrypt_key_dir,
                storetype=storetype,
            )
            # give the OSD a few seconds to start
            time.sleep(5)
            # 校验OSD状态,并将信息非正常状态信息写入warning
            catch_osd_errors(distro.conn, distro.conn.logger, args)
            LOG.debug('Host %s is now ready for osd use.', hostname)
            distro.conn.exit()
        except RuntimeError as e:
            LOG.error(e)
            errors += 1
    if errors:
        raise exc.GenericError('Failed to create %d OSDs' % errors)

prepare_disk函数

激活OSD

命令行格式为:ceph-deploy osd activate [-h] HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL] …]

activate函数

手工管理OSD

以ceph-231上磁盘sdb为例,创建osd。

创建OSD&准备OSD

准备OSD

[root@ceph-231 ~]# ceph-disk -v prepare --zap-disk --cluster ceph --fs-type xfs -- /dev/sdb

创建OSD多一个操作,设置ceph服务开机启动

[root@ceph-231 ~]# systemctl enable ceph.target

激活OSD

查看init

[root@ceph-231 ~]# cat /proc/1/comm
systemd

激活OSD

[root@ceph-231 ~]# ceph-disk -v activate --mark-init systemd --mount /dev/sdb1

设置ceph服务开机启动

[root@ceph-231 ~]# systemctl enable ceph.target

以上是“ceph-deploy中osd模块有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


当前名称:ceph-deploy中osd模块有什么用
文章起源:http://mzwzsj.com/article/jcopip.html

其他资讯

让你的专属顾问为你服务