PDA

Bekijk de volledige versie : Почему при отключении usb-харда, отмонтируется usbflash?



Cd_spb
18-09-2008, 07:05
Доброго времени.

Есть wl500gP, с прошивкой от Олега версии 1.9.2.7-10. К нему подключена флешка(swap, /opt ) и usb-адаптер IDE+nIDE+SATA с внешним питанием, производство AgeStar и, ест-но, через него винчестер(/torrent). На всем этом деле крутится transmission. По вечерам винчестер жестко обрубают, как я понимаю - выдергивают питание и перекидывают выключатель, но оставляют воткнутым разъем. Логично предположить, что в этот момент должны посыпаться ошибки transmission, а все остальное должно продолжить работу. НО! на самом деле, при отключении винчестера отваливается и флешка, но очень странно - только корень флешки, а /opt находящийся на ней остается подмонтированным.
Более подробно описано ниже.
Собиралось все по принципу - "с бору по сосенке", поэтому не удивляйтесь.
Структура:


/tmp/mnt/disc0_1 swap
/tmp/mnt/disc0_2 /tmp/usbflash
/tmp/mnt/disc0_2/opt /opt
/tmp/mnt/disc1_1 /tmp/harddisk


Содержимое post-mount и pre-shutdown(pre-boot и pre-mount не сделано)


[admin@dtr_rout root]$ cat /tmp/local/sbin/post-mount
#!/bin/sh
rm /tmp/harddisk/
ln -s /tmp/mnt/disc1_1 /tmp/harddisk
status=`/bin/mount | grep 'opt'`
if [ -n "${status}" ]; then
rm /tmp/usbflash/
ln -s /tmp/mnt/disc0_2 /tmp/usbflash
else
rm /tmp/usbflash/
ln -s /tmp/mnt/disc0_2 /tmp/usbflash
swapon /dev/discs/disc0/part1
/bin/mount -o bind,sync,noatime,rw /tmp/mnt/disc0_2/opt /opt
fi
/opt/etc/init.d/S05syslogd
/opt/bin/transmission-daemon -g /tmp/harddisk/torrent/.config/transmission
/opt/etc/init.d/S10cron
busybox_httpd -p 81 -h /opt/share/www/rrd

[admin@dtr_rout root]$ cat /tmp/local/sbin/pre-shutdown
#!/bin/sh
killall transmissiond
# Then I wait for 10 seconds to be sure it died
# gracefully. The rtorrent docs say it dies in 5,
# I just wanna make extra sure.
/bin/sleep 10
fuser -mk /opt
sleep 2;
# umount the disk
/bin/umount /opt
/bin/umount /tmp/harddisk
# turn swap off
swapoff /dev/discs/disc0/part1


В нормальном состоянии, после перезагрузки, mount вот такой


[admin@dtr_rout root]$ mount
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/discs/disc0/part2 on /tmp/mnt/disc0_2 type ext3 (rw,noatime)
/dev/discs/disc1/part1 on /tmp/mnt/disc1_1 type ext3 (rw,noatime)
/dev/discs/disc0/part2 on /opt type ext3 (rw,noatime)


Далее описываю то, что получается при выключении usb-адаптера.

mount


[admin@dtr_rout root]$ mount
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/discs/disc1/part1 on /tmp/mnt/disc1_1 type ext3 (rw,noatime)
/dev/discs/disc0/part2 on /opt type ext3 (rw,noatime)


/opt остается "рабочим"


[admin@dtr_rout root]$ ls /opt/
bin doc include ipkg-9YnG0j ipkg-fcAN55 libexec man sbin src tmp ut.tar.gz
dima etc info ipkg-PaX2Sf lib local modules share ssl usr var


