次のコマンドを使用して、仮想サーバー(Ubuntu 18.04)の1つのディスクイメージ用の.gzアーカイブを作成しました。
dd if=/dev/sdb | gzip -1 - | pv | ssh user@ip dd of=/home/user/sdb.gz
アーカイブの解凍中に次のエラーが発生しました。
gzip: sdb.gz: unexpected end of file
このファイルを私のunraidコンピュータから仮想マシンとして実行しようとすると、.img
grubに陥ります。それで、画像に問題がある可能性があることを知っています。 lsを使用すると、最も重要なファイルがそこにあるようです。
サーバーには15GBのディスクがありますが、とにかく圧縮されているため、一部が欠落していることに気づいていませんでした。結果のイメージファイルはわずか4.3GBです。
それ以来、私のVPSプロバイダは私の仮想サーバーを削除しました。これで、受信コンピュータのディスクサイズ制限に達したため、アーカイブが不完全であることに気づきました。
基本的なファイル構造が利用可能で、最初の4 GBにシステムを復元したいすべてのVMが含まれていると素直に信じていました。 IMHOデータは重要ではありませんが、便利で試してみる価値があるようです。パーティション情報に問題があり、何らかの理由でシステムが正しい開始パスを見つけることができないようです。
私は次のステップを試しましたこのチュートリアルでは、Grubから起動するそしてこの問題。
を実行するとlinux /boot/vmlinuz-4.15.0-135-generic root=/dev/sda1
エラーが発生しますerror: attempt to read or write outside of hd1
。
私にとって正しいファイルシステムは(hd1,1)
。
だから私はset root=(hd1,1)
事前にandを使用しました。set prefix=(hd1,1)/boot/grub
次のコマンドを実行します。
insmod linux
insmod normal
normal
何も起こっていないようです。
システムを再起動するにはどのような手順を実行する必要がありますか? Ubuntu ISOを使用して問題を解決できますか?
追加情報(編集する):
前述のように、元のVPSのサイズは15GBで、破損した.gzアーカイブから抽出された.imgファイルのサイズは約4.3GBでした。このサイズを増やすには、gpartedまたは同様のツールが必要ですか/使用できますか? (私は4TBを超えるスペースを持つ非レイドコンピュータでこれを実行していますが、@Bodoが意味するものではないようです)。
また、個々のファイルを抽出することは私にとって限られた価値です。本当に重要なことはすべてずっと前にバックアップされており、このイメージの目的は、リース仮想サーバーでソフトウェアが実行されている正確な(またはできるだけ近い)環境を起動できるようにすることでした。
ゴポット(編集2):
私はちょうどgpartedルートを見ました。次のエラーメッセージが表示されました。
Invalid argument during seek for read on /dev/sdb
クイックGoogle検索結果このページのアイテムこれが私に言う
パーティションテーブルはディスクの末尾にあります。
これがパーティション情報が失われる理由です。
.imgファイルが小さすぎるため、 "w"コマンドを使用して上記の変更を書き込むことはできません。同じページで。現在、このファイルを拡張しています。
ベストアンサー1
偶然にも最近同様のことをしました(たとえハードドライブの故障のため)。私の場合、次の画像に示すように、ext4はペイロードをディスクの先頭に正しく保存しました(グループの場所と比較したext4グループの使用量)。
方法A:ディスクドライブの使用
- イメージ全体を収めるのに十分な大きさのディスクが必要です。
- このディスクに破損した画像を追加してください。
方法B:元の画像ファイルを拡大する
truncate -s 16 G image.img
(0で埋められたスペースを追加)- イメージのインストール
udisksctl loop-setup --file image.img
AとBの共通点は次のとおりです。
- ループデバイスの
fsck.ext4 $device
ドライブやパーティションなどの適切なファイルシステムチェッカーを実行します。$device
- これでファイルシステムをマウントできます。
損傷が軽い場合でも、システムは起動し続けることがあります。