Уменьшение/home/и расширение / в то время как сервер работает

Я столкнулся с проблемой где мой сервер, просто заполненный на этой неделе.

➜  ~ 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.

Спасибо!

0
задан 18 July 2017 в 19:03

1 ответ

Относительно обсуждения в комментариях это кажется на выполнение сервера, который полагается на большое (или по крайней мере largeish) база данных в /var. На таком компьютере это важно для любого отделенного /var (или подкаталог его) в достаточно большой раздел, чтобы содержать базу данных или гарантировать тот корень (/) является достаточно большим. На самом деле много серверов добиваются большего успеха с отдельным /var раздел, чем с отдельным /home раздел - хотя Ваш df вывод показывает, что у Вас есть 94 ГБ на /home, таким образом, это, кажется, не имеет место для Вас. Тем не менее, если Вы выполняете сервер MySQL, 20 ГБ для корня (/) и не отдельный /var раздел звучит несоответствующим, таким образом, Ваша проблема понятна. Вы могли бы хотеть консультироваться с экспертом по MySQL для совета относительно того, сколько дискового пространства Ваша база данных, как могли бы ожидать, использует.

В любом случае возможно сделать, "живое" изменяет размер некоторых файловых систем; но увеличение размера намного лучше поддерживается, чем уменьшение размера файловой системы, и кажется, что необходимо будет сделать одну из каждой операции. Если можно войти в систему как root, необходимо смочь размонтироваться /home и уменьшите его от своей регулярной начальной загрузки. Знайте, что это - нестандартная конфигурация для Ubuntu, таким образом, необходимо будет включить прямой root логины - и можно хотеть отключить их впоследствии. (См. этот вопрос и его ответы для больше на этом.) В зависимости от расположения Ваших разделов, могут быть другие сложности, также. Посмотрите этот вопрос и его ответы для некоторой информации об изменении размеров, в то время как Вы зарегистрированы. Если Ваш /home раздел прибывает после Вашего корня (/) раздел, Вы могли бы хотеть рассмотреть уменьшение /home, создание нового раздела после него, перемещая содержание /var (или безотносительно подкаталога /var уничтожает такое дисковое пространство) к новому разделу и затем монтирует его в /var (или его подкаталог, как соответствующий). Поскольку столько программ продолжает работать /var, перемещение всего из /var таким образом, вероятно, потребовал бы работы от чрезвычайного диска, но Вы смогли делать это от основной установки для подкаталога /var.

Тем не менее я соглашаюсь с более ранним комментарием, что, как относительный новичок, это не могло бы быть лучшей вещью попытаться. Если необходимо сделать это, я настоятельно рекомендую настроить компьютер (или виртуальная машина), который соответствует текущей конфигурации максимально тесно так, чтобы можно было практиковать. Лучше вытереть виртуальную машину (или два или три), чем вытереть Ваш реальный сервер!

Другой проверенный временем, но несколько ужасный, подход должен переместить один или несколько каталогов к существующему разделу и полагаться на символьную ссылку вместо того, чтобы монтировать новый раздел. Вы сделали бы что-то вроде этого:

  1. Найдите каталог на корне (/) раздел это уничтожает много пространства. Для MySQL я ожидал бы, что это будет /var/lib/mysql.
  2. Создайте целевой каталог на /home раздел - говорит, /home/var/lib/mysql. Соответствуйте его владению и полномочиям к оригиналу /var/lib/mysql каталог.
  3. Закройте любое программное обеспечение, которое это использует /var/lib/mysql. Я думаю, что это было бы sudo service mysql stop чтобы сделать это, но я не на 100% уверен в этом.
  4. Ввести sudo mv /var/lib/mysql/* /home/var/lib/mysql/. Это переместит файлы от /var/lib/mysql к /home раздел.
  5. Ввести sudo rmdir /var/lib/mysql удалить тот каталог. (Если это не удалит, затем возможности являются некоторыми файлами, не стал перемещенным. Возможно, они - точечные файлы. Необходимо решить эту проблему.)
  6. Ввести sudo ln -s /home/var/lib/mysql /var/lib/mysql. Это создает символьную ссылку так, чтобы программы то использование /var/lib/mysql все еще сможет получить доступ к файлам в новом месте.
  7. MySQL Restart. sudo service mysql start должен сделать это.

Протест: я не достаточно знаком с MySQL, чтобы быть на 100% уверенным, что эта процедура будет работать правильно на него. Использование символьных ссылок могло бы возмутить его. Кроме того, я не протестировал эту процедуру, поскольку я ввел ее, таким образом, я, возможно, сделал ошибку в одной (или больше) команд.

Поскольку я не эксперт по MySQL, может быть некоторый лучший способ сделать это для MySQL конкретно (предположите, что это - действительно программа, это вызывает проблемы.)

1
ответ дан 2 November 2019 в 21:56

Другие вопросы по тегам:

Похожие вопросы: