GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa memindahkan direktori /var/log

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 (menggunakan lsof 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),


Linux
  1. CentOS / RHEL :Cara memutar file /var/log/wtmp dan /var/log/btmp menggunakan logrotate

  2. Cara memotong File /var/log/lastlog

  3. Bagaimana saya bisa mengecualikan direktori dari perintah ls

  1. Django static_root di /var/www/... - tidak ada izin untuk mengumpulkan statis

  2. Bagaimana saya bisa mengembalikan chmod pada direktori dll?

  3. Log sistem kosong (/var/log/messages; /var/log/secure; dll)

  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Linux – Bagaimana Cara Memantau Disk I/o Di Direktori Tertentu?

  3. Bagaimana Cara Mengubah Mount Points?