GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu přesunout adresář /var/log

Ř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í),


Linux
  1. Rozdíl mezi /var/log/messages, /var/log/syslog a /var/log/kern.log?

  2. 20 Soubory protokolu Linux, které jsou umístěny v adresáři /var/log

  3. CentOS / RHEL :Jak otočit soubory /var/log/wtmp a /var/log/btmp pomocí logrotate

  1. Jak zkrátit soubor /var/log/lastlog

  2. Jak mohu zkontrolovat, zda adresář existuje?

  3. Django static_root v /var/www/... - žádná oprávnění ke collectstatic

  1. Jak mohu připojit obraz disku?

  2. Měly by weby žít ve /var/ nebo /usr/ podle doporučeného použití?

  3. Smazat celý /var/log?