ceph-fuse客戶端問題排查流程

本文講述了ceph-fuse客戶端問題排查基本流程:)ios

首先查看集羣的總體狀況
ceph -s

是否有osd掛掉,是否有pg非activebash

ceph-fuse進程是否存在?
ps -ef |grep ceph-fuse

ceph-fuse進程不存在
需查看日誌看什麼緣由,log文件默認爲 /var/log/ceph/ceph-client.${user_id}.log網絡

ceph-fuse進程存在,可是訪問卡
ceph-fuse客戶端的unix socket文件爲:session

/var/run/ceph/ceph-client.${user_id}.asok 

其中${user_id} 通常爲admin,能夠經過查看ceph-fuse進程獲取,或經過查看ceph.conf得到socket

1. 檢查下該客戶端與mds的鏈接session是否正常:spa

ceph daemon /var/run/ceph/ceph-client.${user_id}.asok mds_sessions 

若是mds session 的state不是open,經過netstat -anp 查看下客戶端到mds的網絡鏈接是否存在,狀態是否正常,並根據狀況決定是否往網絡方向進行進一步檢查unix

2. 訪問卡住,說明客戶端有正在進行中的請求,該請求多是發往mds,也有多是發往osd,經過以下命令查看:日誌

  • 查看客戶端發往mds的請求:
ceph daemon /var/run/ceph/ceph-client.${id}.asok mds_requests 
  • 查看客戶端發往osd的請求:
ceph daemon /var/run/ceph/ceph-client.${id}.asok objecter_requests 
  • 若是卡住的請求是發往mds的,去到active的mds上,查看mds收到的正在處理的請求:
ceph daemon /var/run/ceph/ceph-mds.${id}.asok ops 

經過該命令能夠查看卡住的op卡住哪一個階段,好比 [ initiated ]、[ failed to wrlock, waiting ]、[ failed to xlock, waiting ]等階段code

  • 若是卡住的請求是發往osd的:
    • 能夠經過netstat -anp 來查看到客戶端到osd的網絡鏈接是否正常
    • 登陸到osd的機子,經過osd的unix socket來查看該osd正在處理的op:
ceph daemon /var/run/ceph/ceph-osd.${osd_id}.asok dump_ops_in_flight 

經過該命令能夠查看卡住的op卡住哪一個階段,能夠經過iostat查看該osd的磁盤的ioutil是否高,來肯定磁盤是否繁忙進程

關注筆者

專一筆者公衆號,閱讀更多幹貨文章:)

相關文章
相關標籤/搜索