服務器硬件配置及環境
項目 | 說明 |
---|---|
CPU | 1核 |
內存 | 1GB |
硬盤 | 40GB |
系統 | CentOS 7.5 |
時間同步服務 | chrony |
ceph | 13.2.2-0 |
節點部署圖
節點功能簡介
項目 | 說明 |
---|---|
yum repo | 如果部署環境每個節點都可以訪問外網, 則無需做任何操作, 部署腳本會自動添加外網環境的yum源. 如果部署無法訪問外網, 需要自行部署centos, epel, ceph三個yum源. 每個節點都必須可以訪問所提到的所有yum源 |
時間同步服務器 | 每個節點都必須可以訪問, 如果部署環境無法訪問外網需要自行搭建時間同步服務器 |
client-x | 需要掛載存儲的設備, 需要同時可以訪問每個storage-ha-x和yum源, 時間服務器 |
storage-deploy-1 | 用於統一部署ceph集群的工作機, 系統為CentOS 7.5 |
storage-ha-x | 承載ceph各項服務的服務器節點, 系統為CentOS 7.5 |
mon | Monitors, 節點映射管理, 身份驗證管理, 需要達到冗余和高可用至少需要3個節點 |
osd | object storage daemon, 對象存儲服務, 需要達到冗余和高可用至少需要3個節點 |
mgr | Manager, 用於跟蹤運行指標和集群狀態, 性能. |
mds | Metadata Serve, 提供cephfs的元數據存儲 |
參考:
默認端口
項目 | 說明 |
---|---|
ssh | tcp: 22 |
mon | tcp: 6789 |
mds/mgr/osd | tcp: 6800~7300 |
參考:
默認路徑
項目 | 說明 |
---|---|
主配置文件 | /etc/ceph/ceph.conf |
配置文件夾 | /etc/ceph |
日志文件夾 | /var/log/ceph |
各服務認證key文件 | /var/lib/ceph/{server name}/{hostname}/keyring |
admin認證key文件 | ceph.client.admin.keyring |
部署腳本說明
- node-init.sh: storage-ha-x節點初期運行的初始化腳本
- admin-init.sh: storage-deploy-1節點初期運行的初始化腳本, 必須要在每個storage-ha-x節點都運行完node-init.sh之后才能運行.
- ceph-deploy.sh: ceph部署腳本, 僅在storage-deploy-1節點上運行即可, 需要在
node-init.sh
和admin-init.sh
運行完成且成功后運行.
PS: 腳本中涉及到的ip和其它不同信息請先自行修改后再運行.
腳本運行命令
請將 附錄: 腳本內容
章節或腳本Git庫
章節中的各個腳本放到各個對應服務器任意位置並使用以下命令按照順序運行.
PS: 需嚴格按照部署腳本說明
章節中的持續順序執行腳本.
PS: 腳本中涉及到不同於當前環境的信息(如: ip, yum源, 密碼, 主機名等)請先自行修改后再運行.
- 初始化ceph節點
1 |
/bin/bash node-init.sh |
執行命令結果
- 初始化部署節點
1 |
/bin/bash admin-init.sh |
執行命令結果
- 開始部署
1 |
/bin/bash ceph-deploy.sh |
執行命令結果
可以看到上方的pgs
下方有個creating+peering
, 這表示OSDs在創建和准備同步中.需要等待
這時可以在任意有admin角色的storage-ha-x
節點上執行以下命令看查是否完成准備
1 |
ceph -s |
當pgs
顯示為下圖的active+clean
代表各個節點同步完成.
如果一直無法達到active+clean
狀態, 請參考以下操作文章:
TROUBLESHOOTING PGS
掛載存儲
創建測試用戶
以下命令在任意一個storage-ha-x服務器上運行
1 |
# 此命令含義是創建一個名為client.fs-test-1的用戶, 對於掛載的根目錄'/'只有可讀權限, 對於掛載的'/test_1'目錄有讀寫權限. |
獲取用戶授權信息
以下命令在任意一個添加過admin
角色的storage-ha-x服務器上運行
1 |
# 獲取client.admin用戶的授權信息 |
掛載方式
掛載方式分為兩種, 分別是cephfs和fuse. 選擇其中一種方式進行掛載即可.
兩種掛載方式的區別和優勢請參考以下文章:
WHICH CLIENT?
cephfs方式
以下命令在任意需要掛載存儲的client下執行
PS: 此掛載方式依賴於ceph, 需要先添加ceph和epel的yum源.
1 |
# cephfs方式掛載 |
fuse方式
以下命令在任意需要掛載存儲的client下執行
PS: 此掛載方式依賴於ceph-fuse, 需要先添加ceph和epel的yum源.
1 |
yum install ceph-fuse -y |
掛載結果
掛載結果可以使用以下命令查看
1 |
df -h |
運維命令
- 狀態查看
1 |
# 查看集群整體狀態 |
- 簡單寫性能測試
1 |
# 在掛載了存儲的client下簡單測試寫性能 |
- 刪除cephfs和pool
1 |
# 刪除cephfs前需要的操作 |
- 同步ceph配置文件
1 |
# 同步的配置文件 |
FAQ
-
Q: health_warn:clock skew detected on mon
A: 使用chrony同步每台服務器節點的時間 -
Q: Error ERANGE: pg_num “*“ size “*“ would mean “*“ total pgs, which exceeds max “*“ (mon_max_pg_per_osd 250 num_in_osds “\“)
A: ceph.conf配置文件中加入mon_max_pg_per_osd = 1000
(參數中的數值自己根據實際情況修改)並用同步ceph配置文件
方式上傳到各個節點, 並重啟ceph-mon.target
-
Q: too many PGs per OSD
A: ceph.conf配置文件中加入mon_max_pg_per_osd = 1000
(參數中的數值自己根據實際情況修改)並用同步ceph配置文件
方式上傳到各個節點, 並重啟ceph-mon.target
參考
ceph cephx認證參考
設置cephfs訪問權限
ceph用戶管理
ceph-fuse方式掛載
Ceph 運維手冊
Red Hat Ceph存儲—《深入理解Ceph架構》
Ceph常規操作及常見問題梳理
腳本Git庫
https://github.com/x22x22/cephfs-verify-script
附錄: 腳本內容
- node-init.sh
1 |
|
- admin-init.sh
1 |
|