glusterfs分析-系列一:glusterfs整體分析
首先,熟悉整個業務流程前先了解下glusterfs的幾個程式功能以及相互之間的關係!
gluster :cli的命令執行工具,負責將glusterfs的請求傳遞給glusterd程序來執行;大家安裝後glusterfs後,執行gluster就會進入到該命令執行工具了;
glusterd:管理daemon程序,同時負責接收gluster傳送過來的請求並執行相應的操作,比如:呼叫glusterfsd來啟動brick服務;另外負責與其他主機上面的glusterd程序來同步資訊;
gusterfsd:服務程序,由glusterd程序啟動,並且根據卷配置資訊執行從glusterfs傳送過來的請求,同時也負責
glusterfs:客戶端的程序,根據卷配置資訊將fuse發過來的操作請求逐層傳遞到最底層的protocol/client的xlator上,該xlator通過rpc與glusterfs連線,將請求傳送到glusterfsd伺服器執行;
下面通過2個圖來說明上面幾個程序的具體關係;
1、程序:gluster、glusterd和glusterd之間的關係
圖1:
2、fuse、glusterfs和glusterfsd之間的關係(通過一個分散式複雜卷的方式來說明,為了突出重點,省略了部分xlator)
圖2:
然後,我們進一步熟悉下整個glusterfs
1、host的管理,比如:增加和刪除主機的相關處理,來實現擴容和縮容;
2、brick的管理,比如:新增和刪除brick的相關處理,來實現擴容和縮容;
3、資料的平衡等提高磁碟空間利用率相關處理;
4、副本的自我修復等可靠性處理;
5、檔案的讀寫等基本業務相關處理;
6、其他提升效能以及異常相關的處理;
其中,其中圖1主要是負責系統相關的一些處理流程;圖2主要是負責檔案的讀寫處理流程;應該說glusterfs的主要業務邏輯應該都在這裡了(小夥伴們是不是覺得其實還挺簡單的?),下面來詳細分析下整個
我們將業務邏輯從3個方面進行分析:
1、整個glusterfs的初始化過程;
2、整個glusterfs對於檔案的讀寫操作流程,即圖2的說明(也是glusterfs的核心);
3、整個glusterfs的命令操作流程,即圖1的說明;
相關推薦
glusterfs分析-系列一:glusterfs整體分析
首先,熟悉整個業務流程前先了解下glusterfs的幾個程式功能以及相互之間的關係! gluster :cli的命令執行工具,負責將glusterfs的請求傳遞給glusterd程序來執行;大家安裝後glusterfs後,執行gluster就會進入到該命令執行工具了;
WPF原始碼分析系列一:剖析WPF模板機制的內部實現(一)
眾所周知,在WPF框架中,Visual類是可以提供渲染(render)支援的最頂層的類,所有視覺化元素(包括UIElement、FrameworkElment、Control等)都直接或間接繼承自Visual類。一個WPF應用的使用者介面上的所有視覺化元素一起組成了一個視覺化樹(visual tree),任何
WPF原始碼分析系列一:剖析WPF模板機制的內部實現(五)
(注:本文是《剖析WPF模板機制的內部實現》系列文章的最後一篇文章,檢視上一篇文章請點這裡) 上一篇文章我們討論了DataTemplate型別的兩個重要變數,ContentControl.ContentTemplate和ContentPresenter.ContentTemplate,這一篇將討論這個型別的另
小波分析筆記一:小波產生的背景和歷史
小波分析最近在看哈工大教授冉啟文的小波分析的視頻,講的非常好,推薦給大家。這裏是第一講筆記。第一講:小波產生的背景和歷史一、“點”的概念(重要) 1、以前我們認為在一維空間,點就是一個數;在二維空間,點就是兩個數(x,y),N維空間的點 (x0,x1...xn)以此類推。 2、線性代數
tornado源碼分析系列一
python tornado 異步 先來看一個簡單的示例:#!/usr/bin/env python #coding:utf8 import socket def run(): sock = socket.socket(socket.AF_INET, socket.SOCK_STR
Java內存泄漏分析系列之一:使用jstack定位線程堆棧信息
技術分享 對象 rgs 沒有 參數 導致 dump 單獨 src 原文地址:http://www.javatang.com 前一段時間上線的系統升級之後,出現了嚴重的高CPU的問題,於是開始了一系列的優化處理之中,現在將這個過程做成一個系列的文章。 基本概念 在對Jav
分析系列之一:使用jstack定位執行緒堆疊資訊
基本概念 在對Java記憶體洩漏進行分析的時候,需要對jvm執行期間的記憶體佔用、執行緒執行等情況進行記錄的dump檔案,常用的主要有thread dump和heap dump。 thread dump 主要記錄JVM在某一時刻各個執行緒執行的情況,以棧的形式顯示,是一個文字檔案。通過
Spring Security原始碼分析十一:Spring Security OAuth2整合JWT
Json web token (JWT), 是為了在網路應用環境間傳遞宣告而執行的一種基於JSON的開放標準(RFC 7519).該token被設計為緊湊且安全的,特別適用於分散式站點的單點登入(SSO)場景。JWT的宣告一般被用來在身份提供者和服務提供者
資料結構與演算法學習筆記一:複雜度分析
一、為什麼要進行復雜度分析 資料結構是用來解決“快”和“省”的問題,也就是如何是程式碼執行更快以及如何節省更多的空間。因此執行效率在演算法中就是一個非常重要的考核指標。時間、空間複雜度分析就是用來衡量一個演算法程式碼的執行效率的指標。複雜度分析在資料結構和演算法中佔
Glide 系列-2:主流程原始碼分析(4.8.0)
Glide 是 Android 端比較常用的圖片載入框架,這裡我們就不再介紹它的基礎的使用方式。你可以通過檢視其官方文件學習其基礎使用。這裡,我們給出一個 Glide 的最基本的使用示例,並以此來研究這個整個過程發生了什麼: Glide.with(fragment).load(myU
專案一:EXCEL資料分析(5W2H法):使用者購買行為分析
專案:用EXCEL對使用者購買行為進行分析---採用5W2H框架 1.確定分析思路 1.1使用者購買行為分析:5W2 WHY:使用者購買的目的是什麼?---市場調查獲取資料 WHAT:使用者主要購買的產品?---各產品的銷量分佈
keystone系列五:keystone原始碼分析
六 keystone架構 6.1 Keystone API Keystone API與Openstack其他服務的API類似,也是基於ReSTFul HTTP實現的。 Keystone API劃分為Admin API和Public API: Public API不僅實現獲取版本以及相應擴充
ABP原始碼分析十一:Timing
Timing這個簡單實用的功能主要用於以統一的方式表示時間。因為ABP中有大量的module,還支援自定義module,所以將時間統一表示為local時間(預設)或utc時間是必要的。 IClockProvider:提供獲取當前時間和標準化時間的介面。 UtcClockProvider:實現了以UTC
MyBatis架構設計及原始碼分析系列(一):MyBatis架構
如果不太熟悉MyBatis使用的請先參見MyBatis官方文件,這對理解其架構設計和原始碼分析有很大好處。 一、概述 MyBatis並不是一個完整的ORM框架,其官方首頁是這麼介紹自己 The MyBatis data mapper framework makes i
Docker原始碼分析(一)之整體架構圖
一、Docker的總架構圖 docker是一個C/S模式的架構,後端是一個鬆耦合架構,模組各司其職。 使用者是使用Docker Client與Docker Daemon建立通訊,併發送請求給後者
USB分析(一):中斷函式分析
USB中斷函式分析: __usb_device_interrupt_handler() 首先看下暫存器: Common Device Host Registers Device Registers - Endpoint 1、讀取中斷埠暫存器
Vue專案原始碼分析系列一
Vue相關的基礎知識我們已經介紹了不少,官網也有很詳細的使用說明,那麼從本篇文章開始,我會陸續為大家介紹一款開源的Vue專案。首先感謝唐崗在github上分享的“基於vue.js重寫Cnodejs.org社群的webapp”,原始碼地址如下:https://github.com/shinygang/Vue
webpack漸入佳境系列一:webpack環境配置與打包基礎【附帶各種 "坑" 與解決方案!持續更新中...】
utf 環境配置 lan 配置 要求 完全 需要 構建 樣式 首先介紹傳統模塊化開發的主流方案: 1.基與CMD的sea.js,玉伯提出的解決方案,據說原來京東團隊在使用。用時才定義,就近加載。最近在瀏覽seajs官方文檔時發現seajs的域名已經在轉賣,驚恐萬分之余又想
sed修煉系列(一):花拳繡腿之入門篇
由於 ... 我會 沖突 mic 區別 comm aud 追上 本文為花拳繡腿招式入門篇,主要目的是入門,為看懂sed修煉系列(二):武功心法做準備。雖然是入門篇,只介紹了基本工作機制以及一些選項和命令,但其中仍然包括了很多sed的工作機制細節。對比網上各sed相關文章以及
Linux Kernel系列一:開篇和Kernel啟動概要
mis misc 跳轉 line global 最終 width lin 通過 前言 最近幾個月將Linux Kernel的大概研究了一下,下面需要進行深入詳細的分析。主要將以S3C2440的一塊開發板為硬件實體。大概包括如下內容: 1 bootloader分析,以uboo