如何在ceph中找出存放的資料

2021-08-10 15:40:04 字數 2312 閱讀 3747

ceph的資料管理始於ceph client的寫操作,鑑於ceph使用多副本及強一致性策略來保證資料的安全性和完整性,乙個寫請求的資料會首先被寫入到primary osd上去,然後primary osd會進一步將資料複製到secondary和其它tertiary osd上去並一直等待他們的完成通知,然後再將最終的完成確認傳送給client。這篇文章主要從ceph資料管理這個方面入手,通過具體的例項介紹一下如何在ceph中找到資料的存放位置。

1、我們先建立乙個包含資料的test檔案、乙個ceph pool並且設定pool的副本數為

$ echo "hello ceph, i'm learning the data management part." > /tmp/testfile

$ cat /tmp/testfile

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

$ ceph osd pool create helloceph 192

192 pool 'helloceph' created

$ ceph osd pool set helloceph size 3

set pool 3 size to

3

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

$ rados -p helloceph put object1 /tmp/testfile

$ rados -p helloceph ls

object1

3、 檢視object1的pg map

$ ceph osd map helloceph object1

osdmap e8 pool 'helloceph' (3) object

'object1' -> pg 3.bac5debc (3.bc) -> up ([0,1,2], p0) acting ([0,1,2], p0)

其中:osdmap e8 osd map的版本號

pool 'helloceph' (3) pool的名字和id

object

'object1'

object的名字

pg 3.bac5debc (3.bc) pg number,即3.bc

up ([0,1,2], p0) osd up set,因為我們設定的是3副本,所以每個pg都會被存放在3個osd上

acting ([0,1,2], p0) acting set,即osd.0(primary)、osd.1(secondary)和osd.2(tertiary)

4、 檢視三個osd的資訊,主要是host資訊即osd在哪個機器上

[root@admin-node osd]# ceph osd tree

id weight type name up/down reweight primary-affinity

-10.05589 root default

-20.02190 host node2

0 0.01700 osd.0 up 1.00000 1.00000

3 0.00490 osd.3 up 1.00000 1.00000

-30.01700 host node3

1 0.01700 osd.1 up 1.00000 1.00000

-40.01700 host node1

2 0.01700 osd.2 up 1.00000 1.00000

5、 從osd中找出testfile檔案(這裡以osd.1為例)

$ ssh node1(osd.1所在機器)

$ cd /var/lib/ceph/osd/ceph-0/current

$ cd 3.bc_head

$ cat object1__head_bac5debc__3

hello ceph, i

'm learning the data management part.

同樣,我們也可以在osd.0和osd.2中找到object1.

如何在大量的資料中找出不重複的整數?

在 2.5 億個整數中找出不重複的整數。注意 記憶體不足以容納這 2.5 億個整數。方法一 分治法 與前面的題目方法類似,先將 2.5 億個數劃分到多個小檔案,用 hashset hashmap 找出每個小檔案中不重複的整數,再合併每個子結果,即為最終結果。方法二 位圖法 位圖,就是用乙個或多個 b...

如何在大量的資料中找出不重複的整數?

在 2.5 億個整數中找出不重複的整數。注意 記憶體不足以容納這 2.5 億個整數。方法一 分治法 與前面的題目方法類似,先將 2.5 億個數劃分到多個小檔案,用 hashset hashmap 找出每個小檔案中不重複的整數,再合併每個子結果,即為最終結果。方法二 位圖法 位圖,就是用乙個或多個 b...

如何在大量的資料中找出不重複的整數

在 2.5 億個整數中找出不重複的整數。注意 記憶體不足以容納這 2.5 億個整數。由於這道題目與前面的題目類似,也是無法一次性把所有資料載入到記憶體中,因此也可以採用類似的方法求解。方法一 分治法 採用 hash 函式的方法,把這 2.5 億個整數劃分到更小的檔案中,從而保證每個檔案的大小不超過可...