Увеличение доступного размера или изменение местоположения /tmp
В настоящее время я отвечаю за сервер под управлением Red Hat и веб-приложение для биоинформатики, которое работает с огромными файлами, некоторые из которых имеют более 100 ГБ в несжатом виде. Распаковка этих файлов выполняется несколькими различными программами, каждая из которых использует системный временный каталог /tmp. Когда распаковывается огромный файл, /tmp заполняется и останавливает текущую операцию, вызывая ошибки в нисходящем направлении в веб-приложении. Я должен пойти и удалить файл проблемы из /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, но я не знаю много о файловых системах. То, что я хотел бы сделать, это принять постоянное решение, чтобы выделить больше места для временного каталога. Я был бы открыт для установки переменной среды TMPDIR для указания на другую файловую систему с большим количеством места. Или, если это возможно, я был бы одинаково доволен, выделив больше пространства для LogVol-01.
Мой вопрос заключается в том, как, учитывая мои текущие данные файловой системы, постоянно выделять больше места для временного каталога. Как видно из вывода df, у меня есть свободное место на диске. Я не настраивал сервер, но теперь я отвечаю за него и у меня есть root-доступ, к лучшему или к худшему!
2 ответа
Обновить:
Поскольку вы теперь подтвердили, что / tmp не является символической ссылкой и что в / tmp нет монтировок. Это в основном говорит, что / заполняется. Как вы это исправите? 2 варианта.
- Я вставил бы другой жесткий диск и смонтировал бы его в / tmp, вставив соответствующую запись в / etc / fstab.
- Или в качестве временной меры перенесите / tmp на другой диск, например /dev/sdb1, на котором в настоящее время свободно сотни ГБ. Это просто вопрос создания каталога tmp в /dev/sdb1
т.е.
sudo mkdir /data/tmp
sudo chmod 1777 /data/tmp
sudo rm /tmp
sudo ln -s /data/tmp /tmp
Если вы предпочитаете добавить больше памяти (что является лучшим долгосрочным решением), в сети есть множество руководств по добавлению дополнительных дисков в Linux.
Как добавить дополнительный жесткий диск в Linux
Оригинальный ответ...
TMPFS может быть виновником. Он основан на баране, и он будет использовать своп, когда это необходимо. Это означает, что он будет расти и расти до тех пор, пока больше не будет использоваться оперативная память для tmpfs. Вы заканчиваете с неполной распаковкой.
Затем вам нужно отредактировать / etc / fstab и закомментировать (с начальным '#') строку, начинающуюся с '/ tmp', и перезагрузиться или размонтировать /tmp (с помощью 'sudo umount /tmp')
Похоже, что у вас есть весь накопитель, использующий LVM, поэтому безопасно не монтировать замену для / tmp.
Редактировать:
Хотел бы я видеть файл fstab по умолчанию от redhat или ваш. В любом случае... Возможно, что / tmp не существует в fstab, потому что это может быть символическая ссылка.
Чтобы выяснить это, запустите "ls -ld /tmp". Если это символическая ссылка, вы увидите ее в списке с /tmp -> /dev/shm или чем-то еще.
Если это на самом деле ссылка на / dev / shm или на каталог, который смонтирован как tmpfs, то исправьте это с помощью:
sudo rm /tmp
sudo mkdir /tmp
sudo chmod 1777 /tmp
РЕДАКТИРОВАТЬ 2: Если подумать, это могут быть и другие причины.
- Либо / tmp заполняется, либо
- Инструменты распаковки не очень хорошо работают с вашими большими архивами. 100 ГБ несжатых данных, вероятно, большой архив! Какие инструменты вы используете для извлечения архива. Что это за формат? Я знаю, что некоторые версии tar имеют проблемы, или
- Тип файловой системы не позволяет извлекать некоторые файлы, поскольку они превышают лимит файловой системы. Какой тип целевой файловой системы? это ext3 или 4 или что-то еще?
- Или файловая система действительно просто заполнена.
Я почти уверен, что / tmp и tmpfs основаны на оперативной памяти, поэтому распаковка и сохранение их в оперативной памяти может быть причиной того, что все остановится. Операционная система начинает меняться как сумасшедшая, и вы начинаете замечать падение производительности.
Должна ли эта операция выполняться в /tmp?
Добавление фактического ответа: