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 (
其中,
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.txt2、建立使用者 建立使用者會新增一個使用者名稱,祕鑰和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