1. 程式人生 > >使用ceph的塊儲存rbd

使用ceph的塊儲存rbd

CEPH 塊裝置

塊是一個位元組序列(例如,一個 512 位元組的資料塊)。基於塊的儲存介面是最常見的儲存資料方法,它們基於旋轉介質,像硬碟、 CD 、軟盤、甚至傳統的 9 磁軌磁帶。無處不在的塊裝置介面使虛擬塊裝置成為與 Ceph 這樣的海量儲存系統互動的理想之選。

Ceph 塊裝置是精簡配置的、大小可調且將資料條帶化儲存到叢集內的多個 OSD 。 Ceph 塊裝置利用 RADOS 的多種能力,如快照、複製和一致性。 Ceph 的 RADOS 塊裝置( RBD )使用核心模組或 librbd 庫與 OSD 互動。

注意:核心模組可使用 Linux 頁快取。對基於 librbd 的應用程式, Ceph 可提供 RBD 快取。

Ceph 塊裝置靠無限伸縮性提供了高效能,如向核心模組、或向 abbr:KVM (kernel virtual machines) (如 Qemu 、 OpenStack 和 CloudStack 等雲端計算系統通過 libvirt 和 Qemu 可與 Ceph 塊裝置整合)。

配置塊裝置(client節點)

注意作為client節點也需要安裝ceph,否則rbd會報錯sudo: rbd: command not found。

需要注意的是client節點需要是ceph叢集中的一員,需要有/etc/ceph/ceph.client.admin.keyring檔案,否則無法跟ceph叢集溝通,會報錯ceph monclient(hunting) error missing keyring cannot use cephx for authentication。

/etc/ceph/ceph.client.admin.keyring檔案是在執行以下命令時生產的

ceph-deploy new NodeA NodeB NodeC
ceph-deploy mon create-initial

或者

可以從叢集的其他節點(主節點的/etc/ceph目錄下)上將ceph.client.admin.keyring和ceph.conf檔案複製一份過來,放到/etc/ceph目錄下。
比如在client節點使用命令

scp ceph1:/etc/ceph/ceph.client.admin.keyring /etc/ceph
scp ceph1:/etc/ceph/ceph.conf
/etc/ceph

如果沒有conf檔案會報錯
-1 did not load config file, using default settings

在執行rbd命令之前請先使用命令ceph -s確保叢集的健康情況如下:

[zzq@localhost ceph]$ ceph -s
    cluster 60cfd9c4-e6c1-4d0d-a2f4-5a0213326909
     health HEALTH_OK
     monmap e1: 3 mons at {ceph1=192.168.199.81:6789/0,ceph2=192.168.199.82:6789/0,ceph3=192.168.199.83:6789/0}
            election epoch 4, quorum 0,1,2 ceph1,ceph2,ceph3
     osdmap e29: 3 osds: 3 up, 3 in
      pgmap v88: 120 pgs, 1 pools, 0 bytes data, 0 objects
            100 MB used, 15226 MB / 15326 MB avail
                 120 active+clean
[zzq@localhost ceph]$ 

否則rbd可能遇到的問題卡住不動,因為叢集不健康io是被封鎖的,解決方式參考
遇到問題—ceph—ceph的rbd命令沒反應卡住

建立映像

命令格式如下

sudo rbd create foo --size 4096 [-m {mon-IP}][-k /path/to/ceph.client.admin.keyring]

foo是塊的名稱
size是塊大小
-m 是主機名或ip
-k是client節點的key檔案,可以使用命令檢視ls /etc/ceph

例如

sudo rbd create foo --size 4096 -m ceph1 -k /etc/ceph/ceph.client.admin.keyring

可以使用命令檢視塊的建立情況

sudo rbd list -k /etc/ceph/ceph.client.admin.keyring

正確輸出如下:

[zzq@localhost ceph]$ sudo rbd create foo --size 4096 -m ceph1 -k /etc/ceph/ceph.client.admin.keyring
[zzq@localhost ceph]$ sudo rbd list -k /etc/ceph/ceph.client.admin.keyring
foo
[zzq@localhost ceph]$ 

如果報錯

[[email protected] ~]$ sudo rbd create foo --size 4096 -m ceph1 -k /etc/ceph/ceph.client.admin.keyring
ERROR: modinfo: could not find module rbd
FATAL: Module rbd not found.
rbd: failed to load rbd kernel module (1)
rbd: sysfs write failed
rbd: map failed: (2) No such file or directory

原因
Since CEPH RBD module was first introduced with kernel 2.6.34 (and current RHEL/CentOS kernel is 2.6.32) – that means we need a newer kernel.

所以需要升級核心,使用命令如下:

sudo rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
sudo yum --enablerepo=elrepo-kernel install kernel-ml

編輯etc/grub.conf然後重啟

使用命令

sudo vi /etc/grub.conf
sudo reboot

將default = 1 改為default = 0

