GitLabサーバーとして使用していたラズパイ4にsshできなくなったので復旧する
サーバーにsshで接続しようとすると
kex_exchange_identification: read: Connection reset by peer
というメッセージが表示されて接続に失敗する
サーバー(ラズパイ4)起動直後はsshで接続出来ていた
GitLabも接続して操作出来ていた
1日くらい経ってから気付くとどちらも接続出来なくなっていた
この状態になる前に、サーバーにHDDを接続するためのUSB SATA変換アダプタが壊れて接続出来なくなっていた
この時はpingも応答しなかった
pingは応答する
ディスプレイを接続してみたがno signalになる
仕方ないので電断した
HDDのバックアップを取っておく
対象HDD以上の容量のHDDを用意する
$ sudo parted -l
で容量を確認する
$ dd if=<コピー元HDD> of=<コピー先HDD> bs=8M status=progress
bsはHDDのコピーはだいたい4MB - 8MBが適していることが多いとのことなので8MBを指定する
ラズパイの方に問題ないか確認する
他のOS入ったストレージを繋いで動作するか確認する
sshでの接続を確認する際に、別OSを入れているがルーターの方でIPを固定しているので、別マシンからssh接続をテストしようとすると警告が出て弾かれる
一時的に環境が違うだけで問題ないので、キーのチェックと接続先ホストキーの記録をスキップする
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null <user>@<ip>
ラズパイ自体は問題なさそう
バックアップ失敗してた
同じ4TBのHDDを用意したが数KBほど足りてなかった
lsblk -b
等でちゃんとバイト単位で確認するべきだった
ちゃんとしたバックアップはまた別で取るとして、コピーできてない数KBはたぶん何も入ってないところだと思うので、コピーしたHDDで起動を試してみる
起動してsshで接続できる状態になった
GitLabも接続出来る状態になった
この状態からしばらく後に接続出来なくなっていたので、ラズパイにディスプレイを繋いでdmesg -w
でログ流したままにして様子見る
後で元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
詳細テスト中断されて完了しない
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時間以上差が出るのおかしいな
新品ドライブで詳細テストしても途中で中断されてた
USBで接続してるとうまく動かないっぽい
別のUSB-SATA変換アダプタにしたら詳細テストも完了した
特にエラーもなし
バックアップの方で動かしているGitLabサーバーは問題なく動いたままなので、
もしかしてアダプタが不安定だった?