在我们的生产服务器上有一个用于根安装点的小驱动器,
/ var / log占用太多空间,我必须手动删除一些文件.
我如何移动/ var / log /让我们说/ home / log而不重新启动?
/ var / log占用太多空间,我必须手动删除一些文件.
我如何移动/ var / log /让我们说/ home / log而不重新启动?
这是我想的事情:
$mkdir /home/log $rsync -a /var/log /home/log $mount --bind /home/log /var/log $/etc/init.d/rsyslof restart
但我知道有些服务使用文件描述符,因此他们将继续使用/ var / log或inode.
解决方法
正确的设计
我假设您无法简单地扩展有问题的文件系统(使用lvextend&& ext2online),因为您不使用LVM或使用错误的文件系统类型.
你的方法
如果您使用SIGHUP(kill -1 pid)向守护进程发出信号,那么您提出的建议可能会奏效.显然你需要稍后“mount -o bind / / somewhere”并清理挂载/ var / log下面的内容.但它对我来说有难闻的气味,特别是对于生产而言.
避免停机,有一个干净的结果(但很复杂)
忘记“mount -o bind”的想法,创建一个新的LV /分区,但不要挂载它.
lsof | grep /var/log # lists open files in /var/log
对于每个具有任何打开文件的守护进程(我至少期望syslog,inetd,sshd):
>重新配置守护程序no以登录到/ var / log
>刷新守护进程(kill -1或/etc/init.d/script reload)
>用lsof确认守护进程已关闭其文件的grep / var / log
挂载/ var / log.
再次恢复旧配置,SIGHUP / reload守护程序.
简单的方法(停机时间)
创建一个新的LV /分区并将其正确安装在/ var或/ var / log上.简单的方法是将服务器关闭到维护模式(单用户模式),并使用实际的控制台(而不是ssh)进行操作.