昨日、システムがクラッシュしたため、2 台の仮想マシンを実行中にホスト マシンをハードリセットする必要がありました。最初のマシンは生き残りましたが、2 台目は読み取り専用モードになりました。VM にログインすると、次のメッセージが表示されます。
Unable to setup logging. [Errno 30] Read-only file system: '/var/log/landscape/sysinfo.log' run-parts: /etc/update-mot.d/50-landscape-sysinfo exited with return code 1 /usr/lib/ubuntu-release-upgrader/release-upgrade-motd: 31: cannot create /var/lib/ubuntu-release-upgrader/release-upgrade-available: Read-only file system mktemp: failedd to create file via template '/var/lib/update-notifier/tmp.XXXXXXXXXX': Read-only file system run-parts: /etc/update-motd.d/95-hwe-eol exited with return code 1 /usr/lib/update-notifier/update-motd-fsck-at-reboot: 38: cannot create /var/lib/update-notifier/fsck-at-reboot: Read-only file system
ホストからディスク イメージ ファイルを確認しました。この場合は、KVM と連携して使用する qcow2 ファイルです。
sudo qemu-img check ubuntu204.qcow2
結果は次のとおりです。
No errors were found on the image. 245760/245760 = 100.00% allocated, 0.00% fragmented, 0.00% compressed clusters Image end offset: 16108814336
これはファイル システムを保護するための強制的な状態であり、ディスクをスキャンしてすべてが正常であれば読み取り専用モードを終了できると読みましたが、読み取り専用モードの tty で次のパーティション テーブルを使用してこれを行うにはどうすればよいですか?
loop0 0
loop1 0
loop2 0
loop3 0
loop4 0
loop5 0
|-sda 0 15G 0 disk
|-sda1 0 1M 0 part
|-sda2 0 1G 0 part /boot
|-sda3 0 14G 0 part
|-ubuntu--vg-ubuntu--lv 0 14G 0 lvm /
|-sr0 1 1024M 0 rom
警告から、問題があるのではないかと疑っています。unattended-upgrades
また、両方のマシンの整合性を確保するために推奨される追加のチェックに関するさらなる情報もお聞かせください。
答え1
ホストから fsck を使用して qcow2 ディスク イメージ ファイルを回復する方法
ネットワーク ブロック デバイス モジュールをロードします。
sudo modprobe nbd max_part=8
電源オフマシン:
sudo virsh destroy virtual-machine
ディスクイメージを接続:
sudo qemu-nbd --connect=/dev/nbd0 /var/lib/libvirt/images/virtual-machine.qcow2
ディスクをチェック: (ディスクはホストにマウントされており、nautilus/explorer で確認できます)
sudo fsck /dev/nbd0p2
私の場合、2 つの追加ドライブがマウントされており、nbd-dm3 と nbd0p2 の両方をスキャンしました。以下は、すべてに「はい」と答えた場合の予想される出力の例です。
fsck from util-linux 2.25.2
e2fsck 1.42.12 (29-Aug-2014)
/dev/nbd0p1: recovering journal
/dev/nbd0p1 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inodes that were part of a corrupted orphan linked list found. Fix<y>? yes
Inode 274 was part of the orphaned inode list. FIXED.
Inode 132276 was part of the orphaned inode list. FIXED.
Deleted inode 142248 has zero dtime. Fix<y>? yes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: -603674 -623174 +(689342--689343)
Fix<y>? yes
Free blocks count wrong for group #18 (15076, counted=15077).
Fix<y>? yes
Free blocks count wrong for group #19 (11674, counted=11675).
Fix<y>? yes
Free blocks count wrong (632938, counted=670871).
Fix<y>? yes
Inode bitmap differences: -274 -132276 -142248
Fix<y>? yes
Free inodes count wrong for group #0 (52, counted=53).
Fix<y>? yes
Free inodes count wrong for group #16 (99, counted=100).
Fix<y>? yes
Free inodes count wrong for group #17 (519, counted=520).
Fix<y>? yes
Free inodes count wrong (204392, counted=204599).
Fix<y>? yes
/dev/nbd0p1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/nbd0p1: 101833/306432 files (0.2% non-contiguous), 553321/1224192 blocks
デバイスを切断:
sudo qemu-nbd --disconnect /dev/nbd0
/dev/nbd0 が切断されました
マシンを起動して、動作するかどうかを確認します。
virsh start virtual-machine
ソース:https://gist.github.com/islander/8517685e3a9f7e0e1d458033710f0893