Newsgroup: it.comp.os.linux.sys
Titolo: /usr non si vuole smontare

Ho tutta la gerarchia /usr su un HD diverso da quello di /
Viene montata da /hda3 in fase di boot (c'è un'entry in fstab)
Quando si passa a runlevel 6 per lo shutdown, lo script esegue il
killall5 di tutti i processi con i segnali (TERM e KILL).
Dopo il "massacro" si smontano i filesystem locali, seguendo mtab.
Però l'utente privilegiato che ha chiesto lo shutdown occupa ancora
/usr, ergo l'umount risponde con l'errore EBUSY e, pur completando lo
script di chiusura, il successivo boot forza un check sul disco (come è
giusto che sia).
Se nello script di chiusura ci metto un "fuser -m /usr" mi dice proprio
che /usr è occupata dai processi dell'utente che sta chiudendo.
Quindi il quesito è: come aggirare l'ostacolo?
Grazie per i suggerimenti.
Stefano

 Dopo il "massacro" si smontano i filesystem locali, seguendo mtab.
Un gentile kill di quei processi prima di fare lo shutdown?
-- 
Pierluigi De Rosa (
tho...@durin.khazad-dum.net
).
<<      LINUX: the choice of a GNU generation     >>
<<   For my real address... ask the Balrog.       >>
* Sostenete la Lega per la Soppressione dei Troll *

 
E' fatto, proprio in modo gentile. Ma se mando un kill al processo di
login con il quale entra l'utente che spegne tutto, non posso piů
smontare i file sys perchč lo script rc.6 terminerebbe.
Almeno, per ora si comporta cosě... in teoria dovrebbe passare tutto in
mano a init, invece fino alla fine qualcun'altro resta in /usr, e quindi
non si smonta.
ciao

 smontare i file sys perchè lo script rc.6 terminerebbe.
Ma che processi sono? Strano che poi al successivo reboot non parta
e2fsck visto che la partizione non e' stata smontata correttamente.


 
Avanti con il thread:
e2fsck parte eccome... (come avevo già detto nel primo post);
e ora ti faccio vedere cosa dice fuser:
------------------------------------------------------
                     USER        PID ACCESS COMMAND
/usr                 root       1603 ....m  rc.0
                     root       1612 ...e.  fuser
------------------------------------------------------
ignorando fuser, che è forzato da me, è proprio lo script
rc.0 (o rc.6) che esegue occupando in /usr un libreria condivisa
(ACCESS=m).
Il tutto accade su una Slack 7 che ha gli script rc piuttosto semplici.
Re:Re:Ciao

 e ora ti faccio vedere cosa dice fuser:
[..]
A questo punto mi posteresti questo /etc/rc.0, giusto per capire che
accidenti fa? Sulla mia Red Hat lo shutdown avviene normalmente senza
alcuno di questi strani inconvenienti..



#
  # Set the path.
  PATH=/sbin:/etc:/bin:/usr/bin
  # If there are SystemV init scripts for this runlevel, run them.
  if [ -x /etc/rc.d/rc.sysvinit ]; then
    . /etc/rc.d/rc.sysvinit
  fi
  # Set linefeed mode to avoid staircase effect.
  stty onlcr
  echo "Running shutdown script $0:"
# Roba mia 
fuser -muva /usr > /root/usrlog
echo "-------- prima dei KILL -------- " >> /root/usrlog 
# fine Roba mia
  # Find out how we were called.
  case "$0" in
	*0)
		command="halt"
		;;
	*6)
		command=reboot
		;;
	*)
		echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
		exit 1
		;;
  esac
  # Kill all processes.
  # INIT is supposed to handle this entirely now, but this didn't always
  # work correctly without this second pass at killing off the
processes.
  # Since INIT already notified the user that processes were being
killed,
  # we'll avoid echoing this info this time around.
  if [ "$1" != "fast" ]; then # shutdown did not already kill all
processes
    killall5 -15 
    sleep 5
    killall5 -9
  fi
  # Try to turn off quota:
  if fgrep quota /etc/fstab 1> /dev/null 2> /dev/null ; then
    if [ -x /sbin/quotaoff ]; then
      echo "Turning off filesystem quotas."
      /sbin/quotaoff -a
    fi
  fi
  # Turn off accounting:
  if [ -x /sbin/accton ]; then
	echo "Turning off accounting."
	/sbin/accton
  fi
  # Before unmounting file systems write a reboot or halt record to
wtmp.
  $command -w
  # Unmount any remote filesystems:
  echo "Unmounting remote filesystems."
  umount -a -tnfs
 #Roba mia
  fuser -mvua /usr >> /root/usrlog
  echo "-------- Prima dello smonto --------" >> /root/usrlog
 # FINE roba mia 
 
  # Turn off swap, then unmount local file systems.
  echo "Turning off swap."
  swapoff -a
  echo "Unmounting local file systems."
  # Don't remount UMSDOS root volumes:
  if [ ! "`mount | head -1 | cut -d ' ' -f 5`" = "umsdos" ]; then
    umount -a -tnonfs
    echo "Remounting root filesystem read-only."
    mount -n -o remount,ro /
  else
    umount -a -tnonfs -tnoumsdos
  fi
  # This never hurts:
  sync
  # See if this is a powerfail situation.
  if [ -f /etc/power_is_failing ]; then
    echo "Turning off UPS, bye."
    /sbin/powerd -q
    exit 1
  fi
  # Now halt (poweroff with APM kernels) or reboot.
  if [ "$command" = "reboot" ]; then
    echo "Rebooting."
    reboot -f
  else
    halt -f -p
  fi
