常用操作:
生成一新用戶:
在兩個集群當中都創建相同的管理用戶
radosgw-admin user create --uid=admin --display-name=admin --access_key=admin --secret=123456 |
這里為了測試方便使用了簡單密碼
此時admin還僅僅是普通的權限,需要通過cap添加user的capabilities,例如:
radosgw-admin caps add --uid=admin --caps="users=read, write" |
$ radosgw-admin user create --display-name="johnny rotten" --uid=johnny
{ "user_id": "johnny",
"rados_uid": 0,
"display_name": "johnny rotten",
"email": "",
"suspended": 0,
"subusers": [],
"keys": [
{ "user": "johnny",
"access_key": "TCICW53D9BQ2VGC46I44",
"secret_key": "tfm9aHMI8X76L3UdgE+ZQaJag1vJQmE6HDb5Lbrz"}],
"swift_keys": []}
刪除一用戶:
$ radosgw-admin user rm --uid=johnny
刪除一個用戶和與他相關的桶及內容:
$ radosgw-admin user rm --uid=johnny --purge-data
刪除一個桶:
$ radosgw-admin bucket unlink --bucket=foo
顯示一個桶從 2012 年 4 月 1 日起的日志:
$ radosgw-admin log show --bucket=foo --date=2012-04-01
顯示某用戶 2012 年 3 月 1 日(不含)到 4 月 1 日期間的使用情況:
$ radosgw-admin usage show --uid=johnny \
--start-date=2012-03-01 --end-date=2012-04-01
只顯示所有用戶的使用情況匯總:
$ radosgw-admin usage show --show-log-entries=false
裁剪掉某用戶 2012 年 4 月 1 日之前的使用信息:
$ radosgw-admin usage trim --uid=johnny --end-date=2012-04-01
命令
radosgw-admin 工具有很多命令,可完成各種管理任務:
- user create
- 創建一個新用戶。
- user modify
- 修改一個用戶。
- user info
- 顯示用戶信息,以及可能存在的子用戶和密鑰。
- user rm
- 刪除一個用戶。
- user suspend
- 暫停某用戶。
- user enable
- 重新允許暫停的用戶。
- user check
- 檢查用戶信息。
- user stats
- 顯示配額子系統統計的用戶狀態。
- caps add
- 給用戶分配能力。
- caps rm
- 刪除用戶能力。
- subuser create
- 新建一個子用戶(適合使用 Swift API 的客戶端)。
- subuser modify
- 修改子用戶。
- subuser rm
- 刪除子用戶
- key create
- 新建訪問密鑰。
- key rm
- 刪除訪問密鑰。
- bucket list
- 羅列所有桶。
- bucket link
- 把桶關聯到指定用戶。
- bucket unlink
- 取消指定用戶和桶的關聯。
- bucket stats
- 返回桶的統計信息。
- bucket rm
- 刪除一個桶。
- bucket check
- 檢查桶的索引信息。
- object rm
- 刪除一個對象。
- object unlink
- 從桶索引里去掉對象。
- quota set
- 設置配額參數。
- quota enable
- 啟用配額。
- quota disable
- 禁用配額。
- region get
- 顯示 region 信息。
- regions list
- 列出本集群配置的所有 region 。
- region set
- 設置 region 信息(需要輸入文件)。
- region default
- 設置默認 region 。
- region-map get
- 顯示 region-map 。
- region-map set
- 設置 region-map (需要輸入文件)。
- zone get
- 顯示區域集群參數。
- zone set
- 設置區域集群參數(需要輸入文件)。
- zone list
- 列出本集群內配置的所有區域。
- pool add
- 增加一個已有存儲池用於數據歸置。
- pool rm
- 從數據歸置集刪除一個已有存儲池。
- pools list
- 羅列歸置活躍集。
- policy
- 顯示桶或對象相關的策略。
- log list
- 羅列日志對象。
- log show
- 顯示指定對象內(或指定桶、日期、桶標識符)的日志。
- log rm
- 刪除日志對象。
- usage show
- 查看使用率信息(可選選項有用戶和數據范圍)。
- usage trim
- 修剪使用率信息(可選選項有用戶和數據范圍)。
- temp remove
- 刪除指定日期(時間可選)之前創建的臨時對象。
- gc list
- 顯示過期的垃圾回收對象(加 –include-all 選項羅列所有條目,包括未過期的)。
- gc process
- 手動處理垃圾。
- metadata get
- 讀取元數據信息。
- metadata put
- 設置元數據信息。
- metadata rm
- 刪除元數據信息。
- metadata list
- 羅列元數據信息。
- mdlog list
- 羅列元數據日志。
- mdlog trim
- 裁截元數據日志。
- bilog list
- 羅列桶索引日志。
- bilog trim
- 裁截桶索引日志(需要起始標記、結束標記)。
- datalog list
- 羅列數據日志。
- datalog trim
- 裁截數據日志。
- opstate list
- 羅列含狀態操作(需要 client_id 、 op_id 、對象)。
- opstate set
- 設置條目狀態(需指定 client_id 、 op_id 、對象、狀態)。
- opstate renew
- 更新某一條目的狀態(需指定 client_id 、 op_id 、對象)。
- opstate rm
- 刪除條目(需指定 client_id 、 op_id 、對象)。
- replicalog get
- 讀取復制元數據日志條目。
- replicalog delete
- 刪除復制元數據日志條目。
選項
- -c ceph.conf , --conf =ceph.conf
-
用指定的 ceph.conf 配置文件而非默認的 /etc/ceph/ceph.conf 來確定啟動時所需的監視器地址。
- -m monaddress[:port]
-
連接到指定監視器,而非通過 ceph.conf 查詢。
- --uid =uid
-
radosgw 用戶的 ID 。
- --subuser =<name>
-
子用戶名字。
- --email =email
-
用戶的電子郵件地址。
- --display-name =name
-
配置用戶的顯示名稱(昵稱)
- --access-key =<key>
-
S3 訪問密鑰。
- --gen-access-key
-
生成隨機訪問密鑰(給 S3 )。
- --secret =secret
-
指定密鑰的密文。
- --gen-secret
-
生成隨機密鑰。
- --key-type =<type>
-
密鑰類型,可用的有: swift 、 S3 。
- --temp-url-key [-2]=<key>
-
臨時 URL 密鑰。
- --system
-
給用戶設置系統標識。
- --bucket =bucket
-
指定桶名
- --object =object
-
指定對象名
- --date =yyyy-mm-dd
-
某些命令所需的日期
- --start-date =yyyy-mm-dd
-
某些命令所需的起始日期
- --end-date =yyyy-mm-dd
-
某些命令所需的終結日期
- --shard-id =<shard-id>
-
執行 mdlog list 時為可選項。對 mdlog trim 、 replica mdlog get/delete 、 replica datalog get/delete 來說是必須的。
- --auth-uid =auid
-
librados 認證所需的 auid 。
- --purge-data
-
刪除用戶前先刪除用戶數據。
- --purge-keys
-
若加了此選項,刪除子用戶時將一起刪除其所有密鑰。
- --purge-objects
-
刪除桶前先刪除其內所有對象。
- --metadata-key =<key>
-
用 metadata get 檢索元數據時用的密鑰。
- --rgw-region =<region>
-
radosgw 所在的 region 。
- --rgw-zone =<zone>
-
radosgw 所在的區域。
- --fix
-
除了檢查桶索引,還修復它。
- --check-objects
-
檢查桶:根據對象的實際狀態重建桶索引。
- --format =<format>
-
為某些操作指定輸出格式: xml 、 json 。
- --sync-stats
-
user stats 的選項,收集用戶的桶索引狀態、並同步到用戶狀態。
- --show-log-entries =<flag>
-
執行 log show 時,顯示或不顯示日志條目。
- --show-log-sum =<flag>
-
執行 log show 時,顯示或不顯示日志匯總。
- --skip-zero-entries
-
讓 log show 只顯示數字字段非零的日志。
- --infile
-
設置時指定要讀取的文件。
- --state =<state string>
-
給 opstate set 命令指定狀態。
- --replica-log-type
-
復制日志類型( metadata 、 data 、 bucket ),操作復制日志時需要。
- --categories =<list>
-
逗號分隔的一系列類目,顯示使用情況時需要。
- --caps =<caps>
-
能力列表,如 “usage=read, write; user=read” 。
- --yes-i-really-mean-it
-
某些特定操作需要。
配額選項
- --bucket
-
為配額命令指定桶。
- --max-objects
-
指定最大對象數(負數為禁用)。
- --max-size
-
指定最大尺寸(單位為字節,負數為禁用)。
- --quota-scope
-
配額有效范圍(桶、用戶)。
操作管理實例:
用戶管理
新建一個用戶
執行下面的命令新建一個用戶 (S3 接口):
實例如下:
radosgw-admin user create --uid=johndoe --display-name="John Doe" --email=john@example.com
新建一個子用戶
為了給用戶新建一個子用戶 (Swift 接口) ,你必須為該子用戶指定用戶的 ID(--uid={username}),子用戶的 ID 以及訪問級別:
radosgw-admin subuser create --uid={uid} --subuser={uid} --access=[ read | write | readwrite | full ]
實例如下:
radosgw-admin subuser create --uid=johndoe --subuser=johndoe:swift --access=full
Note:full 並不表示 readwrite, 因為它還包括訪問權限策略.
獲取用戶信息
要獲取一個用戶的信息,你必須使用 user info 子命令並且制定一個用戶 ID(--uid={username}) .
radosgw-admin user info --uid=johndoe
修改用戶信息
要修改一個用戶的信息,你必須指定用戶的 ID (--uid={username}),還有 你想要修改的屬性值。典型的修改項主要是 access 和secret 密鑰,郵件地址,顯 示名稱和訪問級別。舉例如下:
radosgw-admin user modify --uid=johndoe --display-name="John E. Doe"
要修改子用戶的信息, 使用 subuser modify 子命令並且執行子用戶的 ID. 舉例如下:
radosgw-admin subuser modify --uid=johndoe:swift --access=full
用戶 啟用/停用
當你創建了一個用戶,用戶默認情況下是處於啟用狀態的。然而,你可以暫停用戶權 限並在以后隨時重新啟用它們。暫停一個用戶,使用 user suspend 子命令 然后哦指定用戶的 ID:
radosgw-admin user suspend --uid=johndoe
要重新啟用已經被停用的用戶,使用 user enable 子命令並指明用戶的 ID.
radosgw-admin user enable --uid=johndoe
Note:停用一個用戶后,它的子用戶也會一起被停用.
刪除用戶
刪除用戶時,這個用戶以及他的子用戶都會被刪除。當然,如果你願意,可以只刪除子用戶。要刪除用戶(及其子用戶),可使用 user rm 子命令並指明用戶 ID :
radosgw-admin user rm --uid=johndoe
只想刪除子用戶時,可使用 subuser rm 子命令並指明子用戶 ID 。
radosgw-admin subuser rm --subuser=johndoe:swift
其它可選操作:
- Purge Data: 加 --purge-data 選項可清除與此 UID 相關的所有數據。
- Purge Keys: 加 --purge-keys 選項可清除與此 UID 相關的所有密鑰。
刪除子用戶
在你刪除子用戶的同時,也失去了 Swift 接口的訪問方式,但是這個用戶在系統 中還存在。要刪除子用戶,可使用 subuser rm 子命令並指明子用戶 ID :
radosgw-admin subuser rm --subuser=johndoe:swift
其它可選操作:
- Purge Keys: 加 --purge-keys 選項可清除與此 UID 相關的所有密鑰。
新建一個密鑰
要為用戶新建一個密鑰,你需要使用 key create 子命令。對於用戶來說,需要指明用戶的 ID 以及新建的密鑰類型為 s3 。要為子用戶新建一個密鑰,則需要指明子用戶的 ID以及密鑰類型為 swift 。實例如下:
radosgw-admin key create --subuser=johndoe:swift --key-type=swift --gen-secret
新建/刪除 ACCESS 密鑰
用戶和子用戶要能使用 S3 和Swift 接口,必須有 access 密鑰。在你新 建用戶或者子用戶的時候,如果沒有指明 access 和 secret 密鑰,這兩 個密鑰會自動生成。你可能需要新建 access 和/或 secret 密鑰,不管是 手動指定還是自動生成的方式。你也可能需要刪除一個 access 和 secret 。可用的選項有:
- --secret=<key> 指明一個 secret 密鑰 (e.即手動生成).
- --gen-access-key 生成一個隨機的 access 密鑰 (新建 S3 用戶的默認選項).
- --gen-secret 生成一個隨機的 secret 密鑰.
- --key-type=<type> 指定密鑰類型. 這個選項的值可以是: swift, s3
要新建密鑰,需要指明用戶 ID.
radosgw-admin key create --uid=johndoe --key-type=s3 --gen-access-key --gen-secret
你也可以使用指定 access 和 secret 密鑰的方式.
要刪除一個 access 密鑰, 也需要指定用戶 ID.
radosgw-admin key rm --uid=johndoe
添加/刪除 管理權限
Ceph 存儲集群提供了一個管理API,它允許用戶通過 REST API 執行管理功能。默認情況下,用戶沒有訪問 這個 API 的權限。要啟用用戶的管理功能,需要為用 戶提供管理權限。
執行下面的命令為一個用戶添加管理權限:
radosgw-admin caps add --uid={uid} --caps={caps}
你可以給一個用戶添加對用戶、bucket、元數據和用量(存儲使用信息)等數據的 讀、寫或者所有權限。舉例如下:
--caps="[users|buckets|metadata|usage|zone]=[*|read|write|read, write]"
實例如下:
radosgw-admin caps add --uid=johndoe --caps="users=*"
要刪除某用戶的管理權限,可用下面的命令:
radosgw-admin caps rm --uid=johndoe --caps={caps}
配額管理
設置用戶配額
在你啟用用戶的配額前 ,你需要先設置配額參數。 例如:
radosgw-admin quota set --quota-scope=user --uid=<uid> [--max-objects=<num objects>] [--max-size=<max size>]
實例如下:
radosgw-admin quota set --quota-scope=user --uid=johndoe --max-objects=1024 --max-size=1024
最大對象數和最大存儲用量的值是負數則表示不啟用指定的 配額參數。
啟用/禁用用戶配額
在你設置了用戶配額之后,你可以啟用這個配額。實例如下:
radosgw-admin quota enable --quota-scope=user --uid=<uid>
你也可以禁用已經啟用了配額的用戶的配額。 舉例如下:
radosgw-admin quota-disable --quota-scope=user --uid=<uid>
設置 BUCKET 配額
Bucket 配額作用於用戶的某一個 bucket,通過 uid 指定用戶。這些配額設置是獨立於用戶之外的。:
radosgw-admin quota set --uid=<uid> --quota-scope=bucket [--max-objects=<num objects>] [--max-size=<max size>]
最大對象數和最大存儲用量的值是負數則表示不啟用指定的 配額參數。
啟用/禁用 BUCKET 配額
在你設置了 bucket 配額之后,你可以啟用這個配額。實例如下:
radosgw-admin quota enable --quota-scope=bucket --uid=<uid>
你也可以禁用已經啟用了配額的 bucket 的配額。 舉例如下:
radosgw-admin quota-disable --quota-scope=bucket --uid=<uid>
獲取配額信息
你可以通過用戶信息 API 來獲取每一個用戶的配額 設置。通過 CLI 接口讀取用戶的配額設置信息,請執行下面的命令:
radosgw-admin user info --uid=<uid>
更新配額統計信息
配額的統計數據的同步是異步的。你也可以通過手動獲 取最新的配額統計數據為所有用戶和所有 bucket 更新配額統計數據:
radosgw-admin user stats --uid=<uid> --sync-stats
獲取用戶用量統計信息
執行下面的命令獲取當前用戶已經消耗了配額的多少:
radosgw-admin user stats --uid=<uid>
Note:你應該在執行 radosgw-admin user stats 的時候帶上 --sync-stats 參數來獲取最新的數據.
讀取/設置全局配額
你可以在 region map中讀取和設置配額。執行下面的命 令來獲取 region map:
radosgw-admin regionmap get > regionmap.json
要為整個 region 設置配額,只需要簡單的修改 region map 中的配額設置。然后使用 region set 來更新 region map即可:
radosgw-admin region set < regionmap.json
Note:在更新 region map 后,你必須重啟網關.
用量管理
Ceph 對象網關會為每一個用戶記錄用量數據。你也可以通過指定日期范圍來跟蹤用戶的用量數據。
可用選項如下:
- Start Date: 選項 --start-date 允許你指定一個起始日期來過濾用量數據 (format: yyyy-mm-dd[HH:MM:SS]).
- End Date: 選項 --end-date 允許你指定一個截止日期來過濾用量數據 (format: yyyy-mm-dd[HH:MM:SS]).
- Log Entries: 選項 --show-log-entries 允許你 指明顯示用量數據的時候是否要包含日志條目。 (選項值: true | false).
Note:你可以指定時間為分鍾和秒,但是數據存儲是以一個小時的間隔存儲的.
展示用量信息
顯示用量統計數據,使用 usage show 子命令。顯示某一個特定 用戶的用量數據,你必須指定該用戶的 ID。你也可以指定開始日期、結 束日期以及是否顯示日志條目。:
radosgw-admin usage show --uid=johndoe --start-date=2012-03-01 --end-date=2012-04-01
通過去掉用戶的 ID,你也可以獲取所有用戶的匯總的用量信息
radosgw-admin usage show --show-log-entries=false
刪除用量信息
對於大量使用的集群而言,用量日志可能會占用大量存儲空間。你可以為所有用戶或者一個特定的用戶刪除部分用量日志。你也可以為刪除操作指定日期范圍。:
radosgw-admin usage trim --start-date=2010-01-01 --end-date=2010-12-31
radosgw-admin usage trim --uid=johndoe
radosgw-admin usage trim --uid=johndoe --end-date=2013-12-31