天天看點

cephfs(測ph為什麼要從稀到濃)

openstack為什麼需要整合ceph

Ceph 是一個符合 POSIX (Portable Operating System for UNIX®)、開源的分布式存儲系統,依據 GNU 次通用公共許可而運作。該項目最初由 Sage Weill 于 2007 年開發,該項目的理念是提出一個沒有任何單點故障的叢集,確定能夠跨叢集節點進行永久資料複制。

與在任何經典的分布式檔案系統中一樣,放入叢集中的檔案是條帶化的,依據一種稱為 Ceph Controlled Replication Under Scalable Hashing (CRUSH) 的僞随機的資料分布算法放入叢集節點中。

Ceph 是一種有趣的存儲替代方案,這得益于它實作的一些概念,比如中繼資料分區,以及一種複制或放置組政策(将一系列對象聚合到一個分組中,然後将該分組映射到一系列對象存儲背景程序 (OSD))。

這些特性支援自動擴充、恢複和自主管理叢集,因為他們使用以下綁定(在不同的級别上)提供了與您的 Ceph 叢集的互動方式:

Reliable Autonomic Distributed Object Store (RADOS) 網關是一種 RESTful 接口,您的應用程式可與其通信,以便将對象直接存儲在叢集中。

librados 庫是一種通路 RADOS 的便利方式,它支援 PHP、Ruby、Java™、Python 和 C/C++ 程式設計語言。

Ceph 的 RADOS 塊裝置 (RBD) 是一個完全分布式的塊裝置,它使用一個 Linux® 核心和一個 Quick EMUlator (QEMU)/基于核心的虛拟機 (KVM) 驅動程式。

原生 CephFS 是一個分布式檔案系統,全面支援 Filesystem in Userspace (FUSE)。

如 圖 1 中所示,Ceph 生态系統可分解為 5 個組成部分:

librados 庫

RADOS 網關

CephFS

叢集中的各種節點

圖 1. Ceph 生态系統

Ceph 生态系統原生支援許多與其互動的方式,這使得在已運作的基礎架構中內建它變得既輕松又便捷,即使它執行的是一個在統一項目檔案中提供塊和對象存儲功能的複雜任務。

接下來我們來看一下組成 Ceph 的各個部分以及它們在 Ceph 中分别扮演的角色。

RADOS 對象存儲

圖 1 表明 RADOS 對象存儲是存儲叢集的基礎。對于通過衆多用戶端或網關(RADOSGW、RBD 或 CephFS)執行的每個操作,資料會進入 RADOS 或者可以從中讀取資料。圖 2 顯示了 RADOS 叢集,它包含兩個背景守護程序:Ceph 對象存儲背景程序 (OSD) 和維護叢集映射的主要副本的 Ceph 螢幕。

圖 2. The RADOS 對象存儲

叢集映射描述了對象塊的實體位置,以及一個将裝置聚合到實體位置的 “桶” 清單。該映射由 Ceph 的進階放置算法控制,該算法在實體位置上模組化邏輯位置。圖 3 描繪了叢集内的 “池”,即存儲對象的邏輯分區。每個池被動态映射到 OSD。

圖 3. RADOS 位置分組

現在讓我們看看第一組背景程序 OSD,然後再看看螢幕,最後看看屬于 CephFS 分布式檔案系統的 Ceph 中繼資料伺服器。

OSD 是通路檔案系統并向其中寫入資料的背景程序,它提供了通過叢集網絡通路檔案系統的能力。要讓叢集正常運作,Ceph 開發人員建議使用 XFS(Silicon Graphics 日志檔案系統)或 B 樹檔案系統 (Btrfs) 作為用于對象存儲的檔案系統。也可使用第 4 代擴充檔案系統 (ext4),但它未提供 XFS 和 Btrfs 為 Ceph 提供的功能。

cephfs bluestore檔案寫進哪裡