Nie można zablokować / var / lib / dpkg / lock (tylko do odczytu)

11

Próbowałem zainstalować Ruby na moim zdalnym serwerze (to jest maszyna vm (debian) na serwerze esxi.) Wystąpił błąd:

Komenda:

sudo apt-get install ruby1.8

Błąd:

W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to write to /var/cache/apt/
E: The package lists or status file could not be parsed or opened.

potem próbowałem:

sudo dpkg --configure -a 

Wynik:

dpkg: unable to access dpkg status area: Read-only file system 

AKTUALIZACJA:

wyjście mount

/dev/sda3 on / type ext4 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda1 on /boot type ext4 (rw)
/dev/sdb1 on /home type ext4 (rw)

mount: warning: /etc/mtab is not writable (e.g. read-only filesystem).
       It's possible that information reported by mount(8) is not
       up to date. For actual information about system mount points
       check the /proc/mounts file.

AKTUALIZACJA 2:

cat /proc/mounts


rootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
none /proc proc rw,nosuid,nodev,noexec,relatime 0 0
none /dev devtmpfs rw,relatime,size=1553128k,nr_inodes=216450,mode=755 0 0
none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
/dev/disk/by-uuid/cf4fb4ae-6d12-407b-bf43-3b0daaaaaf74 / ext4 ro,relatime,errors=remount-ro,barrier=1,data=ordered 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,relatime,mode=755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0
/dev/sda1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 0
/dev/sdb1 /home ext4 rw,relatime,barrier=1,data=ordered 0 0

UDPDATE 3

wyjście dmesg(jakiejś ostatniej części)

[1968636.237601] JBD2: Detected IO errors while flushing file data on sdb1-8
[1968772.229102] JBD2: Detected IO errors while flushing file data on sdb1-8
[1968789.799409] IPv6 addrconf: prefix with wrong length 56
[1968990.325125] IPv6 addrconf: prefix with wrong length 56
[1969190.801848] IPv6 addrconf: prefix with wrong length 56
[1969192.245363] JBD2: Detected IO errors while flushing file data on sdb1-8
[1969197.698223] IPv6 addrconf: prefix with wrong length 56
[1969223.105506] JBD2: Detected IO errors while flushing file data on sdb1-8
[1969349.119764] JBD2: Detected IO errors while flushing file data on sdb1-8
[1969398.205686] IPv6 addrconf: prefix with wrong length 56
[1969598.713179] IPv6 addrconf: prefix with wrong length 56
[1969607.241633] JBD2: Detected IO errors while flushing file data on sdb1-8
[1969799.220758] IPv6 addrconf: prefix with wrong length 56
[1969825.462909] JBD2: Detected IO errors while flushing file data on sdb1-8
[1969831.231049] JBD2: Detected IO errors while flushing file data on sdb1-8
[1969999.728348] IPv6 addrconf: prefix with wrong length 56
[1970200.247944] IPv6 addrconf: prefix with wrong length 56
[1970221.321558] JBD2: Detected IO errors while flushing file data on sdb1-8
[1970253.105491] JBD2: Detected IO errors while flushing file data on sdb1-8

/var/log/syslog wynik:

wprowadź opis zdjęcia tutaj

Subhransu Mishra
źródło
Dane wyjściowe mountnie są wiarygodne, zwłaszcza, że ​​twój root fs wydaje się być tylko do odczytu. Czy możesz również opublikować wyniki cat /proc/mounts?
mrb
sprawdź aktualizację 2
Subhransu Mishra

Odpowiedzi:

11

Twój główny system plików ( /) jest zamontowany tylko do odczytu, tak jak pokazuje to /dev/disk/...wiersz /proc/mounts. Przyczyną tego może być wykrycie błędu dysku podczas rozruchu ( errors=remount-roopcja) lub kolejnego błędu we / wy.

Sprawdź dzienniki jądra pod kątem błędów w dmesgpoleceniu i poszukaj w /var/log/sysloglub /var/log/messages(ale pamiętaj, że te pliki prawdopodobnie nie zawierają ostatnich wpisów w dzienniku). Jeśli występują jakieś błędy we / wy, konieczna może być wymiana dysku. Jeśli nie, uruchom system w trybie pojedynczego użytkownika i uruchom, fsck.ext4 UUID=cf4fb4ae-6d12-407b-bf43-3b0daaaaaf7aby spróbować naprawić błędy.

Jeśli fsckpo zrestartowaniu nie zgłasza błędów i nadal jest tylko do odczytu, możesz uruchomić:

sudo mount / -o remount,rw 

aby spróbować zamontować dysk do odczytu i zapisu.

Przeglądanie plików dziennika /var/log/niewiele pomaga, ponieważ w tej chwili jest tylko do odczytu.


Często powodem, dla /var/lib/dpkg/lockktórego nie można zablokować, jest to, że automatyczna aktualizacja systemu działa w tle, ale w twoim przypadku w szczególności narzeka ona na system plików tylko do odczytu.

Jofel
źródło
Chodziłem do +1tego, ale niebezpieczne jest po prostu ślepe ponowne zamontowanie rw, chyba że wiesz, dlaczego jest to ro. Lepiej po prostu ponownie uruchomić komputer w trybie pojedynczego użytkownika i uruchomić fsck. Tylko jeśli jest czysty (lub naprawiony), powróć do stanu rw. Jeśli jest czysty i wciąż rośnie ro, może spróbuj wymusić.
bahamat
@bahamat Dziękuję za komentarz, odpowiednio zmieniłem swoją odpowiedź.
jofel
@ jofel Sprawdź update3 - wyjście dmesg, wygląda na to, że ma problem z io. jaki powinien być mój następny krok?
Subhransu Mishra
@jofel powinienem zrobić tune2fs -c 0 -i 0d /dev/sda3i zrestartować system?
Subhransu Mishra
@Subhransu W zależności od tego, jak ważne są dane na głównej partycji systemowej, najpierw spróbuję wykonać kopię zapasową. Następnie uruchomiłbym się w trybie pojedynczego użytkownika (tryb odzyskiwania), a następnie ręcznie uruchomiłem fsck. Automatyczny fsck często zgłasza tylko błędy, ale ich nie naprawia. Unikaj więc niepotrzebnego We / Wy na potencjalnie uszkodzonym dysku. Funkcja SMART dysku czasami pomaga wykryć, czy dysk jest naprawdę uszkodzony.
jofel