Open14

GitLabサーバーとして使用していたラズパイ4にsshできなくなったので復旧する

nannannannan

サーバーにsshで接続しようとすると
kex_exchange_identification: read: Connection reset by peer
というメッセージが表示されて接続に失敗する

サーバー(ラズパイ4)起動直後はsshで接続出来ていた
GitLabも接続して操作出来ていた
1日くらい経ってから気付くとどちらも接続出来なくなっていた
この状態になる前に、サーバーにHDDを接続するためのUSB SATA変換アダプタが壊れて接続出来なくなっていた
この時はpingも応答しなかった

nannannannan

ディスプレイを接続してみたがno signalになる

nannannannan

HDDのバックアップを取っておく

対象HDD以上の容量のHDDを用意する

$ sudo parted -l

で容量を確認する

$ dd if=<コピー元HDD> of=<コピー先HDD> bs=8M status=progress

bsはHDDのコピーはだいたい4MB - 8MBが適していることが多いとのことなので8MBを指定する

nannannannan

ラズパイの方に問題ないか確認する
他のOS入ったストレージを繋いで動作するか確認する

nannannannan

sshでの接続を確認する際に、別OSを入れているがルーターの方でIPを固定しているので、別マシンからssh接続をテストしようとすると警告が出て弾かれる
一時的に環境が違うだけで問題ないので、キーのチェックと接続先ホストキーの記録をスキップする

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null <user>@<ip>
nannannannan

バックアップ失敗してた
同じ4TBのHDDを用意したが数KBほど足りてなかった
lsblk -b等でちゃんとバイト単位で確認するべきだった

nannannannan

ちゃんとしたバックアップはまた別で取るとして、コピーできてない数KBはたぶん何も入ってないところだと思うので、コピーしたHDDで起動を試してみる

起動してsshで接続できる状態になった
GitLabも接続出来る状態になった
この状態からしばらく後に接続出来なくなっていたので、ラズパイにディスプレイを繋いでdmesg -wでログ流したままにして様子見る

nannannannan

後で元HDDの状態も確認してみる

smartmontoolsをインストールしてSMARTの自己診断を行う

クイックテスト

$ sudo smartctl  -d sat -t short /dev/sdX

USB経由で接続していたらデバイスの種類を指定しろというメッセージが出たので、
-d satでSATAデバイスであることを指定している

テスト状況確認

$ sudo smartctl -d sat -a /dev/sdX

クイックテストでは問題なさそうだった

詳細テストも流してみる

$ sudo smartctl -d sat -t long /dev/sdX
nannannannan

詳細テスト中断されて完了しない

Self-test execution status: (39) The Self-test routine was interrupted by the host with a hard or soft reset.

完了までの予定時間が39分くらいで短い気がしてたが、
新品の6TBだと予定時間が11時間くらいで、2TB差があるとはいえ10時間以上差が出るのおかしいな

nannannannan

新品ドライブで詳細テストしても途中で中断されてた
USBで接続してるとうまく動かないっぽい

nannannannan

別のUSB-SATA変換アダプタにしたら詳細テストも完了した
特にエラーもなし

バックアップの方で動かしているGitLabサーバーは問題なく動いたままなので、
もしかしてアダプタが不安定だった?