將映像對映為塊裝置

將映像對映為塊裝置的命令
格式

sudo rbd map foo  --name client.admin [-m {mon-IP}][-k /path/to/ceph.client.admin.keyring]

例如

sudo rbd map foo  --name client.admin -m ceph1 -k /etc/ceph/ceph.client.admin.keyring

正確輸出如下:

[zzq@localhost ceph]$ sudo rbd map foo  --name client.admin -m ceph1 -k /etc/ceph/ceph.client.admin.keyring
/dev/rbd0
[zzq@localhost ceph]$ 

檢視塊對映map和建立檔案系統

rbd showmapped

輸出如下:

[zzq@localhost ceph]$ rbd showmapped
id pool image snap device    
0  rbd  foo   -    /dev/rbd0 

則使用/dev/rbd0建立檔案系統

sudo mkfs.ext4 -m0 /dev/rbd0

正確輸出如下:

[[email protected] ceph]$ sudo mkfs.ext4 -m0 /dev/rbd0
mke2fs 1.41.12 (17-May-2010)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1024 blocks, Stripe width=1024 blocks
262144 inodes, 1048576 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] ceph]$

掛載檔案系統並寫入檔案檢視

sudo mkdir /cephAll
sudo mount /dev/rbd0 /cephAll
cd /cephAll
sudo vi helloCeph.txt
ls
df -h

這樣我們就能在client中直接對ceph叢集儲存進行讀取寫入了。

輸出如下:

[zzq@localhost ceph]$ sudo mkdir /cephAll
[zzq@localhost ceph]$ sudo mount /dev/rbd0 /cephAll
[zzq@localhost ceph]$ cd /cephAll
[zzq@localhost cephAll]$ sudo vi helloCeph.txt
[zzq@localhost cephAll]$ ls
helloCeph.txt  lost+found
[zzq@localhost cephAll]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_localhost-lv_root
                       18G  2.2G   15G  13% /
tmpfs                 482M     0  482M   0% /dev/shm
/dev/sda1             477M   86M  362M  20% /boot
/dev/rbd0             3.9G  8.0M  3.8G   1% /cephAll
[zzq@localhost cephAll]$

其他塊命令

對映塊裝置

格式如下:

sudo rbd map {pool-name}/{image-name} --id {user-name}

例如:

sudo rbd map test/foo2 --id admin

如若啟用cephx認證,還需指定金鑰

sudo rbd map test/foo2 --id admin --keyring /etc/ceph/ceph.client.admin.keyring

檢視已對映裝置

rbd showmapped

取消塊裝置對映

格式如下:

sudo rbd unmap /dev/rbd/{poolname}/{imagename}

例如:

sudo rbd unmap /dev/rbd/test/foo2 

羅列塊裝置映像

sudo rbd ls

檢索映像資訊

格式

sudo rbd info {image-name}

例如

sudo rbd info foo

或者
格式

sudo rbd info {pool-name}/{image-name}

例如:

sudo rbd info test/foo

調整塊裝置映像大小

命令如下:

sudo rbd resize --size 512 test/foo --allow-shrink  #調小
sudo rbd resize --size 4096 test/foo        #調大

刪除塊裝置

sudo rbd rm test/foo

相關推薦

使用ceph儲存rbd

CEPH 塊裝置 塊是一個位元組序列(例如,一個 512 位元組的資料塊)。基於塊的儲存介面是最常見的儲存資料方法,它們基於旋轉介質,像硬碟、 CD 、軟盤、甚至傳統的 9 磁軌磁帶。無處不在的塊裝置介面使虛擬塊裝置成為與 Ceph 這樣的海量儲存系統互動的理

Ceph裝置(RBD)常用命令

建立塊裝置映像 rbd create --size {megabytes} {pool-name}/{image-name} 例項: [ceph-deploy@ceph-admin ~]$ rbd create --size 1024 foo

k8s不能掛載ceph儲存

我是參考 Tony Bai 部落格進行k8s掛載ceph的儲存,但是發現最終pod的狀態一直是ContainerCreating 一、環境說明: Tony Bai 是把k8s 和 ceph都部署在那兩臺虛擬機器上 我的環境是k8s叢集和ceph儲存叢集分別

叢集基礎之04(部署ceph實驗環境、部署ceph叢集、建立Ceph儲存儲存應用、掛載Ceph檔案系統、建立物件儲存伺服器)

目錄 前言: 前言: Ceph簡介 Ceph是一個統一的分散式儲存系統,設計初衷是提供較好的效能、可靠性和可擴充套件性。 Ceph專案最早起源於Sage就讀博士期間的工作(最早的成果於2004年

Linux叢集儲存——day4——Ceph分散式儲存搭建、OSD儲存、COW快照、RBD儲存映象

Ceph的專有名詞 OSDs 儲存裝置 Monitors 叢集監控元件 MDSs 存放檔案系統的元資料 部署Ceph分散式儲存  

初試 Kubernetes 叢集使用 Ceph RBD 儲存

目錄 Kubernetes PersistentVolumes 介紹 環境、軟體準備 單節點使用 Ceph RBD Kubernetes PV & PVC 方式使用 Ceph RBD 測試單節點以及多節點使用 Ceph RBD 1、Kube

掛載cephrbd儲存作為本地磁碟

Ceph儲存作為塊儲存時,有時候需要將其掛載到本地作為檔案系統使用,為了滿足這樣的需求,請看下面的操作: 在這裡我使用本地的節點來當作客戶端,就是使用我的ceph叢集裡面的192.168.1.220(mon節點)掛載ceph的塊儲存,下面所有的操作都是在我的m

ceph儲存 打造高效能高可靠儲存系統

塊儲存系統 分散式儲存有出色的效能,可以扛很多故障,能夠輕鬆擴充套件,所以我們使用Ceph構建了高效能、高可靠的塊儲存系統,並使用它支撐公有云和託管雲的雲主機、雲硬碟服務。 由於使用分散式塊儲存系統,避免了複製映象的過程,所以雲主機的建立時間可以縮短到10秒以內,而且雲主機

python通過librados庫通過底層的rados操作ceph的物件儲存儲存

使用python語言呼叫原生介面(呼叫librados庫來操作rados) 也就是下圖中幾種方式中的一種,就是圖中的紅色部分: 首先來說明一下:這個就相當於在客戶端上操作ceph叢集的底層物件儲存rados,我的程式碼是在mon節點上執行的,也就是暫時把

讓k8s使用nbd掛載ceph儲存

細節決定一切 網上很多文件預設都是隻安裝ceph-common然後直接rbd來跑ceph的rbd。 其實ceph的rbd塊裝置本地

Kubernetes 使用 ceph-csi 消費 RBD 作為持久化儲存

> 原文連結:[https://fuckcloudnative.io/posts/kubernetes-storage-using-ceph-rbd/](https://fuckcloudnative.io/posts/kubernetes-storage-using-ceph-rbd/) 本文詳細介紹瞭如

Centos7.4部署ceph設備

ceph 在部署塊設備前必須保證Ceph存儲集群處於active+clean狀態。一. 環境準備IP主機名角色10.10.10.20admin-nodeceph-deploy10.10.10.24ceph-clientclient二. 安裝CEPH在管理節點上,通過 ceph-deploy 把 Ce

Ceph 設備

file 旋轉 alt .cn reference ron tle last lib 塊是一個字節序列(例如,一個 512 字節的數據塊)。基於塊的存儲接口是最常見的存儲數據方法,它們基於旋轉介質,像硬盤、 CD 、軟盤、甚至傳統的 9 磁道磁帶。無處不在的塊設

通過libvirt使用ceph設備

spa mar ron mon virsh ceph protoc log image 1. 創建存儲池[root@ceph1 ~]# ceph osd pool create libvirt-pool 128 128查看剛剛創建的存儲池:[root@ceph1 ~

儲存基礎知識(三)儲存,檔案儲存,物件儲存

1、塊儲存 典型裝置:磁碟陣列,硬碟 塊儲存主要是將裸磁碟空間整個對映給主機使用的,就是說例如磁碟陣列裡面有5塊硬碟(為方便說明,假設每個硬碟1G),然後可以通過劃邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬碟。(假設劃分完的邏輯盤也是5個,每個也是1G,但是

OpenStack雙節點部署—M Cinder(儲存服務)

Cinder安裝 一、 資料庫配置 二、 建立服務憑證和API端點 三、 安裝並配置Cinder元件 四、安裝配置儲存節點 五、驗證Cinder服務 一、 資料庫配置 Controller節

儲存、檔案儲存、物件儲存的區別

1. 塊儲存 Amazon的EC2中就有塊儲存,叫做EBS (Elastic Block Storage)。        其實就是虛擬機器掛載的一塊虛擬磁碟。推而廣之,你會發現,自己平時用的VMware、VirtualBox都可以建立虛

儲存、檔案儲存、物件儲存三者的本質差別

歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 物件儲存:就是鍵值儲存,介面比較簡單,就是GET,PUT,DEL和其他擴充套件,如S3、OSS、NOS等; 檔案儲存:支援POSIX介面,對應的傳統的檔案系統有Ext3、Ext4等,與傳統檔案系統的區別在於分散式儲存提供了並行化的能

##7.cinder儲存服務

###openstack-ocata 單節點安裝 部署 目錄彙總   一. 安裝cinder資料庫,api端點等 mysql -u root -p111111 CREATE DATABASE cinder;GRANT ALL PRIVILEGES ON cinder.* TO 'cinder

ceph 物件儲存 建立api

# -*- coding:utf-8 -*- import boto import boto.s3.connection import paramiko class Accountinfo(): """ 用法詳見 http://docs.ceph.org.cn/man/8/radosgw-