mount rbd块时如果提示超级块损坏,不能识别的ext4系统,说明是块属性错误导致,可以通过以下方法修改块的属性:
思路先获取正确的块属性,以正确的做参考,修改错误的块属性
1.获取块的属性
sudo rbd -p tdr_ecpool info foo19-7
sudo rados -p tdr_ecpool get rbd_id.foo19-7 -|strings
6e0fb248a642b
sudo rados -p tdr_ecpool getomapval rbd_header.6e0fb248a642b features
sudo rados -p tdr_ecpool getomapval rbd_header.6e0fb248a642b object_prefix
sudo rados -p tdr_ecpool getomapval rbd_header.6e0fb248a642b order
sudo rados -p tdr_ecpool getomapval rbd_header.6e0fb248a642b size
sudo rados -p tdr_ecpool getomapval rbd_header.6e0fb248a642b snap_seq
Example:
[root@host1 ~]# sudo rados -p tdr_ecpool getomapval rbd_header.6e0fb248a642b features
(length 8) : 0000 : 01 00 00 00 00 00 00 00 : ........
[root@host1 ~]# sudo rados -p tdr_ecpool getomapval rbd_header.6e0fb248a642b object_prefix
(length 26) : 0000 : 16 00 00 00 72 62 64 5f 64 61 74 61 2e 36 65 30 : ....rbd_data.6e0
0010 : 66 62 32 34 38 61 36 34 32 62 : fb248a642b
[root@host1 ~]# sudo rados -p tdr_ecpool getomapval rbd_header.6e0fb248a642b order
(length 1) : 0000 : 16 : .
[root@host1 ~]# sudo rados -p tdr_ecpool getomapval rbd_header.6e0fb248a642b size
(length 8) : 0000 : 00 00 00 00 00 10 00 00 : ........
[root@host1 ~]# sudo rados -p tdr_ecpool getomapval rbd_header.6e0fb248a642b snap_seq
(length 8) : 0000 : 00 00 00 00 00 00 00 00
2.参考正确的块属性,修改错误的快属性
echo -en \\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00 | sudo rados -p tdr_ecpool setomapval rbd_header.6e0fb248a642b features
echo -en \\x16\\x00\\x00\\x00rbd_data.6e0fb248a642b | sudo rados -p tdr_ecpool setomapval rbd_header.6e0fb248a642b object_prefix
echo -en \\x16 | sudo rados -p tdr_ecpool setomapval rbd_header.6e0fb248a642b order
echo -en \\x00\\x00\\x00\\x00\\x00\\x10\\x00\\x00 | sudo rados -p tdr_ecpool setomapval rbd_header.6e0fb248a642b size
echo -en \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00 | sudo rados -p tdr_ecpool setomapval rbd_header.6e0fb248a642b snap_seq