Я столкнулся с проблемой где мой сервер, просто заполненный на этой неделе.
➜ ~ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 20G 19G 0 100% /
devtmpfs 7.9G 0 7.9G 0% /dev
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 7.9G 102M 7.8G 2% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/sda3 1.8T 94G 1.6T 6% /home
Теперь это неприменимо по большей части.
Мой поставщик услуг хостинга не хочет уменьшаться /dev/sda3
и расширитесь /dev/root/
для меня, к сожалению, и я - новичок при администрировании сервера, и я знаю, что испорчу вещи путем экспериментирования. Кроме того, я также хотел бы знать то, что заполнило корневую файловую систему (и я не могу просто искать в /
) и посмотрите, как остановить его.
Как я могу сделать это пошаговое, не теряя данные? В случае необходимости я могу войти в спасательный режим. Моим hoster является Kimsufi.
Спасибо!
Относительно обсуждения в комментариях это кажется на выполнение сервера, который полагается на большое (или по крайней мере largeish) база данных в /var
. На таком компьютере это важно для любого отделенного /var
(или подкаталог его) в достаточно большой раздел, чтобы содержать базу данных или гарантировать тот корень (/
) является достаточно большим. На самом деле много серверов добиваются большего успеха с отдельным /var
раздел, чем с отдельным /home
раздел - хотя Ваш df
вывод показывает, что у Вас есть 94 ГБ на /home
, таким образом, это, кажется, не имеет место для Вас. Тем не менее, если Вы выполняете сервер MySQL, 20 ГБ для корня (/
) и не отдельный /var
раздел звучит несоответствующим, таким образом, Ваша проблема понятна. Вы могли бы хотеть консультироваться с экспертом по MySQL для совета относительно того, сколько дискового пространства Ваша база данных, как могли бы ожидать, использует.
В любом случае возможно сделать, "живое" изменяет размер некоторых файловых систем; но увеличение размера намного лучше поддерживается, чем уменьшение размера файловой системы, и кажется, что необходимо будет сделать одну из каждой операции. Если можно войти в систему как root
, необходимо смочь размонтироваться /home
и уменьшите его от своей регулярной начальной загрузки. Знайте, что это - нестандартная конфигурация для Ubuntu, таким образом, необходимо будет включить прямой root
логины - и можно хотеть отключить их впоследствии. (См. этот вопрос и его ответы для больше на этом.) В зависимости от расположения Ваших разделов, могут быть другие сложности, также. Посмотрите этот вопрос и его ответы для некоторой информации об изменении размеров, в то время как Вы зарегистрированы. Если Ваш /home
раздел прибывает после Вашего корня (/
) раздел, Вы могли бы хотеть рассмотреть уменьшение /home
, создание нового раздела после него, перемещая содержание /var
(или безотносительно подкаталога /var
уничтожает такое дисковое пространство) к новому разделу и затем монтирует его в /var
(или его подкаталог, как соответствующий). Поскольку столько программ продолжает работать /var
, перемещение всего из /var
таким образом, вероятно, потребовал бы работы от чрезвычайного диска, но Вы смогли делать это от основной установки для подкаталога /var
.
Тем не менее я соглашаюсь с более ранним комментарием, что, как относительный новичок, это не могло бы быть лучшей вещью попытаться. Если необходимо сделать это, я настоятельно рекомендую настроить компьютер (или виртуальная машина), который соответствует текущей конфигурации максимально тесно так, чтобы можно было практиковать. Лучше вытереть виртуальную машину (или два или три), чем вытереть Ваш реальный сервер!
Другой проверенный временем, но несколько ужасный, подход должен переместить один или несколько каталогов к существующему разделу и полагаться на символьную ссылку вместо того, чтобы монтировать новый раздел. Вы сделали бы что-то вроде этого:
/
) раздел это уничтожает много пространства. Для MySQL я ожидал бы, что это будет /var/lib/mysql
./home
раздел - говорит, /home/var/lib/mysql
. Соответствуйте его владению и полномочиям к оригиналу /var/lib/mysql
каталог./var/lib/mysql
. Я думаю, что это было бы sudo service mysql stop
чтобы сделать это, но я не на 100% уверен в этом.sudo mv /var/lib/mysql/* /home/var/lib/mysql/
. Это переместит файлы от /var/lib/mysql
к /home
раздел.sudo rmdir /var/lib/mysql
удалить тот каталог. (Если это не удалит, затем возможности являются некоторыми файлами, не стал перемещенным. Возможно, они - точечные файлы. Необходимо решить эту проблему.)sudo ln -s /home/var/lib/mysql /var/lib/mysql
. Это создает символьную ссылку так, чтобы программы то использование /var/lib/mysql
все еще сможет получить доступ к файлам в новом месте.sudo service mysql start
должен сделать это.Протест: я не достаточно знаком с MySQL, чтобы быть на 100% уверенным, что эта процедура будет работать правильно на него. Использование символьных ссылок могло бы возмутить его. Кроме того, я не протестировал эту процедуру, поскольку я ввел ее, таким образом, я, возможно, сделал ошибку в одной (или больше) команд.
Поскольку я не эксперт по MySQL, может быть некоторый лучший способ сделать это для MySQL конкретно (предположите, что это - действительно программа, это вызывает проблемы.)