1. 程式人生 > >Ceph高階工具介紹之ceph-objectstore-tool的使用

Ceph高階工具介紹之ceph-objectstore-tool的使用

0 簡介

ceph-objectstore-tool工具是Ceph提供的一個low level(可以操作object和pg)的工具,可以用來檢視、修改、刪除ObjectStore上的object、pg以及dump OSD journal中的資料,請謹慎使用這個工具,它有可能會造成資料的永久丟失,可能這也是很少有文章介紹它的一個原因吧。

1 使用

ceph-objectstore-tool目前沒有manpage,它的help文件寫的也不是很友好。

[[email protected] ~]# ceph-objectstore-tool -h
Must provide --data-path

Allowed options:
  --help                      produce help message
  --type arg                  Arg is one of [filestore (default), memstore]
  --data-path arg             path to object store, mandatory
  --journal-path arg          path to journal, mandatory for filestore type
  --pgid arg                  PG id, mandatory for info, log, remove, export,
                              rm-past-intervals, mark-complete
  --op arg                    Arg is one of [info, log, remove, mkfs, fsck,
                              fuse, export, import, list, fix-lost, list-pgs,
                              rm-past-intervals, dump-journal, dump-super,
                              meta-list, get-osdmap, set-osdmap,
                              get-inc-osdmap, set-inc-osdmap, mark-complete]
  --epoch arg                 epoch# for get-osdmap and get-inc-osdmap, the
                              current epoch in use if not specified
  --file arg                  path of file to export, import, get-osdmap,
                              set-osdmap, get-inc-osdmap or set-inc-osdmap
  --mountpoint arg            fuse mountpoint
  --format arg (=json-pretty) Output format which may be json, json-pretty,
                              xml, xml-pretty
  --debug                     Enable diagnostic output to stderr
  --force                     Ignore some types of errors and proceed with
                              operation - USE WITH CAUTION: CORRUPTION POSSIBLE
                              NOW OR IN THE FUTURE
  --skip-journal-replay       Disable journal replay
  --skip-mount-omap           Disable mounting of omap
  --head                      Find head/snapdir when searching for objects by
                              name
  --dry-run                   Don't modify the objectstore

Positional syntax:
ceph-objectstore-tool ... <object> (get|set)-bytes [file]
ceph-objectstore-tool ... <object> set-(attr|omap) <key> [file]
ceph-objectstore-tool ... <object> (get|rm)-(attr|omap) <key>
ceph-objectstore-tool ... <object> get-omaphdr
ceph-objectstore-tool ... <object> set-omaphdr [file]
ceph-objectstore-tool ... <object> list-attrs
ceph-objectstore-tool ... <object> list-omap
ceph-objectstore-tool ... <object> remove
ceph-objectstore-tool ... <object> dump
ceph-objectstore-tool ... <object> set-size
ceph-objectstore-tool ... <object> remove-clone-metadata <cloneid>

<object> can be a JSON object description as displayed by --op list.
<object> can be an object name which will be looked up in all the OSD's PGs.
<object> can be the empty string ('') which with a provided pgid specifies the pgmeta object

The optional [file] argument will read stdin or write stdout if not specified or if '-' specified.
從上面的help文件中,發現沒有提供使用方法或者例子,一般需要按照以下方法使用:
ceph-objectstore-tool --data-path <osd的data目錄的路徑> --journal-path <osd journal的路徑> --type <objectstore的型別> --op <具體操作的型別> ,其中type目前支援filestore和bluestore兩種,op操作,支援help種列舉出來的操作。

3 使用事例

下面介紹一下,ceph-objectstore-tool的常用用法

1)list osd上有哪些pg,比如如果要list osd.2種儲存哪些pg,可以執行以下命令:

<span style="font-size:10px;">[[email protected] 0.13_head]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-2/ --journal-path 
/var/lib/ceph/osd/ceph-2/journal --type filestore --op list-pgs</span>

2)除了能list pg之外,還能list某個pg的pg_info資訊

[[email protected] 0.13_head]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-2/ --journal-path 
/var/lib/ceph/osd/ceph-2/journal --type filestore  --pgid 0.0 --op info</span></span>
3)  list某個pg中object的資訊
[[email protected] 0.13_head]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-2/ --journal-path /var/lib/ceph/osd/ceph-2/journal --type filestore  --pgid 0.38 --op list
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
["0.38",{"oid":"rbd_id.test","key":"","snapid":-2,"hash":2586801272,"max":0,"pool":0,"namespace":"","max":0}]
["0.38",{"oid":"rbd_data.6e742ae8944a.0000000000000000","key":"","snapid":-2,"hash":3591771128,"max":0,"pool":0,"namespace":"","max":0}]

3) dump某個pg的pg_log資訊

[[email protected] 0.13_head]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-2/ --journal-path /var/lib/ceph/osd/ceph-2/journal --type filestore  --pgid 0.36 --op log
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
{
    "pg_log_t": {
        "head": "400'27",
        "tail": "0'0",
        "log": [
            {
                "op": "modify  ",
                "object": "0:6c8c8ef5:::rb.0.5e9a.2ae8944a.0000000000db:head",
                "version": "376'1",
                "prior_version": "0'0",
                "reqid": "client.24221.1:135326",
                "extra_reqids": [],
                "mtime": "2016-07-21 22:19:29.377000",
                "mod_desc": {
                    "object_mod_desc": {
                        "can_local_rollback": false,
                        "rollback_info_completed": true,
                        "ops": []
                    }
                }
            },
...
        ]
    },
    "pg_missing_t": {
        "missing": []
    },
    "map": {
        "divergent_priors": []
    }

4) remove某個pg

[[email protected] 0.13_head]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-2/ --journal-path /var/lib/ceph/osd/ceph-2/journal --type filestore  --pgid 0.36 --op remove

5) export/import 一個pg

[[email protected] 0.13_head]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-2/ --journal-path /var/lib/ceph/osd/ceph-2/journal --type filestore  --pgid 0.36 --op export --file 1.txt
[[email protected] 0.13_head]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-2/ --journal-path /var/lib/ceph/osd/ceph-2/journal --type filestore  --op import --file 1.txt

6) 該命令還可以dump出OSD的super_block資訊

[[email protected] 0.13_head]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-2/ --journal-path /var/lib/ceph/osd/ceph-2/journal --op dump-super
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
{
    "cluster_fsid": "7b4eb697-fd53-4bd8-9b7a-ca1b37110623",
    "osd_fsid": "3549e257-373a-44a0-a7d9-99068e9854dc",
    "whoami": 2,
    "current_epoch": 442,
    "oldest_map": 1,
    "newest_map": 442,
    "weight": 0.000000,
    "compat": {
        "compat": {},
        "ro_compat": {},
        "incompat": {
            "feature_1": "initial feature set(~v.18)",
            "feature_2": "pginfo object",
            "feature_3": "object locator",
            "feature_4": "last_epoch_clean",
            "feature_5": "categories",
            "feature_6": "hobjectpool",
            "feature_7": "biginfo",
            "feature_8": "leveldbinfo",
            "feature_9": "leveldblog",
            "feature_10": "snapmapper",
            "feature_12": "transaction hints",
            "feature_13": "pg meta object"
        }
    },
    "clean_thru": 442,
    "last_epoch_mounted": 439
}

7)dump一個object所有的元資料資訊

[[email protected] 0.13_head]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-2/ --journal-path /var/lib/ceph/osd/ceph-2/journal rbd_data.6e742ae8944a.0000000000000013 dump
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
{
    "id": {
        "oid": "rbd_data.6e742ae8944a.0000000000000013",
        "key": "",
        "snapid": -2,
        "hash": 4028149687,
        "max": 0,
        "pool": 0,
        "namespace": "",
        "max": 0
    },
    "info": {
        "oid": {
            "oid": "rbd_data.6e742ae8944a.0000000000000013",
            "key": "",
            "snapid": -2,
            "hash": 4028149687,
            "max": 0,
            "pool": 0,
            "namespace": ""
        },
        "version": "442'1060",
        "prior_version": "442'1059",
        "last_reqid": "osd.1.0:59339",
        "user_version": 1059,
        "size": 4194304,
        "mtime": "2016-07-22 14:58:47.086000",
        "local_mtime": "2016-07-22 14:58:47.306385",
        "lost": 0,
        "flags": 52,
        "snaps": [],
        "truncate_seq": 0,
        "truncate_size": 0,
        "data_digest": 3408368108,
        "omap_digest": 4294967295,
        "watchers": {}
    },
    "stat": {
        "size": 4194304,
        "blksize": 4096,
        "blocks": 8192,
        "nlink": 1
    },
    "SnapSet": {
        "snap_context": {
            "seq": 0,
            "snaps": []
        },
        "head_exists": 1,
        "clones": []
    }
}

8)  當然,它可以使用get-osdmap匯出叢集中leveldb資料庫中的資料,比如OSDMap,而且可以dump出各個epoch的map,這個大家可以在下面自己試驗一下。

相關推薦

Ceph高階工具介紹ceph-objectstore-tool的使用

0 簡介 ceph-objectstore-tool工具是Ceph提供的一個low level(可以操作object和pg)的工具,可以用來檢視、修改、刪除ObjectStore上的object、pg以及dump OSD journal中的資料,請謹慎使用這個工具,它有可能

開源工具介紹Flume

