osd

ceph体系架构总览

橙三吉。 提交于 2020-11-21 15:16:20
一、功能划分 Ceph 的提供了一个根据 RADOS 无限扩展的 Ceph 存储集群,相关内容你可以参阅 REDOS- 一个可伸缩的、可靠的存储服务 PB 级别存储集群。存储集 群客户端和每个 Ceph 的 OSD 守护进程使用 CRUSH 算法有效地计算有关数据位置的信息,而不必依赖于一个查找表。 Ceph 的高层次功能包括 Ceph 的 存储集群,通过 librados 提供了一个原生接口,在 librados 基础上建立一些服务接口。 对应的进程 Monitors 监视器( ceph-mon ), OSDs 对象存储设备( ceph-osd ) , 通过读取配置文件 ceph.conf 实现集群。 1.1 OSD 功能 OSD 可以被抽象为两个组成部分,即系统部分和守护进程( OSD deamon )部分。 OSD 的系统部分本质上就是一台安装了操作系统和文件系统的计算机,其硬件部分至少包括一个单核的处理器、一定数量的内存、一块硬盘以及一张网卡。系统部分由操作系统内核实现,为 ceph 提供接口。 在 RADOS 的运行过程中, cluster map 的更新完全取决于系统的状态变化,而导致这一变化的常见事件只有两种: OSD 出现故障,或者 RADOS 规模扩大。 Cluster Maps 指包含所有的 Map : OSD map,monitor map,placement

cgroup在ceph中的应用(4)

牧云@^-^@ 提交于 2020-04-07 12:40:06
节点cpu和内存节点查看 准备配置文件 编辑/etc/cgconfig.conf 注意mon和osd部分根据实际情况进行增加 以下为配置文件 mount { cpu = /sys/fs/cgroup/cpu; cpuacct = /sys/fs/cgroup/cpuacct; cpuset = /sys/fs/cgroup/cpu; devices = /sys/fs/cgroup/devices; memory = /sys/fs/cgroup/memory; freezer = /sys/fs/cgroup/freezer; } group mon { perm { task { uid = root; gid = root; } admin { uid = root; gid = root; } } cpu { cpuset.cpus = 0; cpuset.mems = 0; } memory { memory.limit_in_bytes = 2g; memory.memsw.limit_in_bytes = 3g; memory.soft_limit_in_bytes = 1g; memory.swappiness = 0; memory.oom_control = 1; memory.failcnt = 1; } } group osd0 { perm { task

cgroup在ceph中的应用(1)

♀尐吖头ヾ 提交于 2020-04-07 12:10:40
一、 Cgroup介绍 Cgroup是什么 Cgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由google的工程师提出,后来被整合进Linux内核。Cgroups也是LXC为实现虚拟化所使用的资源管理手段,可以说没有cgroups就没有LXC。 Cgroup能做什么 Cgroups最初的目标是为资源管理提供的一个统一的框架,既整合现有的cpuset等子系统,也为未来开发新的子系统提供接口。现在的cgroups适用于多种应用场景,从单个进程的资源控制,到实现操作系统层次的虚拟化(OS Level Virtualization)。Cgroups提供了一下功能: 限制进程组可以使用的资源数量(Resource limiting )。比如:memory子系统可以为进程组设定一个memory使用上限,一旦进程组使用的内存达到限额再申请内存,就会出发OOM(out of memory)。 进程组的优先级控制(Prioritization )。比如:可以使用cpu子系统为某个进程组分配特定cpu share。 记录进程组使用的资源数量(Accounting )。比如:可以使用cpuacct子系统记录某个进程组使用的cpu时间 进程组隔离

Jewel OSD进程启动处理流程

不想你离开。 提交于 2019-12-06 21:07:52
OSD::main() |__ObjectStore::create() |__调用FileStore构造函数创建FileStore类对象 |__MonClient::build_initial_monmap() 从配置文件中读取monitor map信息 |__OSD::mkfs() |__FileStore::mkfs() |__在/var/lib/ceph/osd/ceph-${id}/目录下生成fsid文件 |__在/var/lib/ceph/osd/ceph-${id}/目录下创建version_stamp文件 |__在/var/lib/ceph/osd/ceph-${id}/目录下创建superblock文件 |__在/var/lib/ceph/osd/ceph-${id}/目录下创建current文件夹 |__在/var/lib/ceph/osd/ceph-${id}/current/目录下创建commit_op_seq文件且初始化该文件的内容为1 |__在/var/lib/ceph/osd/ceph-${id}/current/omap/目录下创建osd_uuid文件(current/omap目录是OSD omap的工作目录) |__FileStore::mkjournal() |__FileStore::new_journal() |__FileJournal(

Ceph Jewel版本三副本读操作流程

谁说胖子不能爱 提交于 2019-11-27 08:04:39
一、主OSD读处理流程 OSD::ms_fast_dispatch() |__OSD::dispatch_session_waiting() |__OSD::dispatch_op_fast() |__OSD::handle_op() |__OSD::get_pg_or_queue_for_pg() 找到OpRequest中对应的PG和Pool信息 |__OSD::enqueue_op() |__PG::queue_op() |__OSD::ShardedThreadPool::ShardedWQ::queue() 将PG和Op一起放入队列中 OSD::ShardedOpWQ::_process() 负责处理OSD::ShardedThreadPool::ShardedWQ队列中的Op |__PGQueueable::RunVis::operator()(const OpRequestRef &op) |__OSD::dequeue_op() |__ReplicatedPG::do_request() |__检查当前PG是否处于flush或peering状态,若是则将op放入waiting_for_peered队列中等待PG变成可用状态 |__检查当前PG是否处于Active状态,若不是则将op放入waiting_for_active队列中 |_

Ceph Jewel版本三副本写操作流程

十年热恋 提交于 2019-11-27 08:04:25
一、主OSD写处理流程 OSD::ms_fast_dispatch() |__OSD::dispatch_session_waiting() |__OSD::dispatch_op_fast() |__OSD::handle_op() |__OSD::get_pg_or_queue_for_pg() 找到OpRequest中对应的PG和Pool信息 |__OSD::enqueue_op() |__PG::queue_op() |__OSD::ShardedThreadPool::ShardedWQ::queue() 将PG和Op一起放入队列中 OSD::ShardedOpWQ::_process() 负责处理OSD::ShardedThreadPool::ShardedWQ队列中的Op |__PGQueueable::RunVis::operator()(const OpRequestRef &op) |__OSD::dequeue_op() |__ReplicatedPG::do_request() |__检查当前PG是否处于flush或peering状态,若是则将op放入waiting_for_peered队列中等待PG变成可用状态 |__检查当前PG是否处于Active状态,若不是则将op放入waiting_for_active队列中 |_