Не удается заблокировать / var / lib / dpkg / lock (только для чтения)

11

Я пытался установить ruby ​​на моем удаленном сервере (это vm-машина (debian) на esxi-сервере.) Я получил эту ошибку:

Команда:

sudo apt-get установить ruby1.8

Ошибка :

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.

тогда я попробовал:

sudo dpkg --configure -a 

Вывод:

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

ОБНОВИТЬ:

вывод горы

/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.

UPDATE2:

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

вывод dmesg(какая-то последняя часть)

[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 вывод:

введите описание изображения здесь

Субхрансу Мишра
источник
Вывод mountне надежен, тем более что ваш root fs доступен только для чтения. Можете ли вы опубликовать вывод cat /proc/mounts?
mrb
пожалуйста, проверьте обновление2
Subhransu Mishra

Ответы:

11

Ваша корневая файловая система ( /) смонтирована только для чтения, как показано в /dev/disk/...строке /proc/mounts. Причиной этого может быть обнаружение ошибки диска при загрузке ( errors=remount-roопция) или последующей ошибки ввода-вывода.

Проверьте журналы ядра на наличие ошибок с помощью dmesgкоманды и найдите /var/log/syslogили /var/log/messages(но обратите внимание, что эти файлы, вероятно, не содержат последних записей журнала). Если есть какие-либо ошибки ввода-вывода, вам может потребоваться заменить диск. Если нет, загрузитесь в однопользовательском режиме и запустите, fsck.ext4 UUID=cf4fb4ae-6d12-407b-bf43-3b0daaaaaf7чтобы попытаться исправить ошибки.

Если fsckпри перезагрузке не сообщается об ошибках и она по-прежнему доступна только для чтения, вы можете запустить:

sudo mount / -o remount,rw 

попытаться смонтировать диск для чтения-записи.

Просмотр файлов журналов /var/log/не сильно помогает, так как на данный момент доступен только для чтения.


Часто причина, по которой /var/lib/dpkg/lockневозможно заблокировать, заключается в том, что автоматическое обновление системы запускается в фоновом режиме, но в вашем случае он специально жалуется на файловую систему только для чтения.

jofel
источник
Я собирался к +1этому, но опасно просто слепо перемонтировать rw, если вы не знаете, почему это ro в первую очередь. Лучше просто перезагрузиться в однопользовательский режим и запустить fsck. Только если он чистый (или исправленный), вы можете загрузиться обратно в состояние rw. Если он чистый и все еще крепится ро, то, возможно, попытайтесь форсировать ситуацию.
Багамат
@bahamat Спасибо за ваш комментарий, я изменил свой ответ соответственно.
Джофель
@jofel Пожалуйста, проверьте update3 - вывод dmesg, он выглядит как проблема io. каким должен быть мой следующий шаг?
Субхрансу Мишра
@jofel я должен сделать tune2fs -c 0 -i 0d /dev/sda3и перезагрузить систему?
Субхрансу Мишра
@Subhransu В зависимости от того, насколько важны данные в корневом разделе системы, я сначала попытался бы сделать резервную копию. Затем я загрузился бы в однопользовательский режим (режим восстановления), а затем запустил fsck вручную. Автоматический fsck часто только сообщает об ошибках, но не исправляет их. Поэтому избегайте ненужных операций ввода-вывода на возможном сломанном диске. SMART-функция диска иногда помогает определить, действительно ли диск сломан.
Джофель