In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-21 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >
Share
Shulou(Shulou.com)05/31 Report--
Editor to share with you the Ceph Jewel version of the third copy of the reading operation of the example analysis, I believe that most people do not know much about it, so share this article for your reference, I hope you will learn a lot after reading this article, let's go to know it!
1. Main OSD read processing flow
OSD::ms_fast_dispatch ()
| | _ OSD::dispatch_session_waiting () |
| | _ OSD::dispatch_op_fast () |
| | _ OSD::handle_op () |
| | _ _ OSD::get_pg_or_queue_for_pg () finds the corresponding PG and Pool information in OpRequest |
| | _ OSD::enqueue_op () |
| | _ PG::queue_op () |
| | _ _ OSD::ShardedThreadPool::ShardedWQ::queue () put PG and Op in the queue together |
OSD::ShardedOpWQ::_process () is responsible for handling Op in the OSD::ShardedThreadPool::ShardedWQ queue
| | _ _ PGQueueable::RunVis::operator () (const OpRequestRef & op) |
| | _ OSD::dequeue_op () |
| | _ ReplicatedPG::do_request () |
| | _ _ check whether the current PG is in flush or peering status. If so, put op in the waiting_for_peered queue and wait for PG to become available |
| | _ _ check whether the current PG is in Active state, and if not, put the op in the waiting_for_active queue |
| | _ _ check whether the current PG is in REPLAY status, and if so, put the op in the waiting_for_active queue |
| | _ ReplicatedPG::do_op () |
| | _ _ RepliatedPG::do_pg_op () CEPH_OSD_RMW_FLAG_PGOP the operation on PG that is included in the request |
| | _ _ create hobject_t class object (head) based on op request |
| | _ _ check whether object name length / object locator key length / object locator namespace length is greater than osd_max_object_name_len |
| | _ _ check whether the head of object is valid through FileStore |
| | _ _ check whether the op request address is in the blacklist of OSDMap |
| | _ _ for write requests, check whether the data size of the write request is greater than the osd_max_write_ size value |
| | _ _ if the head of the op request is currently unreadable, put the op in the waiting_for_unreadable_object queue and call the maybe_kick_recovery () function to try to start recovery |
| | _ _ ReplicatedPG::is_degraded_or_backfilling_object () checks whether the head requested by the current op is in recovery or backfill status |
| | _ _ ReplicatedPG::wait_for_degraded_object () puts the head of the current op request into the waiting_for_degraded_object queue |
| | _ _ check whether head is in the objects_blocked_on_degraded_snap queue, and if so, put the head of the current op request into the waiting_for_degraded_object queue |
| | _ _ check whether head is in the objects_blocked_on_snap_promotion queue, and if so, put the head of the current op request into the waiting_for_blocked_object queue |
| | _ _ check whether head is in the objects_blocked_on_cache_full queue, and if so, put the head of the current op request into the waiting_for_cache_not_full queue |
| | _ _ check whether the snapdir of head is unreadable. If so, put the snapdir of head into the waiting_for_unreadable_object queue and call the maybe_kick_recovery () function to try to start recovery. |
| | _ _ check whether the snapdir of head is in recovery or backfill status, and if so, put the snapdir of head into the waiting_for_degraded_object queue |
| | _ _ for op write request is already in PGLog, if the write operation has been completed, the MOSDOpReply message is returned directly to the client and CEPH_OSD_FLAG_ACK is set, otherwise the op is placed in the waiting_for_ack or waiting_for_ondisk queue |
| | _ _ ReplicatedPG::find_object_context () gets object context information |
| | _ _ check whether the object context is in io blocked state, and if so, put the op request into the waiting_for_blocked_object or waiting_for_degraded_object queue |
| | _ ReplicatedPG::execute_ctx () |
| | _ ReplicatedPG::prepare_transaction () |
| | _ _ create MOSDOpReply message instance |
| | _ _ call ReplicatePG::complete_read_ctx () to return the result of the read operation to the client |
The above is all the contents of the article "sample Analysis of three copies of the Ceph Jewel version". Thank you for reading! I believe we all have a certain understanding, hope to share the content to help you, if you want to learn more knowledge, welcome to follow the industry information channel!
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.