Řešení 1:
Správný design
Předpokládám, že nejste schopni jednoduše rozšířit příslušný souborový systém (pomocí lvextend && ext2online
), protože nepoužíváte LVM nebo používáte nesprávný typ souborového systému.
Váš přístup
To, co jste navrhli, může fungovat, pokud démonům signalizujete pomocí SIGHUP (zabít -1 pid). Je zřejmé, že budete muset později "mount -o bind / /somewhere" a vyčistit to, co zůstalo pod připojeným /var/log. Ale pro mě má nepříjemný zápach, zejména pro výrobu.
Vyhněte se prostojům, dosáhněte čistého výsledku (ale komplikovaného)
Zapomeňte na myšlenku "připojit -o bind", vytvořte nový LV/oddíl, ale zatím jej nepřipojujte.
lsof | grep /var/log # lists open files in /var/log
Pro každého démona, který má jakýkoli otevřený soubor (očekával bych alespoň syslog, inetd, sshd):
- překonfigurujte démona no tak, aby se přihlašoval do /var/log
- obnovte démona (
kill -1
nebo/etc/init.d/script reload
) - potvrďte pomocí
lsof | grep /var/log
že démon uzavřel své soubory
Připojit přes /var/log.Obnovit staré konfigurace, znovu SIGHUP/reload démony.
Snadný způsob (prostoje)
Vytvořte nový LV/oddíl a správně jej připojte buď přes /var nebo /var/log. Nejjednodušší způsob je přepnout server do režimu údržby (režim pro jednoho uživatele) a pro operaci použít skutečnou konzolu (nikoli ssh).
Řešení 2:
Odpovědi všech ostatních jsou vynikající a správné a rozhodně byste si je měli nejprve přečíst.
Jen mě napadlo, že se o to podělím, protože to usnadňuje kopírování a vkládání, pokud se váš případ ukáže jako docela jednoduchý, jako byl ten můj:
Zastavte syslog a zkopírujte aktuální odhlášení:
service rsyslog stop
mkdir -p /tmp/varlog
cp -r /var/log/* /tmp/varlog
poté připojte nové umístění přes /var/log
. Řekněme, že se jedná o nové zařízení s názvem /dev/sdb
mount /dev/sdb /var/log
nyní můžete zkopírovat soubory zpět a restartovat syslog:
cp -r /tmp/varlog/* /var/log
rm -rf /tmp/varlog
service rsyslog start
Za předpokladu, že k tomu všemu dojde poměrně brzy v životě vašeho počítače, rsyslog
je pravděpodobně jediným spuštěným démonem. YMMV!
PS – budete ho chtít přidat do svého fstab
stejně pravděpodobně. Zde je jeden způsob, jak to udělat, opět za předpokladu velmi přímočarého připojení:
cat /etc/mtab |grep /var/log >>/etc/fstab
(viz https://serverfault.com/a/267610/80606 o převádění mtab na fstab)
Řešení 3:
Další věc, kterou můžete udělat, je:
- Zastavte procesy, které mají otevřené soubory na
/var/log
- Ověřte, že na
/var/log
nejsou žádné procesy s otevřenými soubory (pomocílsof
jak navrhl kubanskamac) - Přesuňte
/var/log
do jiného oddílu s dostatkem volného místa (podle vašeho příkladu by to bylo/home/log
) - Vytvořte symbolický odkaz z /var/log na /home/log (
ln -s /home/log /var/log
) - Restartujte procesy, které jste zastavili v prvním kroku
Vezměte prosím na vědomí, že to je daleko od toho, co bych považoval za dobrý postup. Je to jen řešení, abyste nemuseli vypínat server. Správným řešením by bylo vytvořit nový /var
nebo /var/log
oddíl s dostatkem místa (nebo rozšířit stávající),