- 模擬數(shù)據(jù)損毀
# 刪除所有 metadata 中的數(shù)據(jù)
$ for i in `rados -p cephfs.a.meta ls`; rados -p cephfs.a.meta rm $i; done
# 查看集群狀態(tài)
$ ceph -s
cluster:
id: 399aa358-dc80-4bed-a957-7e27f8943b67
health: HEALTH_WARN
1 filesystem is degraded
insufficient standby MDS daemons available
services:
mon: 3 daemons, quorum a,b,c (age 31h)
mgr: x(active, since 31h)
mds: 1/1 daemons up
osd: 3 osds: 3 up (since 31h), 3 in (since 11d)
data:
volumes: 0/1 healthy, 1 recovering
pools: 4 pools, 81 pgs
objects: 136 objects, 5.5 MiB
usage: 3.0 GiB used, 300 GiB / 303 GiB avail
pgs: 81 active+clean
# 查看 fs 狀態(tài)
$ ceph fs status
a - 0 clients
=
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 replay(laggy) a 0 0 0 0
POOL TYPE USED AVAIL
cephfs.a.meta metadata 1095k 98.9G
cephfs.a.data data 14.3M 98.9G
- 創(chuàng)建 recovery fs 從 data pool 中恢復(fù)一個(gè)可用的備份文件系統(tǒng)拆火。
# 首先仅胞,將現(xiàn)有的文件系統(tǒng)停止,以防止對數(shù)據(jù)池的進(jìn)一步修改亥贸。卸載所有客戶端朵锣。
$ ceph fs fail a
# 接下來,創(chuàng)建一個(gè)恢復(fù)文件系統(tǒng),我們將在其中填充由原始數(shù)據(jù)池支持的新元數(shù)據(jù)池渣锦。
$ ceph osd pool create cephfs_recovery_meta
$ ceph fs new cephfs_recovery cephfs_recovery_meta cephfs.a.data --recover --allow-dangerous-metadata-overlay
# 恢復(fù)過程中我們將關(guān)閉MDS硝岗,因?yàn)槲覀儾幌Mc元數(shù)據(jù)池進(jìn)一步交互。
$ ceph fs fail cephfs_recovery
# 接下來袋毙,我們將重置MDS創(chuàng)建的初始元數(shù)據(jù):
$ cephfs-table-tool cephfs_recovery:0 reset session
$ cephfs-table-tool cephfs_recovery:0 reset snap
$ cephfs-table-tool cephfs_recovery:0 reset inode
$ cephfs-journal-tool --rank cephfs_recovery:0 journal reset --force
# 現(xiàn)在從數(shù)據(jù)池中恢復(fù)元數(shù)據(jù)池:
$ cephfs-data-scan init --force-init --filesystem cephfs_recovery --alternate-pool cephfs_recovery_meta
$ cephfs-data-scan scan_extents --alternate-pool cephfs_recovery_meta --filesystem a cephfs.a.data
$ cephfs-data-scan scan_inodes --alternate-pool cephfs_recovery_meta --filesystem a --force-corrupt cephfs.a.data
$ cephfs-data-scan scan_links --filesystem cephfs_recovery
# (注意型檀,配置也可以是全局設(shè)置的,也可以是通過ceph.conf文件設(shè)置的听盖。)現(xiàn)在胀溺,允許MDS加入恢復(fù)文件系統(tǒng):
$ ceph fs set cephfs_recovery joinable true
# 最后,運(yùn)行前向清除以修復(fù)統(tǒng)計(jì)信息媳溺。確保您有一個(gè)MDS正在運(yùn)行并發(fā)出:
$ ceph fs status # get active MDS
$ ceph tell mds.<id> scrub start / recursive repair
- 嘗試恢復(fù)文件系統(tǒng)月幌,成功者則流程結(jié)束碍讯,不成功繼續(xù)第4)步
$ cephfs-journal-tool --rank=a:0 event recover_dentries list --alternate-pool cephfs_recovery_meta
$ ceph fs status
a - 0 clients
=
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active c Reqs: 0 /s 13 16 12 0
POOL TYPE USED AVAIL
cephfs.a.meta metadata 207k 98.9G
cephfs.a.data data 14.3M 98.9G
cephfs_recovery - 0 clients
===============
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active b Reqs: 0 /s 10 13 12 0
POOL TYPE USED AVAIL
cephfs_recovery_meta metadata 96.0k 98.9G
cephfs.a.data data 14.3M 98.9G
STANDBY MDS
a
- 利用 recovery fs 恢復(fù)原來已經(jīng)被損毀的 metadata pool
# 確保整個(gè)過程文件系統(tǒng)處于關(guān)閉狀態(tài)
ceph fs fail a
ceph fs set a joinable false
# 接下來悬蔽,我們將重置MDS創(chuàng)建的初始元數(shù)據(jù)
cephfs-table-tool a:0 reset session
cephfs-table-tool a:0 reset snap
cephfs-table-tool a:0 reset inode
cephfs-journal-tool --rank a:0 journal reset --force
# 利用數(shù)據(jù)池和已經(jīng)創(chuàng)建好的recovery fs恢復(fù)元數(shù)據(jù)池
cephfs-data-scan init --force-init --filesystem a --alternate-pool cephfs.a.meta
cephfs-data-scan scan_extents --alternate-pool cephfs.a.meta --filesystem cephfs_recovery cephfs.a.data
cephfs-data-scan scan_inodes --alternate-pool cephfs.a.meta --filesystem cephfs_recovery --force-corrupt cephfs.a.data
cephfs-data-scan scan_links --filesystem a
# (注意,配置也可以是全局設(shè)置的捉兴,也可以是通過ceph.conf文件設(shè)置的蝎困。)現(xiàn)在,允許MDS加入恢復(fù)文件系統(tǒng):
$ ceph fs set a joinable true
# 最后倍啥,運(yùn)行前向清除以修復(fù)統(tǒng)計(jì)信息禾乘。確保您有一個(gè)MDS正在運(yùn)行并發(fā)出:
$ ceph fs status # get active MDS
$ ceph tell mds.<id> scrub start / recursive repair
a - 0 clients
=
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active c Reqs: 0 /s 13 16 12 0
POOL TYPE USED AVAIL
cephfs.a.meta metadata 207k 98.9G
cephfs.a.data data 14.3M 98.9G
cephfs_recovery - 0 clients
===============
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active b Reqs: 0 /s 10 13 12 0
POOL TYPE USED AVAIL
cephfs_recovery_meta metadata 96.0k 98.9G
cephfs.a.data data 14.3M 98.9G
STANDBY MDS
a
刪除 recovery fs 和 metadata pool
$ ceph fs fail cephfs_recovery
$ ceph fs rm cephfs_recovery --yes-i-really-mean-it
$ ceph osd pool cephfs_recovery_meta cephfs_recovery_meta --yes-i-really-really-mean-it
$ ceph fs status
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active c Reqs: 0 /s 13 16 12 0
POOL TYPE USED AVAIL
cephfs.a.meta metadata 207k 98.9G
cephfs.a.data data 14.3M 98.9G
STANDBY MDS
a
b
更多技術(shù)分享瀏覽我的博客:
本文由mdnice多平臺(tái)發(fā)布