㈠ ceph已有image怎麼更改feature
1.首先使用rbd -p <pool-name> info <image-name>來查看你當前image的features
2.使用rbd feature enable exclusive-lock -p <pool-name> --image <image-name>可以修改feature,其中deep-flatten無法修改,只能創建image的時候增加該feature。
"features_name": [
"deep-flatten",
"exclusive-lock",
"fast-diff",
"layering",
"object-map"
㈡ 關於ceph rgw storage_class 的使用研究(amazon S3 智能分層 )
為什麼要研究這個?
因為rgw 沒找到橫向擴容的比較好的辦法。有些人是在rgw 上層再加一個接入層,在上面加數據記錄。比如一個「虛擬大bucket」,對應了下面多個集群的多個 bucket 。
無論哪一種辦法,都要增加額外的元數據管理系統。
看到amazon 的這個 storage class 被ceph rgw (Nautilus)支持後
我打算研究一下利用這個新功能做到幾件事
1 橫向 在bucket 下擴pool
2 通過 bucket 下同時支持多個 pool,提高讀寫吞吐。
3 利用 生命周期。前置ssd pool 。達到時間後把對象遷移到後面的廉價 COLD pool 比如 大容量sata 。
ceph 官網文檔 地址 https://docs.ceph.com/docs/master/radosgw/placement/
這個功能 amazon s3 在 2018年推出
發布於: Nov 26, 2018
S3 智能分層是一種新的 Amazon S3 存儲類,專為希望在數據訪問模式發生變化時自動優化存儲成本而不會影響性能或運營開銷的客戶而設計。S3 智能分層是第一個雲對象存儲類,通過在訪問模式發生變化時在兩個訪問層(頻繁訪問層和不頻繁訪問層)之間移動數據來實現自動節省成本,非常適用於訪問模式未知或不斷變化的數據。
ceph 官方在rgw Nautilus 版本中引入
首先說說 palcement 和 storage class 的區別
placement 是指 bucket 的放置屬性 ,storage class 是bucket 內每個對象的放置屬性。
placement 下面默認有個標准層 STANDARD 他對應的pool 默認default.rgw.buckets.data (這個pool 可修改為你想存放的 pool,)
"STANDARD": {
"data_pool": 「default.rgw.buckets.data」
每個 placemetn 都有個 STANDARD
你可以 添加自定義分層 比如 COLD 不只限於一個。可以多個。
上圖是我測試的placement 加的2個class。 可以分別對應不同的pool 。
pool 可以根據你的需要新建在不同的設備上 比如 ssd sas sata
根據我們以前的測試結果
bucket ==> placement storage class ==>pool
創建bucket 通過指定 placement 制定了 放置池組
PUT 對象時候 可以制定 storage_class 指定具體的pool
下面說說具體做法 ,我就在默認 的 default-placement操作測試
根據官網命令 To add a new storage class named COLD to the default-placement target, start by adding it to the zonegroup
先在 zonegroup 加入 tag
1)
$ radosgw-admin zonegroup placement add
--rgw-zonegroup default
--placement-id default-placement
--storage-class COLD
2)zone 中加入 具體 pool 官網例子加上了壓縮。這個可以根據需要配置是否加上
radosgw-admin zone placement add
--rgw-zone default
--placement-id default-placement
--storage-class COLD
--data-pool default.rgw.cold.data
--compression lz4
結果如下
placement_pools": [
{
"key": "default-placement」,
"val": {
"index_pool": 「default.rgw.buckets.index」,
"storage_classes": {
我們用 s3cmd 測試上傳
對我的 測試placement 做put 文件測試 (這里我用自定義 的placemet 做測試
指定 -storage-class=TEMPCOLD
s3cmd put cirros-0.3.5-x86_64-disk.img s3://bucket2/clodtest1 --storage-class=TEMPCOLD
upload: 'cirros-0.3.5-x86_64-disk.img' -> ' s3://bucket2/clodtest1' [1 of 1]
s3cmd info s3://bucket2/clodtest1
s3://bucket2/clodtest1 (object):
File size: 13267968
Last mod: Sun, 29 Mar 2020 07:03:34 GMT
MIME type: application/octet-stream
Storage: TEMPCOLD
MD5 sum:
如果不加參數
s3cmd put cirros-0.3.5-x86_64-disk.img s3://bucket2/clodtest3
upload: 'cirros-0.3.5-x86_64-disk.img' -> ' s3://bucket2/clodtest3' [1 of 1]
13267968 of 13267968 100% in 0s 27.25 MB/s done
數據會落在 STANDARD
s3://bucket2/clodtest3 (object):
File size: 13267968
Last mod: Sun, 29 Mar 2020 07:06:24 GMT
MIME type: application/octet-stream
Storage: STANDARD
經過測試 讀數據不需要知道對象屬於哪一個 Storage
。
=====
官方說明
所有放置目標都有一個STANDARD存儲類,默認情況下該存儲類適用於新對象。用戶可以使用覆蓋此默認設置 default_storage_class。
要在非默認存儲類中創建對象,請在請求的HTTP標頭中提供該存儲類名稱。S3協議使用 X-Amz-Storage-Class標頭,而Swift協議使用 X-Object-Storage-Class標頭。
結論:
1
如果需要 提高性能。可以同時在一個placement 下加入多個 Storage 對應多個 pool。 客戶端寫數據的時候可以均衡指定 storage-class
具體可以參考s3 api .
或者可以在nginx 接入層做 靈活的指定 X-Amz-Storage-Class (對多個 storage-class 做自定義輪詢或者打開關閉)
2
如果需要在pool 將近滿了。可以新增一個 storage-class。 客戶端讀寫 指定到新的 storage-class。
3
如果需要用ssd 加速。可以 用ssd pool 作為STANDARD
用 廉價 sata 作為 COLD 進行遷移。 具體要研究 Lifecycle 的設置
我這里就沒時間做測試了。
目前我測試的 ceph 是 14.2.5. 不是最新。 感覺這個功能還有寫莫名其妙的情況。
建議各位有需要的可以做大規模的測試。
㈢ ceph和cephfs是一個概念么
首先Ceph和CephFS不是一個概念
Ceph是分布式文件存儲系統,裡面提供了對象存儲,塊存儲和文件系統,這個文件系統也就是CephFS。所以Ceph包括了CephFS。
㈣ 如何在 CentOS 7.0 上配置 Ceph 存儲
Ceph 是一個將數據存儲在單一分布式計算機集群上的開源軟體平台。當你計劃構建一個雲時,你首先需要決定如何實現你的存儲。開源的 Ceph 是紅帽原生技術之一,它基於稱為 RADOS 的對象存儲系統,用一組網關 API 表示塊、文件、和對象模式中的數據。由於它自身開源的特性,這種便攜存儲平台能在公有雲和私有雲上安裝和使用。Ceph 集群的拓撲結構是按照備份和信息分布設計的,這種內在設計能提供數據完整性。它的設計目標就是容錯、通過正確配置能運行於商業硬體和一些更高級的系統。
Ceph 能在任何 Linux 發行版上安裝,但為了能正確運行,它需要最近的內核以及其它最新的庫。在這篇指南中,我們會使用最小化安裝的 CentOS-7.0。
系統資源
**CEPH-STORAGE**
OS:CentOSLinux7(Core)
RAM:1 GB
CPU:1 CPU
DISK:20
Network:45.79.136.163
FQDN: ceph-storage.linoxide.com
**CEPH-NODE**
OS:CentOSLinux7(Core)
RAM:1 GB
CPU:1 CPU
DISK:20
Network:45.79.171.138
FQDN: ceph-node.linoxide.com
安裝前的配置
在安裝 Ceph 存儲之前,我們要在每個節點上完成一些步驟。第一件事情就是確保每個節點的網路已經配置好並且能相互訪問。
配置 Hosts
要在每個節點上配置 hosts 條目,要像下面這樣打開默認的 hosts 配置文件(LCTT 譯註:或者做相應的 DNS 解析)。
#vi/etc/hosts
45.79.136.163 ceph-storage ceph-storage.linoxide.com
45.79.171.138 ceph-node ceph-node.linoxide.com
安裝 VMware 工具
工作環境是 VMWare 虛擬環境時,推薦你安裝它的 open VM 工具。你可以使用下面的命令安裝。
#yum install -y open-vm-tools
配置防火牆
如果你正在使用啟用了防火牆的限制性環境,確保在你的 Ceph 存儲管理節點和客戶端節點中開放了以下的埠。
你必須在你的 Admin Calamari 節點開放 80、2003、以及4505-4506 埠,並且允許通過 80 號埠訪問到 Ceph 或 Calamari 管理節點,以便你網路中的客戶端能訪問 Calamari web 用戶界面。
你可以使用下面的命令在 CentOS 7 中啟動並啟用防火牆。
#systemctl start firewalld
#systemctl enable firewalld
運行以下命令使 Admin Calamari 節點開放上面提到的埠。
# firewall-cmd --zone=public--add-port=80/tcp --permanent
# firewall-cmd --zone=public--add-port=2003/tcp --permanent
# firewall-cmd --zone=public--add-port=4505-4506/tcp --permanent
# firewall-cmd --reload
在 Ceph Monitor 節點,你要在防火牆中允許通過以下埠。
# firewall-cmd --zone=public--add-port=6789/tcp --permanent
然後允許以下默認埠列表,以便能和客戶端以及監控節點交互,並發送數據到其它 OSD。
# firewall-cmd --zone=public--add-port=6800-7300/tcp --permanent
如果你工作在非生產環境,建議你停用防火牆以及 SELinux 設置,在我們的測試環境中我們會停用防火牆以及 SELinux。
#systemctl stop firewalld
#systemctl disable firewalld
系統升級
現在升級你的系統並重啟使所需更改生效。
#yum update
#shutdown-r 0
設置 Ceph 用戶
現在我們會新建一個單獨的 sudo 用戶用於在每個節點安裝 ceph-deploy工具,並允許該用戶無密碼訪問每個節點,因為它需要在 Ceph 節點上安裝軟體和配置文件而不會有輸入密碼提示。
運行下面的命令在 ceph-storage 主機上新建有獨立 home 目錄的新用戶。
[root@ceph-storage ~]#useradd-d /home/ceph -m ceph
[root@ceph-storage ~]#passwd ceph
節點中新建的每個用戶都要有 sudo 許可權,你可以使用下面展示的命令賦予 sudo 許可權。
[root@ceph-storage ~]#echo"ceph ALL = (root) NOPASSWD:ALL"|sudotee/etc/sudoers.d/ceph
ceph ALL =(root) NOPASSWD:ALL
[root@ceph-storage ~]#sudochmod0440/etc/sudoers.d/ceph
設置 SSH 密鑰
現在我們會在 Ceph 管理節點生成 ssh 密鑰並把密鑰復制到每個 Ceph 集群節點。
在 ceph-node 運行下面的命令復制它的 ssh 密鑰到 ceph-storage。
[root@ceph-node ~]#ssh-keygen
Generatingpublic/private rsa key pair.
Enterfilein which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (emptyforno passphrase):
Enter same passphrase again:
Your identification has been saved in/root/.ssh/id_rsa.
Yourpublic key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:
5b:*:*:*:*:*:*:*:*:*:c9 root@ceph-node
The key's randomart image is:
+--[ RSA 2048]----+
[root@ceph-node ~]#ssh--id ceph@ceph-storage
SSH key
配置 PID 數目
要配置 PID 數目的值,我們會使用下面的命令檢查默認的內核值。默認情況下,是一個小的最大線程數 32768。
如下圖所示通過編輯系統配置文件配置該值為一個更大的數。
更改 PID 值
配置管理節點伺服器
配置並驗證了所有網路後,我們現在使用 ceph 用戶安裝 ceph-deploy。通過打開文件檢查 hosts 條目(LCTT 譯註:你也可以用 DNS 解析來完成)。
#vim/etc/hosts
ceph-storage 45.79.136.163
ceph-node 45.79.171.138
運行下面的命令添加它的庫。
# rpm -Uhv http://ceph.com/rpm-giant/el7/noarch/ceph-release-1-0.el7.noarch.rpm
添加 Ceph 倉倉庫
或者創建一個新文件並更新 Ceph 庫參數,別忘了替換你當前的 Release 和版本號。
[root@ceph-storage ~]#vi/etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
之後更新你的系統並安裝 ceph-deploy 軟體包。
安裝 ceph-deploy 軟體包
我們運行下面的命令以及 ceph-deploy 安裝命令來更新系統以及最新的 ceph 庫和其它軟體包。
#yum update -y &&yum install ceph-deploy -y
配置集群
使用下面的命令在 ceph 管理節點上新建一個目錄並進入新目錄,用於收集所有輸出文件和日誌。
#mkdir~/ceph-cluster
#cd~/ceph-cluster
# ceph-deploy new storage
設置 ceph 集群
如果成功執行了上面的命令,你會看到它新建了配置文件。
現在配置 Ceph 默認的配置文件,用任意編輯器打開它並在會影響你公共網路的 global 參數下面添加以下兩行。
#vim ceph.conf
osd pool defaultsize=1
public network =45.79.0.0/16
安裝 Ceph
現在我們准備在和 Ceph 集群關聯的每個節點上安裝 Ceph。我們使用下面的命令在 ceph-storage 和 ceph-node 上安裝 Ceph。
# ceph-deploy install ceph-node ceph-storage
安裝 ceph
處理所有所需倉庫和安裝所需軟體包會需要一些時間。
當兩個節點上的 ceph 安裝過程都完成後,我們下一步會通過在相同節點上運行以下命令創建監視器並收集密鑰。
# ceph-deploy mon create-initial
Ceph 初始化監視器
設置 OSD 和 OSD 守護進程
現在我們會設置磁碟存儲,首先運行下面的命令列出你所有可用的磁碟。
# ceph-deploy disk list ceph-storage
結果中會列出你存儲節點中使用的磁碟,你會用它們來創建 OSD。讓我們運行以下命令,請使用你的磁碟名稱。
# ceph-deploy disk zap storage:sda
# ceph-deploy disk zap storage:sdb
為了最後完成 OSD 配置,運行下面的命令配置日誌磁碟以及數據磁碟。
# ceph-deploy osd prepare storage:sdb:/dev/sda
# ceph-deploy osd activate storage:/dev/sdb1:/dev/sda1
你需要在所有節點上運行相同的命令,它會清除你磁碟上的所有東西。之後為了集群能運轉起來,我們需要使用以下命令從 ceph 管理節點復制不同的密鑰和配置文件到所有相關節點。
# ceph-deploy admin ceph-node ceph-storage
測試 Ceph
我們快完成了 Ceph 集群設置,讓我們在 ceph 管理節點上運行下面的命令檢查正在運行的 ceph 狀態。
# ceph status
# ceph health
HEALTH_OK
如果你在 ceph status 中沒有看到任何錯誤信息,就意味著你成功地在 CentOS 7 上安裝了 ceph 存儲集群。
㈤ 【ceph】對象存儲的目錄/文件夾概念
對象存儲(OSS)中文件夾的概念僅是一個邏輯概念,在通過API/SDK的方式設置文件夾的時候可以指定object對應的key值包括前面的目錄即可實現該功能。例如,定義object的key為abc/1.jpg就會在該bucket下創建一個abc的文件夾,而在文件夾下即會有一個1.jpg的文件。
對象存儲(OSS)中的文件夾其實是一個大小為0KB的空文件。因此,用戶創建一個key值為1/的object就會定義文件夾1;並且如果用戶創建文件abc/1.jpg,系統是不會創建abc/這個文件的,因此在刪除abc/1.jpg後將不會再存在abc這個文件夾。
由於對象存儲(OSS)採用的是分布式存儲的方式,object並不是根據文件夾進行物理存儲的。也就是說並不是一個文件夾下的所有的文件都會存儲在一起的。在後端存儲的過程中不同的文件夾的文件僅僅是key值的前綴不一樣。因此這種架構下就會導致無法很方便的統計某個文件夾下的匯總信息,如文件夾大小、文件夾PV數等。而想要遍歷某個文件夾下的所有的文件也需要首先通過ListObject介面獲取文件夾下的所有文件的key值(這里需要通過prefix指定文件夾),然後再進行操作。
在邏輯上「中國.mp4」將存放到目錄「videos」中
https://help.aliyun.com/knowledge_detail/39527.html
https://www.jianshu.com/p/4212d37c0e0f
㈥ 【ceph】對象存儲 - bucket命名規范
用於存儲 日誌文件的 存儲桶的名稱必須符合非美國標准區域的命名要求。Amazon S3 將存儲桶名稱定義為符合以下規則的一個或多個標簽(用句點分隔開):
警告
由於 S3 允許您的存儲桶用作可公開訪問的 URL,因此您選擇的存儲桶名稱必須具有全局唯一性。如果其他一些賬戶已使用您選擇的名稱創建存儲桶,則必須使用其他名稱。有關更多信息,請參閱 Amazon Simple Storage Service 開發人員指南 中的存儲桶局限和限制。
參考
https://docs.aws.amazon.com/zh_cn/awscloudtrail/latest/userguide/cloudtrail-s3-bucket-naming-requirements.html
㈦ Linux裡面ceph是什麼
Linux裡面ceph
Ceph是一個可靠地、自動重均衡、自動恢復的分布式存儲系統,根據場景劃分可以將Ceph分為三大塊,分別是對象存儲、塊設備存儲和文件系統服務。在虛擬化領域里,比較常用到的是Ceph的塊設備存儲,比如在OpenStack項目里,Ceph的塊設備存儲可以對接OpenStack的cinder後端存儲、Glance的鏡像存儲和虛擬機的數據存儲,比較直觀的是Ceph集群可以提供一個raw格式的塊存儲來作為虛擬機實例的硬碟。
Ceph相比其它存儲的優勢點在於它不單單是存儲,同時還充分利用了存儲節點上的計算能力,在存儲每一個數據時,都會通過計算得出該數據存儲的位置,盡量將數據分布均衡,同時由於Ceph的良好設計,採用了CRUSH演算法、HASH環等方法,使得它不存在傳統的單點故障的問題,且隨著規模的擴大性能並不會受到影響。
㈧ Ceph之對象存儲
RGW 全稱為Rados GateWay,是Ceph 對象存儲網關,用於向客戶端應用程序提供存儲界面,提供RestFul API 介面
Ceph對象網關是一個構建在librados之上的對象存儲介面,它為應用程序訪問Ceph 存儲提供了一個RESTFul 風格的網關。Ceph 對象存儲支持兩種介面:
1.用戶: 對象存儲應用的使用者,一個用戶擁有一個或者多個存儲桶。RGW 向您提供的用戶賬號寶琨了AK(AccessKeyID)和SK(SecretAccessKeyID)。通過使用AK和SK 對稱加密的方法來驗證某個請求的發送至身份。
參考blog: https://blog.z0ukun.com/?p=2765
㈨ 如何集成Ceph對象存儲
Glance集成Glance是OpenStack中的映像服務。默認情況下,映像存儲在本地控制器,然後在被請求時復制到計算主機。計算主機緩存鏡像,但每次更新鏡像時,都需要再次復制。Ceph為Glance提供了後端,允許鏡像存儲在Ceph中,而不是本地存儲在控制器和計算節點上。這大大減少了抓取鏡像的網路流量,提高了性能,因為Ceph可以克隆鏡像而不是復制鏡像。此外,它使得在OpenStack部署或諸如多站點OpenStack之類的概念的遷移變得更簡單。安裝Glance使用的Ceph客戶端。創建Ceph用戶並將主目錄設置為/etc/ceph。將Ceph用戶添加到sudoers。在Ceph管理節點。為Glance鏡像創建CephRBD池。創建將允許Glance訪問池的密鑰環。將密鑰環復制到OpenStack控制器上的/etc/ceph。設置許可權,讓Glance可以訪問Ceph密鑰環。將密鑰環文件添加到Ceph配置。創建原始Glance配置的備份。更新Glance配置。重新啟動Glance。下載Cirros鏡像並將其添加到Glance。將QCOW2轉換為RAW。建議Ceph始終使用RAW格式。將鏡像添加到Glance。檢查Ceph中是否存在Glance圖像。Cinder集成Cinder是OpenStack中的塊存儲服務。Cinder提供了關於塊存儲的抽象,並允許供應商通過提供驅動程序進行集成。在Ceph中,每個存儲池可以映射到不同的Cinder後端。這允許創建諸如金、銀或銅的存儲服務。你可以決定例如金應該是復制三次的快速SSD磁碟,銀應該是復制兩次,銅應該是使用較慢的擦除編碼的磁碟。為Cinder卷創建一個Ceph池。創建一個密鑰環以授予Cinder訪問許可權。將密鑰環復制到OpenStack控制器。創建一個只包含OpenStack控制器上的身份驗證密鑰的文件。設置密鑰環文件的許可權,以便Cinder可以訪問。將密鑰環添加到OpenStack控制器上的Ceph配置文件中。使KVMHypervisor訪問Ceph。在virsh中創建一個密鑰,因此KVM可以訪問Ceph池的Cinder卷。為Cinder添加一個Ceph後端。在所有控制器上重新啟動Cinder服務。創建Cinder卷。在Ceph中列出Cinder卷。將Ceph與Nova計算集成Nova是OpenStack中的計算服務。Nova存儲與默認的運行虛擬機相關聯的虛擬磁碟鏡像,在/var/lib/nova/instances下的Hypervisor上。在虛擬磁碟映像的計算節點上使用本地存儲有一些缺點:·鏡像存儲在根文件系統下。大鏡像可能導致文件系統被填滿,從而導致計算節點崩潰。·計算節點上的磁碟崩潰可能導致虛擬磁碟丟失,因此無法進行虛擬機恢復。Ceph是可以直接與Nova集成的存儲後端之一。在本節中,我們將看到如何配置。為Nova創建驗證密鑰環。將密鑰環復制到OpenStack控制器。在OpenStack控制器上創建密鑰文件。設置密鑰環文件的許可權,以便Nova服務可以訪問。確保安裝所需的rpm軟體包。更新Ceph配置。讓KVM可以訪問Ceph。在virsh中創建一個密鑰,這樣KVM可以訪問Cinder卷的Ceph池。備份Nova配置。更新Nova配置以使用Ceph後端。重新啟動Nova服務。列表Neutron網路。啟動使用在Glance步驟中添加的Cirros鏡像的臨時VM實例。等待直到VM處於活動狀態。在Ceph虛擬機池中列出鏡像。我們現在應該看到鏡像存儲在Ceph中。