是什麼? 一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸系統。 功能 收集資料 對資料簡單處理,並寫到資料接收方的能力 介紹一下flume的主要元件: Flume的執行核心是Agent。(

unix terminal/console/curses 工具介紹

htop & iotop Process, memory and io monitoring. ttyrec & ipbt Record and play back terminal sessions. rsync Keeps filesystems in sync over

優秀工具介紹——Iconfont 阿里圖示庫

阿里媽媽MUX傾力打造的向量圖示管理、交流平臺。 設計師將圖示上傳到Iconfont平臺,使用者可以自定義下載多種格式的icon,平臺也可將圖示轉換為字型,便於前端工程師自由調整與呼叫。 官網地址:

ceph(luminous)-Bluestore ceph-bluestore-tool工具

ceph-bluestore-tool工具的簡介 [[email protected] /]# ceph-bluestore-tool --help All options: Options: -h [ --help ] pro

HTTP curl和elinks工具介紹

curl elinks1 概述curl是基於URL語法在命令行方式下工作的文件傳輸工具,字符命令,可以用於腳本,它支持FTP,FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等協議。curl支持HTTPS認證,並且支持HTTP的POST、PUT等方法,F

Openstack ceph更換故障磁盤

ceph osd 更換 在實際生產使用過程中,難免會有ceph的osd硬盤損壞的時候,本文針對這種場景描述更換故障磁盤的操作,本文的操作環境是通過kolla部署的openstack,3個HA節點上各有3個osd,我們將osd.6 、osd.7 、osd.8 剔除並更換。1、首先查看和收集相關的信息:

APK反編譯二:工具介紹

www 權限 nap 一段時間 rmi 麻煩 -s HR 逆向 作者:lpohvbe | http://blog.csdn.net/lpohvbe/article/details/7983907 前面一節我們說過,修改APK最終是通過修改smali來實現的,所以我們接下來

Openstack ceph存儲池分級

for a盤 ica work ini term reat 創建 規則 上面左邊是我的個人微信,如需進一步溝通,請加微信。 右邊是我的公眾號“Openstack私有雲”,如有興趣,請關註。 上篇《Openstack 之使用外部ceph存儲》中提到,為了達到不

雲端計算儲存Ceph有哪些核心元件?

文章目錄 Ceph有哪些核心元件? 1. Ceph OSD 2. Ceph Monitor 3. Ceph MDS Ceph有哪些核心元件? Ceph的核心元件包括Ceph OSD、Ceph Mon

雲端計算儲存Ceph架構是怎麼樣的?

文章目錄 Ceph架構是怎麼樣的? 1. Ceph儲存系統的邏輯層次結構圖 2. Ceph系統邏輯層次結構,自下向上,可以分為四個層次 2.1 基礎儲存系統RADOS 2.2 基礎庫librado

雲端計算儲存Ceph是什麼?

文章目錄 1. Ceph是什麼? 2. 為什麼要關注Ceph? 3. Ceph的發展 1. Ceph是什麼? Ceph的官方網站Ceph.com上用如下這句話簡明扼要地定義了Ceph: “Ceph is a unified

Linuxrsync同步工具介紹

1.rsync介紹   Rsync是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠端資料同步備份的優秀工具。Rsync軟體適用於unix/linux/windows等多種操作平臺。  rsync,remote synchronize顧名思意就知道它是一款實現遠端同步功能的軟體,它在同步檔案的同時,

深入淺出分散式檔案儲存系統 Ceph 的實現

一、何為分散式檔案檔案系統       分散式檔案系統(Distributed File System)是指檔案系統管理的物理儲存資源不一定直接連線在本地節點上,而是通過計算機網路與節點相連,它的設計是基於客戶端/伺服器模式。  &n

介面測試發包工具介紹

1、Poster      Poster為Firefox瀏覽器的一個外掛,主要用來模擬發並HTTP請求。隨著Chrome瀏覽器的流行,它也出了chrome版本:Chrome Poster   在Fiefox瀏覽器中的安裝非常簡單。首先,開啟Fiefo

介面測試工具抓包工具介紹

1、Chrome  F12 2、火狐外掛Firebug F12 3、Fiddler工具 本文主要介紹Fiddler工具 1.為什麼是Fiddler? 抓包工具有很多,小到最常用的web除錯工具firebug,達到通用的強大的抓包工具wireshark.為什

ceph Luminous新功能crush class

cursh class為新增的管理裝置類的功能,可以將特定一組裝置指定為類,建立rule的時候直接指定class即可,以前也可以實現該功能,只不過需要編輯crushmap,手動新增class。該功能只需要命令列就可以實現。 前言 叢集情況和上一篇文

C++效能系列靜態程式碼檢查工具介紹(一)

FxCop Integrator允許將獨立的FxCop(1.36或10.0)和Code Metrics PowerTool 10.0整合到VS2010中。 最新版本(2.0.0 RTW)包含以下新功能: 支援使用程式碼度量PowerTool的計算程式碼

Linux命令------高階軟體包工具:APT(Advanced Package Tool)

`下載和安裝軟體包 $sudo apt-get update #該命令保證獲得的軟體包是最新的。 `刪除軟體包 $sudo apt-get removename(軟體包的名字) `查詢軟體包資訊 $apt-cache searchchrome #搜尋軟體包列表中的帶“c

Android APP壓力測試(一) Monkey工具介紹

1)、指定一個包:adb shell monkey -p com.example.findyou  10 2)、指定多個包:adb shell monkey -p com.example.findyou –p com.example.findyou1 -p com.example.findyou2 100