查看 Pod 日志
kubectl describe po clickhouse-0 -n clickhouse ...... #Events: # Type Reason Age From Message # ---- ------ ---- ---- ------- # ... # kubelet MountVolume.SetUp failed for volume # "pvc-6561339a-6111-481c-a674-b4889c755299" : # rpc error: code = Internal desc = 'fsck' found errors on device #/dev/longhorn/pvc-6561339a-6111-481c-a674-b4889c755299 # but could not correct them: fsck from ... # # /dev/longhorn/pvc-6561339a-6111-481c-a674-b4889c755299: # UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
提示我们运行 fsck
命令,在 pod
所在的节点,我们运行以下命令:
fsck -cvf /dev/longhorn/pvc-6561339a-6111-481c-a674-b4889c755299 # /dev/longhorn/pvc-6561339a-6111-481c-a674-b4889c755299 has unsupported feature(s): metadata_csum # e2fsck: Get a newer version of e2fsck!
提示我们下载 e2fsck
。
使用 e2fsck 修复错误
下载
wget https://distfiles.macports.org/e2fsprogs/e2fsprogs-1.45.6.tar.gz tar -zxvf e2fsprogs-1.45.6.tar.gz
安装
cd e2fsprogs-1.45.6 mkdir build && cd build ../configure make && make install
参数说明
- device :预备检查的硬盘 partition,例如:/dev/sda1
- -a : 对 partition 做检查,若有问题便自动修复,等同 -p 的功能
- -b : 设定存放 superblock 的位置
- -B : 设定单位 block 的大小
- -c : 检查该partition 是否有坏轨
- -C file : 将检查的结果存到 file 中以便查看
- -d : 列印 e2fsck 的 debug 结果
- -f : 强制检查
- -F : 在开始检查前,将device 的 buffer cache 清空,避免有错误发生
- -l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
- -L bad_blocks_file : 设定坏轨的block资料存到 bad_blocks_file 里面,若无该档则自动产生
- -n : 将档案系统以[唯读]方式开启
- -p : 对 partition 做检查,若有问题便自动修复
- -v : 详细显示模式
- -V : 显示出目前 e2fsck 的版本
- -y : 预先设定所有检查时的问题均回答[是]
修复
fsck.ext4 -y /dev/longhorn/pvc-6561339a-6111-481c-a674-b4889c755299 # /dev/longhorn/pvc-6561339a-6111-481c-a674-b4889c755299: ***** FILE SYSTEM WAS MODIFIED *****