我目前负责一台运行红帽的服务器和一个处理大文件的生物信息学web应用程序,其中一些在未压缩时超过100GB。 解压缩这些文件的操作是由几个不同的程序完成的,所有这些程序都使用系统临时目录/ tmp。 当一个巨大的文件被解压缩时,/ tmp填满并暂停正在进行的操作,导致webapp中的下游错误。 我必须从/ tmp中删除问题文件。
服务器的文件系统是这样设置的:
/*output of df-h follows*/ Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_root-LogVol01 83G 34G 45G 43% / tmpfs 95G 0 95G 0% /dev/shm /dev/sda1 485M 81M 379M 18% /boot /dev/sdb1 8.0T 6.2T 1.5T 82% /data /*output of blkid follows*/ /dev/sda1: UUID="5f489589-0678-46c1-9f0f-e4e66c6a9e04" TYPE="ext4" /dev/sda2: UUID="k2rP0k-1YhK-72D9-fRrQ-BxUW-3gaC-6KF0nh" TYPE="LVM2_member" /dev/sdb1: UUID="4e54bee3-6450-446f-af80-70ca6268e12f" TYPE="ext4" /dev/mapper/vg_root-LogVol01: UUID="b6f228dc-fa6c-43c1-b88e-3b43a75e980b" TYPE="ext4" /dev/mapper/vg_root-LogVol00: UUID="80c6863d-c9f8-4abe-a353-a6a6818dc82d" TYPE="swap" /*output of fstab*/ /dev/mapper/vg_root-LogVol01 / ext4 defaults 1 1 UUID=5f489589-0678-46c1-9f0f-e4e66c6a9e04 /boot ext4 defaults 1 2 /dev/mapper/vg_root-LogVol00 swap swap defaults 0 0 /dev/sdb1 /data ext4 defaults 1 1 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
我知道Linux的基础知识,但我对文件系统知之甚less。 我想要做的是制定一个永久的解决scheme来分配更多的空间到临时目录。 我会打开设置TMPDIR环境variables指向具有更多空间的另一个文件系统。 或者,如果可能的话,我也同样满意地将更多的现有空间分配给LogVol-01。
我的问题是如何,给我目前的文件系统的细节,永久分配更多的空间到临时目录。 正如你所看到的DF输出,我有磁盘空间来备用。 我没有设置服务器,但我现在负责它,有根访问,好或坏!
更新:
由于您现在已经确认/ tmp不是符号链接,并且在/ tmp处没有挂载。 这基本上说是/正在填补。 你如何解决这个问题? 2个选项。
即
sudo mkdir /data/tmp sudo chmod 1777 /data/tmp sudo rm /tmp sudo ln -s /data/tmp /tmp
如果你想添加更多的存储(这是一个更好的长期解决scheme),networking上有很多关于如何添加额外驱动器到Linux的教程。
如何添加一个额外的硬盘驱动器到Linux
原始答案…
tmpfs可能是罪魁祸首。 它是基于ram的,它也会在需要的时候使用交换。 这意味着它将继续增长和增长,直到没有更多的内存可用于tmpfs。 你最后是一个不完整的解压缩。
你需要做的是编辑/ etc / fstab并注释掉(以'#'开头的行以'/ tmp'开始并重新启动或卸载/ tmp('sudo umount / tmp'))
看起来你已经使用了LVM的整个驱动器,所以安装/ tmp的替代品是安全的。
编辑 :
希望我能看到来自redhat或您的默认fstab文件。 无论如何… / tmp可能不存在于fstab中,因为它可能是一个符号链接。
找出运行“ls -ld / tmp”。 如果它是一个符号链接,你会看到它列出了/ tmp – > / dev / shm或者其他东西。
如果它实际上是到/ dev / shm的链接,或者是作为tmpfs挂载的目录,请使用以下命令修复此问题:
sudo rm /tmp sudo mkdir /tmp sudo chmod 1777 /tmp
编辑2:在第二个想法,这可能是其他原因。
我很确定/ tmp和tmpfs是基于RAM的,所以解压缩它们并将它们存储在RAM中可能是事情陷入停滞的原因。 操作系统开始疯狂交换,所以你开始真正注意到性能的影响。
这个操作必须在/ tmp中发生吗?
添加一个实际的答案: