Na naszym serwerze produkcyjnym znajduje się mały dysk dla głównego punktu montowania /
,
/var/log
zajmuje zbyt dużo miejsca i muszę ręcznie usunąć niektóre pliki. Jak mogę przejść /var/log/
do powiedzmy /home/log
BEZ REBOOTINGU?
Oto rzecz, o której myślałem:
$ mkdir /home/log
$ rsync -a /var/log /home/log
$ mount --bind /home/log /var/log
$ /etc/init.d/rsyslof restart
Ale wiem, że niektóre usługi używają deskryptorów plików, więc będą nadal używać /var/log
lub i-węzłów.
linux
debian
log-files
disk-space-utilization
Razique
źródło
źródło
Odpowiedzi:
Prawidłowy projekt
Zakładam, że nie możesz po prostu rozszerzyć danego systemu plików (używając
lvextend && ext2online
), ponieważ nie używasz LVM lub używasz niewłaściwego typu systemu plików.Twoje podejście
To, co zaproponowałeś, może zadziałać, jeśli zasygnalizujesz demony SIGHUP (zabij -1 pid). Oczywiście trzeba później „zamontować -o powiązać / / gdzieś” i wyczyścić to, co pozostało pod zamontowanym / var / log. Ale ma dla mnie nieprzyjemny zapach, szczególnie podczas produkcji.
Unikaj przestojów, uzyskaj czysty wynik (ale skomplikowany)
Zapomnij o pomyśle „mount -o bind”, utwórz nową partycję LV / partycji, ale jeszcze jej nie instaluj.
Dla każdego demona, który ma dowolny otwarty plik (oczekiwałbym przynajmniej syslog, inetd, sshd):
kill -1
lub/etc/init.d/script reload
)lsof | grep /var/log
że demon zamknął swoje plikiZamontuj nad / var / log. Przywróć stare konfiguracje, SIGHUP / przeładuj demony ponownie.
Łatwy sposób (przestój)
Utwórz nową partycję LV / i zamontuj ją poprawnie w katalogu / var lub / var / log. Najłatwiejszym sposobem jest przełączenie serwera w tryb konserwacji (tryb pojedynczego użytkownika) i użycie rzeczywistej konsoli (nie ssh) do operacji.
źródło
Odpowiedzi wszystkich innych są doskonałe i poprawne, więc zdecydowanie powinieneś je najpierw przeczytać.
Pomyślałem, że podzielę się tym, ponieważ ułatwia to kopiowanie i wklejanie, jeśli twoja sprawa okazuje się dość prosta, taka jak moja:
Zatrzymaj syslog i skopiuj bieżące wylogowania:
następnie zamontuj nową lokalizację
/var/log
. Powiedzmy, że to nowe urządzenie o nazwie/dev/sdb
teraz możesz skopiować pliki z powrotem i ponownie uruchomić syslog:
Zakładając, że wszystko to dzieje się dość wcześnie w życiu twojej maszyny,
rsyslog
prawdopodobnie będzie to jedyny działający demon. YMMV!PS - prawdopodobnie będziesz chciał również dodać go do swojego
fstab
. Oto jeden ze sposobów, aby to zrobić, ponownie zakładając bardzo prosty montaż:(por. https://serverfault.com/a/267610/80606 o catting mtab do fstab)
źródło
cp -r
zesudo tar cpf
isudo tar xpf
zachować na własność pliku i uprawnienia na przypadek wyłączenia istnieją logi tworzone przez użytkownika innego niż root.Inną rzeczą, którą możesz zrobić, jest:
/var/log
/var/log
(używająclsof
zgodnie z sugestią kubanskamac)/var/log
na inną partycję z wystarczającą ilością wolnego miejsca (zgodnie z twoim przykładem, to byłoby/home/log
)ln -s /home/log /var/log
)Pamiętaj, że jest to dalekie od tego, co uważam za dobrą praktykę. Jest to tylko obejście problemu, dzięki któremu nie musisz wyłączać serwera. Właściwym rozwiązaniem byłoby utworzenie nowej
/var
lub/var/log
partycji z wystarczającą ilością miejsca (lub rozszerzenie obecnej),źródło
Inne rozwiązanie oparte na @hwjp, jeśli nie możesz użyć innego woluminu dysku do przeniesienia go, możesz utworzyć wolumin dysku wirtualnego na innym woluminie, który ma więcej dostępnego miejsca (tak jest w moim przypadku):
Utwórz wolumin wirtualny:
A) wykonaj:
sudo dd if=/dev/zero of=VHD-log.img bs=1M count=1200
B) do:
sudo mkfs -t ext4 /thevolumeofyourchoice/VHD-log.img
Sformatuj typ systemu plików EXT4 w pliku obrazu VHD-log za pomocą narzędzia mkfs.C) do:
sudo mkdir /thevolumeofyourchoice/vlog
Podłącz VHD-log do katalogu (punkt podłączenia)D) wykonaj:
sudo mount -t auto -o loop /thevolumeofyourchoice/VHD-log.img /thevolumeofyourchoice/vlog
D1) Aby zamontować dziennik VHD podczas uruchamiania systemu do katalogu końcowego, dodaj ten wpis do pliku / etc / fstab.
Przenieś stare pliki dziennika:
E) wykonaj:
service rsyslog stop
lsof | grep /var/log
do list otwiera pliki w / var / log i wyłącza potrzebnego demona (apach2, w moim przypadku freshclam)cp -rp /var/log/* /thevolumeofyourchoice/vlog
(cp -p to samo, co --preserve = tryb, własność, znaczniki czasu)F) wykonaj:
sudo umount /thevolumeofyourchoice/vlog
sudo mv /var/log /var/log-old
sudo mkdir /var/log
sudo chgrp syslog /var/log
sudo mount -t auto -o loop /thevolumeofyourchoice/VHD-log.img /var/log
G) do:
service rsyslog start
i uruchom ponownie inne usługi, które zatrzymałeśWreszcie podwójna kontrola:
Możesz zrobić -
lsof | grep /var/log
aby wyświetlić listę otwartych plików w / var / log i sprawdzić, czy wskazują one na / var / log, a nie / var / log-oldMożesz mv, wykonać kopię zapasową lub usunąć / var / log-old, ponieważ wszystko jest w porządku.
źródło
Po prostu:
źródło
/var/log
zamontowane/home/log
tak, jak jest? Przypuszczam, że całe to pytanie nie dotyczy doświadczonych administratorów.