---------------------------------------------------------------------
Grazie!!!
Stefano

>PGP public key avaiable<<
fingerprint: 14AA 1D7A 1653 E132 47CE  334C C9D3 6A97 208B A915

               ;;
cosi' uccidi comunque tutto cio' che accede al filesystem montato su
/usr. Di solito funziona. Altrimenti non puo' essere che qualche bug in uno dei programmi che usi (sysinit o altro)


 /usr. Di solito funziona. Altrimenti non puo' essere che qualche bug in uno dei programmi che usi (sysinit o altro)
Grazie dei suggerimenti... e della partita a ping pong !
Ciao

     Mardy
Ho risolto anch'io cosě parzialmente il problema, obbligando il remount
in readonly. Non esegue il check. 
Vorrei capire perň se č il modo giusto di procedere.
Tanto per continuare la discussione (puň essere utile aldilŕ del mio
problema specifico): in una installazione brutale, tutta la gerarchia di
sistema sta dentro
un unica partizione montata come root (/). Quindi č ovvio che lo script
di chiusura ne occupa una parte mentre esegue (non solo /usr). Gli
script di base, forniti con le distribuzioni forzano il remount in
readonly di / ergo mi viene da pensare che sia il modo giusto di
procedere; anzi se per qualche ragione un script "custom" operasse su
piů partizioni da smontare, tutte andrebbero trattate in questo modo.
Evidentemente il fatto che lo script esegua con accesso in scrittura non
č determinante: puň privarsi lui stesso di questo diritto al volo e
completare l'esecuzione senza intoppi.
Ciao
Stefano

 
Penso che nel mio caso il busillis sia una gestione più corretta
dell'umount.
Ho rimontato la /usr in ro e sembra che gli sia piaciuto.
PS: avevo la 2.2.13, ho applicato la patch per la 2.2.14 ma il problema
restava:
quindi colpa mia da qualche parte, ora sembra a posto.
Grazie, ciao
Stefano

 readonly di / ergo mi viene da pensare che sia il modo giusto di
Sicuramente e' piu' oculata una installazione in cui i filesystems sono
distribuiti su piu' partizioni, es.
[root@mordor /root]# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda6               497667     46417    425548  10% /
/dev/hda8               497667    161722    310243  34% /home
/dev/hda11              877974        13    832603   0% /opt
/dev/hda9              1981710    662778   1216496  35% /usr
/dev/hda10             1492311     44663   1370538   3% /var
/dev/hda1              2056000    979424   1076576  48% /mnt/winc
/dev/hda5              2048448    368128   1680320  18% /mnt/wind
/dev/hdc                657454    657454         0 100% /mnt/cdrom
//BERNADETTE/APPOGGIO
                       4704128   3640832   1063296  77% /mnt/samba
in questo modo i vari filesystems vengono controllati separatamente.


 distribuiti su piu' partizioni, es.
Da quando ho fatto cosi` e ho messo in sola lettura tutto il
possibile. Ho un sistama piu` robusto. In casi di interruzioni di
correnteo tastiera irrimediabilmete bloccata e conseguente
spegnimente a caldo non ho piu` avuto problemi di perdita di dati
o di inconsistenze del file system.
Inoltre si possono scegliere dimensione di I-node piu` adatte a
seconda dell'utilizzo + mount particolari per avere un po di
prestazioni in piu`.


 prestazioni in piu`.
Gia'...


 o di inconsistenze del file system.
Ho seguito il tuo consiglio (vedi inizio thread) e ho rimontato in ro
la partizione occupata dallo script di chiusura.
Bisogna stare un po' attenti alla sincronizzazione dello script stesso:
se fa delle cose strane (tipo dei backup in chiusura) è bene mettere il
remount 
della partizione della quale occupa gli I-node dopo quelle istruzioni
critiche.
Altrimenti le scritture vanno a farsi benedire.
Comunque un sync o dei flush dovrebbero mettere le cose a posto
Ciao.
-- 
,-----------------------------------------------------,
| Cut antispam BUBU... without replacing it with YOGY |
`-----------------------------------------------------'

 la partizione occupata dallo script di chiusura.
Bene... l'importante e' che ora sia tutto a posto..


 Cioe' hai messo filesystems in remount read-only?
Si`, /usr /boot. Avrei voluto farlo anche con /, ma non e`
possibile visto che c'e` almeno un file su cui scrive il sistema
regolarmente.


 regolarmente.
Infatti, no ne' una cosa molto 'safe' :)
