LINUX.ORG.RU

Перестал выключаться компьютер

 ,


0

2

Перестал выключаться компьютер с недавних пор (после какого-то обновления). Что именно я обновил - отследить тяжело... вроде бы сам lvm и ядро не обновлялись.

Проблема именно такая - выключаю компьютер - все демоны останавливаются корректно, только последняя строка - что-то вроде «не могу освободить lvm, какая-то партиция используется». Раньше, я так понимаю, она точно также использовалась (так как, например, корневой раздел у меня тоже на LVM, всё кроме boot на LVM) - но игнорировалась и спокойно выключалась. sysrq+S+U+O спасает ситуацию, но я же не могу каждый раз их нажимать.

В чём может быть проблема, ни у кого не возникало?

p.s. чуть позже напишу полное сообщение об ошибке. просто для этого надо снова компьютер выключить и его записать :)

На всякий версия lvm - 2.02.97-r1, ядро - 3.6.11-gentoo

BattleCoder ★★★★★
() автор топика

Поправь инитскрипт lvm так, чтобы на при вызове на выключении и перезагрузке оно не пыталось деактивировать группы. Если это единственное действие, о вообще убери скрипт с 6 и 0 уровней (ну или как там у вас в openrc). Фактически LVM не нуждается в остановке, в Debian уже давно единственный аргумент /etc/init.d/lvm2 — start.

anonymous
()
Ответ на: комментарий от anonymous

Вот как-то так он выглядит. Скрипт находится только в boot-уровне... соответственно при выключении все сервисы идут в stop... просто закомментировать что ли этот stop? попробую...

stop() {
        for lvm_path in /bin/lvm /sbin/lvm ; do
                [ -x "$lvm_path" ] && break
        done
        if [ ! -x "$lvm_path" ]; then
                eerror "Cannot find lvm binary in /sbin or /bin!"
                return 1
        fi
# Stop LVM2
if [ -x /sbin/vgs ] && \
   [ -x /sbin/vgchange ] && \
   [ -x /sbin/lvchange ] && \
   [ -f /etc/lvmtab -o -d /etc/lvm ] && \
   [ -d /proc/lvm  -o "`grep device-mapper /proc/misc 2>/dev/null`" ]
then
        einfo "Shutting down the Logical Volume Manager"


        VGS=$($lvm_path vgs --config "${config}" -o vg_name --noheadings --nosuffix 2> /dev/null)

        if [ "$VGS" ]
        then
            ebegin "  Shutting Down LVs & VGs"
                        #still echo stderr for debugging
                        lvm_commands="#! ${lvm_path} --config '${config}'\n"
                        # Extra PV find pass because some devices might not have been available until very recently
                        lvm_commands="${lvm_commands}lvchange --sysinit -a ln ${VGS}\n"
                        # Now make the nodes
                        lvm_commands="${lvm_commands}vgchange --sysinit -a ln\n"
                        # Order of this is important, have to work around dash and LVM readline
                        printf "%b\n" "${lvm_commands}" | $lvm_path /proc/self/fd/0 --config "${config}" >/dev/null
                        eend $? "Failed"
        fi

        einfo "Finished Shutting down the Logical Volume Manager"
fi
}
BattleCoder ★★★★★
() автор топика
Ответ на: комментарий от Kindly_Cat

попробую, конечно, но...

2.02.97-r1(13:31:17 06.01.2013) - то есть 6 января обновлял последний раз... а в январе всё работало. скорее всего дело не в этом, ну хуже не будет (надеюсь) от обновления. :-P

BattleCoder ★★★★★
() автор топика
Ответ на: комментарий от Kindly_Cat

действительно, стоило бы. забыл

rootfs on / type rootfs (rw)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=10240k,nr_inodes=1013668,mode=755)
devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
/dev/mapper/vg-root on / type ext4 (rw,relatime,commit=0)
tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
cgroup_root on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,relatime,size=10240k,mode=755)
openrc on /sys/fs/cgroup/openrc type cgroup (rw,nosuid,nodev,noexec,relatime,release_agent=/lib64/rc/sh/cgroup-release-agent.sh,name=openrc)
cachedir on /lib64/splash/cache type tmpfs (rw,nosuid,nodev,noexec,noatime,size=4096k,mode=755)
/dev/mapper/vg-var on /var type ext4 (rw,relatime,commit=0)
/dev/mapper/vg-tmp on /tmp type ext4 (rw,relatime,commit=0)
/dev/mapper/vg-home on /home type ext4 (rw,relatime,commit=0)
/dev/mapper/vg-portage on /usr/portage type ext4 (rw,relatime,commit=0)
/dev/mapper/vg-data on /mnt/data type ext4 (rw,relatime,commit=0)
/dev/mapper/vg-torrent on /mnt/torrent type ext4 (rw,relatime,commit=0)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
BattleCoder ★★★★★
() автор топика
Ответ на: комментарий от BattleCoder

вообще убрать?

Ну тебе виднее, вообще или нет %) В Debian так:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          lvm2 lvm
# Required-Start:    mountdevsubfs
# Required-Stop:
# Should-Start:      udev mdadm-raid cryptdisks-early multipath-tools-boot
# Should-Stop:       umountroot mdadm-raid
# X-Start-Before:    checkfs mountall
# X-Stop-After:      umountfs
# Default-Start:     S
# Default-Stop:
### END INIT INFO

SCRIPTNAME=/etc/init.d/lvm2

. /lib/lsb/init-functions

[ -x /sbin/vgchange ] || exit 0

do_start()
{
	modprobe dm-mod 2>/dev/null || :
	/sbin/vgscan --ignorelockingfailure >/dev/null || :
	/sbin/vgchange -aly --ignorelockingfailure >/dev/null || return 2
}

case "$1" in
  start)
	log_action_begin_msg "Setting up LVM Volume Groups"
	do_start
	case "$?" in
		0|1) log_action_end_msg 0 ;;
		2) log_action_end_msg 1 ;;
	esac
	;;
  stop|restart|force-reload|status)
	;;
  *)
	echo "Usage: $SCRIPTNAME start" >&2
	exit 3
	;;
esac

а не поломается ли?

Да вроде пока ни у кого не поломалось. Во время обычной работы LVM не пишет никаких служебных данных (стандартные линейные тома) и не хранит статус в метаданных, поэтому в vgchange -an при выключении никакой надобности нет.

anonymous
()
Ответ на: комментарий от Kindly_Cat

удивительно, но обновление помогло

BattleCoder ★★★★★
() автор топика
Ответ на: комментарий от anonymous

скрипт не правил, lvm обновил. полечилось. ошибку теперь также пишет при выключении, но погоды она не делает - комп всё равно вырубается. меня такой вариант устраивает

BattleCoder ★★★★★
() автор топика
Ответ на: комментарий от BattleCoder

можешь сделать в stop.

yesno $RC_GOINGDOWN || return 0

хотя по хорошему нужно просто не трогать /usr/ и /. Я сегодня если будет время пну апстрим по этому поводу

qnikst ★★★★★
()
Ответ на: комментарий от Kindly_Cat

не думаю что тут виноват openrc

У меня подобная бага на ноуте в арче с systemd, после какого-то обновления перестал выключатся из консоли с такой же ошибкой. Не может отмонтировать /var

Причем из slim все выключается, несмотря на то, что сообщение об этой же ошибке проскакивает.

menefis
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.