Solusi 1:
Desain yang tepat
Saya menganggap Anda tidak dapat dengan mudah memperluas sistem file yang dimaksud (menggunakan lvextend && ext2online
), karena Anda tidak menggunakan LVM atau menggunakan tipe sistem file yang salah.
Pendekatan Anda
Apa yang Anda usulkan mungkin berfungsi jika Anda memberi sinyal daemon dengan SIGHUP (kill -1 pid). Jelas Anda perlu nanti di "mount -o bind / /somewhere" dan membersihkan apa yang tersisa di bawah mount /var/log. Tapi bagi saya baunya tidak enak, terutama untuk produksi.
Hindari downtime, dapatkan hasil yang bersih (namun rumit untuk dilakukan)
Lupakan ide "mount -o bind", buat LV/partisi baru, tetapi jangan pasang dulu.
lsof | grep /var/log # lists open files in /var/log
Untuk setiap daemon yang memiliki file terbuka (saya harapkan setidaknya syslog, inetd, sshd):
- konfigurasi ulang no daemon untuk masuk ke /var/log
- segarkan daemon (
kill -1
atau/etc/init.d/script reload
) - konfirmasi dengan
lsof | grep /var/log
daemon tersebut telah menutup filenya
Pasang /var/log. Pulihkan konfigurasi lama, SIGHUP/muat ulang daemon lagi.
Cara mudah (waktu henti)
Buat LV/partisi baru dan pasang dengan benar di atas /var atau /var/log. Cara mudahnya adalah menurunkan server ke mode pemeliharaan (mode pengguna tunggal), dan menggunakan konsol aktual (bukan ssh) untuk operasi.
Solusi 2:
Jawaban semua orang sangat bagus dan benar, dan Anda harus membacanya terlebih dahulu.
Saya pikir saya akan membagikan ini karena memudahkan salin dan tempel, jika kasus Anda ternyata cukup sederhana seperti kasus saya:
Hentikan syslog dan salin log keluar saat ini:
service rsyslog stop
mkdir -p /tmp/varlog
cp -r /var/log/* /tmp/varlog
lalu, pasang lokasi baru Anda melalui /var/log
. Misalnya perangkat baru bernama /dev/sdb
mount /dev/sdb /var/log
sekarang Anda dapat menyalin file kembali dan memulai ulang syslog:
cp -r /tmp/varlog/* /var/log
rm -rf /tmp/varlog
service rsyslog start
Dengan asumsi ini semua terjadi cukup awal dalam kehidupan mesin Anda, rsyslog
kemungkinan menjadi satu-satunya daemon yang berjalan. YMMV!
PS - Anda ingin menambahkannya ke fstab
Anda juga mungkin. Inilah salah satu cara melakukannya, sekali lagi dengan asumsi tunggangan yang sangat mudah:
cat /etc/mtab |grep /var/log >>/etc/fstab
(cf https://serverfault.com/a/267610/80606 tentang catting mtab ke fstab)
Solusi 3:
Hal lain yang dapat Anda lakukan adalah:
- Hentikan proses yang membuka file di
/var/log
- Verifikasi bahwa tidak ada proses dengan file terbuka di
/var/log
(menggunakanlsof
seperti yang disarankan kubanskamac) - Pindahkan
/var/log
Anda ke partisi lain dengan ruang kosong yang cukup (mengikuti contoh Anda, yaitu/home/log
) - Buat tautan simbolis dari /var/log ke /home/log (
ln -s /home/log /var/log
) - Mulai ulang proses yang Anda hentikan pada langkah pertama
Harap dicatat bahwa ini jauh dari apa yang saya anggap sebagai praktik yang baik. Itu hanya solusi agar Anda tidak perlu mematikan server. Solusi yang tepat adalah membuat /var
baru atau /var/log
partisi dengan ruang yang cukup (atau perluas yang sekarang),