/tmp/usbflash якобы есть, а harddisk`а нет, как и ожидалось:


[admin@dtr_rout root]$ ls -la /tmp/
total 1
drwxr-xr-x 1 admin root 0 2000-01-01 04:00 .
drwxr-xr-x 1 admin root 118 2008-03-30 13:52 ..
-rw-r--r-- 1 admin root 93 2008-09-18 07:49 dnsmasq.log
drwxr-xr-x 1 admin root 0 2008-03-30 13:52 etc
-rw-r--r-- 1 admin root 1161 1970-01-01 04:00 filter_rules
-rw-r--r-- 1 admin root 4924 2008-09-17 22:30 flash.tar.gz
drwxr-xr-x 1 admin root 0 2000-01-01 04:00 local
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 mnt
-rw-r--r-- 1 admin root 96 1970-01-01 04:00 nas.lan.conf
-rw-r--r-- 1 admin root 3 1970-01-01 04:00 nas.lan.pid
-rw-r--r-- 1 admin root 33 1970-01-01 04:00 nas.wan.conf
-rw-r--r-- 1 admin root 2303 1970-01-01 04:00 nat_rules
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 ppp
-rw-r--r-- 1 admin root 46 1970-01-01 04:00 resolv.conf
lrwxrwxrwx 1 admin root 21 2008-09-17 15:49 syslog.log -> /opt/var/log/messages
lrwxrwxrwx 1 admin root 8 1970-01-01 04:00 udhcpc -> /sbin/rc
lrwxrwxrwx 1 admin root 16 2008-09-17 15:49 usbflash -> /tmp/mnt/disc0_2
drwxr-xr-x 1 admin root 0 2000-01-01 04:00 var


В /tmp/mnt якобы все в порядке


[admin@dtr_rout root]$ ls -la /tmp/mnt/
total 4
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 .
drwxr-xr-x 1 admin root 0 2000-01-01 04:00 ..
drwxr-xr-x 1 admin root 0 2008-09-17 15:49 disc0_2
drwxr-xr-x 5 admin root 4096 2008-09-17 08:39 disc1_1

но на самом деле ерунда


[admin@dtr_rout root]$ ls -la /tmp/mnt/disc1_1/
total 0

[admin@dtr_rout root]$ ls -la /tmp/mnt/disc0_2/
total 0
drwxr-xr-x 1 admin root 0 2008-09-17 15:49 .
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 ..

т.е. harddisk "отсутствует", a usbflash - пустой, как такое может быть?
И на всякий случай

[admin@dtr_rout root]$ ls -la /dev/discs/
total 0
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 .
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 ..
lr-xr-xr-x 1 admin root 31 1970-01-01 04:00 disc0 -> ../scsi/host0/bus0/target0/lun0
lr-xr-xr-x 1 admin root 31 1970-01-01 04:00 disc1 -> ../scsi/host1/bus0/target0/lun0
[admin@dtr_rout root]$ ls -la /dev/discs/disc0/
total 0
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 .
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 ..
brw------- 1 admin root 8, 0 1970-01-01 04:00 disc
brw------- 1 admin root 8, 1 1970-01-01 04:00 part1
brw------- 1 admin root 8, 2 1970-01-01 04:00 part2
[admin@dtr_rout root]$ ls -la /dev/discs/disc1/
total 0
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 .
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 ..
brw------- 1 admin root 8, 16 1970-01-01 04:00 disc
brw------- 1 admin root 8, 17 1970-01-01 04:00 part1



++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++
Для информации - вывод некоторых команд, после того как я - выдергиваю usb-адаптер, подключаю питание, перекидываю выключатель, и подключаю адаптер к роутеру. Т.е. попытки восстановить исходную конфигурацию.


[admin@dtr_rout root]$ mount
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/discs/disc1/part1 on /tmp/mnt/disc1_1 type ext3 (rw,noatime)
/dev/discs/disc0/part2 on /opt type ext3 (rw,noatime)
[admin@dtr_rout root]$ ls -la /tmp/
total 1
drwxr-xr-x 1 admin root 0 2000-01-01 04:00 .
drwxr-xr-x 1 admin root 118 2008-03-30 13:52 ..
-rw-r--r-- 1 admin root 93 2008-09-18 07:49 dnsmasq.log
drwxr-xr-x 1 admin root 0 2008-03-30 13:52 etc
-rw-r--r-- 1 admin root 1161 1970-01-01 04:00 filter_rules
-rw-r--r-- 1 admin root 4924 2008-09-17 22:30 flash.tar.gz
lrwxrwxrwx 1 admin root 16 2008-09-18 08:38 harddisk -> /tmp/mnt/disc1_1
drwxr-xr-x 1 admin root 0 2000-01-01 04:00 local
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 mnt
-rw-r--r-- 1 admin root 96 1970-01-01 04:00 nas.lan.conf
-rw-r--r-- 1 admin root 3 1970-01-01 04:00 nas.lan.pid
-rw-r--r-- 1 admin root 33 1970-01-01 04:00 nas.wan.conf
-rw-r--r-- 1 admin root 2303 1970-01-01 04:00 nat_rules
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 ppp
-rw-r--r-- 1 admin root 46 1970-01-01 04:00 resolv.conf
lrwxrwxrwx 1 admin root 21 2008-09-17 15:49 syslog.log -> /opt/var/log/messages
lrwxrwxrwx 1 admin root 8 1970-01-01 04:00 udhcpc -> /sbin/rc
lrwxrwxrwx 1 admin root 16 2008-09-18 08:38 usbflash -> /tmp/mnt/disc0_2
drwxr-xr-x 1 admin root 0 2000-01-01 04:00 var
[admin@dtr_rout root]$ ls -la /tmp/harddisk/
total 137252
drwxr-xr-x 5 admin root 4096 2008-09-17 08:39 .
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 ..
drwxr-xr-x 2 admin root 4096 2008-09-08 08:58 ftp_pub
drwx------ 2 admin root 16384 2008-06-08 19:35 lost+found
-rw-r--r-- 1 admin root 140370386 2008-09-17 08:57 opt.tar.gz
drwxr-xr-x 7 admin root 4096 2008-09-17 08:29 torrent
[admin@dtr_rout root]$ ls -la /tmp/usbflash/
total 0
drwxr-xr-x 1 admin root 0 2008-09-17 15:49 .
drwxr-xr-x 1 admin root 0 1970-01-01 04:00 ..



Собственно вопрос - что происходит и как с этим бороться?

vectorm
18-09-2008, 07:37
Попробуй post-mount изменить:

[admin@dtr_rout root]$ cat /tmp/local/sbin/post-mount
#!/bin/sh

status=`/bin/mount | grep 'opt'`
if [ -n "${status}" ]; then
rm /tmp/usbflash/
ln -s /tmp/mnt/disc0_2 /tmp/usbflash
else
rm /tmp/usbflash/
ln -s /tmp/mnt/disc0_2 /tmp/usbflash
swapon /dev/discs/disc0/part1
/bin/mount -o bind,sync,noatime,rw /tmp/mnt/disc0_2/opt /opt
fi

rm /tmp/harddisk/
ln -s /tmp/mnt/disc1_1 /tmp/harddisk

/opt/etc/init.d/S05syslogd
/opt/bin/transmission-daemon -g /tmp/harddisk/torrent/.config/transmission
/opt/etc/init.d/S10cron
busybox_httpd -p 81 -h /opt/share/www/rrd
И по голове тому, кто винт выключает - такими темпами скоро будет новый покупать.

Cd_spb
18-09-2008, 09:49
vectorm, спасибо, попробую и завтра узнаю, помогло или нет. У меня в планах установить Netgear SC101 (http://wl500g.info/showthread.php?t=15643), так что пока не страшно.

Cd_spb
19-09-2008, 06:19
Не помогло. Сегодня утром картина такая же как в первом посте.

vectorm
19-09-2008, 16:35
Не помогло. Сегодня утром картина такая же как в первом посте.
Попробуй местами переткнуть, порты же жестко пронумерованы, может поэтому флешка на 1 диск съезжает.

Cd_spb
19-09-2008, 17:07
Попробуй местами переткнуть, порты же жестко пронумерованы, может поэтому флешка на 1 диск съезжает.
Дык вроде она воткнута в нулевой порт?
А что будет происходить при загрузке, если только флешка воткнута?