1. 程式人生 > >20170807ceph入門(一)——ceph中rados物件建立以及檔案上傳與下載

20170807ceph入門(一)——ceph中rados物件建立以及檔案上傳與下載

ceph中rados物件建立以及檔案上傳與下載

一、將本地檔案 /home/liangwl/file 檔案拷貝到 cephpool 這個池中,並在pool中檢視這個檔案中的內容

環境:3臺monitor,3個osd

檢視pool

rados lspools


1. 我們先建立一個包含資料的file檔案、一個ceph pool並且設定pool的副本數為3
$ echo "Hello ceph, I'm learning the data management part." > /home/liangwl/file
$ cat /home/liangwl/file
Hello ceph, I'm learning the data management part.


$ ceph osd pool create cephpool 32 32    #建立一個32個pg,32個pgd的池cephpool,如果進行ceph搭建的時候已經存在pool,可以不用額外建立,例                                                                     如可以選擇上面已經存在的data、metadata、rbd作為pool
pool 'cephpool' created
$ ceph osd pool set cephpool size 3
set pool size to 3

2. 將檔案寫入到建立的pool中

put <obj-name> [infile]          write object


$ rados  put object1 /home/liangwl/file  -p cephpool     #在cephpool下建立一個名為object1的物件,將本地檔案file拷貝到這個pool的物件
$ rados ls -p cephpool
object1

#如果單單隻在mypool這個池中建立物件object2,不拷貝檔案的指令為:

rados create object2 -p mypool

3. 檢視object1的pg map
$ ceph osd map cephpool object1

osdmap e19 pool 'cephpool' (3) object 'object1' -> pg 3.bac5debc (

3.1c) -> up ([2,0,1], p2) acting ([2,0,1], p2)
其中,
osdmap e19OSD map的版本號
pool 'cephpool' (3) pool的名字和ID
object 'object1'object的名字
pg 3.bac5debc (3.1c)    pg number,即3.1c
up ([0,1,2], p0)OSD up set,因為我們設定的是3副本,所以每個pg都會被存放在3個OSD上
up ([2,0,1], p2) acting set,即OSD.0(primary)、OSD.1(secondary)和OSD.2(tertiary)

筆者的osd路徑為/data/osd/osd.$id,在該路徑下有一個current資料夾,因為前面設定了副本為3,本次實驗中涉及到的也是3個osd,所以每個osd中都可以找到這個file儲存的pg,以osd.1為例:

$cd /data/osd/osd.1/current

$ls -l | grep3.1c

drwxr-xr-x 2 root root    38 Aug  7 11:26 3.1c_head

$cd  3.1c_head

$ll

-rw-r--r-- 1 root root 50 Aug  7 11:26 object1__head_BAC5DEBC__3

$cat object1__head_BAC5DEBC__3

Hello ceph, I'm learning the data management part.

其他指令:

檢視所有的osd的資訊:ceph osd tree


二、將pool物件中的檔案拷貝到本地

使用get命令代替put命令

舉例,將剛剛上傳的file檔案拷貝到本機,重新命名為getfile

get <obj-name> [outfile]         fetch object

$rados get object1 /home/liangwl/getfile -p cephpool

$cat  /home/liangwl/getfile

hello ceph,i'm learning the data management part.

其他指令學習:

1、列出所有的ceph使用者 ceph auth list   ,   還可以使用-o filepath 將輸出列印在檔案中,  如 ceph auth list -o /home/liangwl/out.txt

2、建立使用者 建立使用者會新增一個使用者名稱,祕鑰和capability 
a)ceph auth add:這個命令可以建立使用者,產生祕鑰和新增一些指定的capabilities。 b)ceph auth get-or-create:這個命令會返回一個包含使用者名稱和祕鑰的keyfile 格式。如果使用者已經存在,它就會以keyfile 格式返回使用者名稱和key。 c)ceph auth get-or-create-key:這個命令建立使用者但是隻返回使用者的key,若想知道已存在用的key,這個命令是很有用的。可使用-o  {filename}選項把輸出列印到指定檔案。 $ceph authadd client.john mon 'allow r' osd 'allow rw pool=liverpool' $ceph authget-or-create client.paul mon 'allow r' osd 'allow rw pool=liverpool' $ceph authget-or-create client.george mon 'allow r' osd 'allow rw pool=liverpool' -o george.keyring $ceph authget-or-create-key client.ringo mon 'allow r' osd 'allow rw pool=liverpool' -o ringo.key

3、新增使用者到鑰匙環

3.1為使用者建立一個鑰匙 ceph auth get client.admin –o /etc/ceph/ceph.client.admin.keyring

3.2將已經存在的鑰匙匯入鑰匙環ceph-authtool /etc/ceph/ceph.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring