Предыстория: Некоторое время назад был арендован виртуальный сервер, с развёрнутым на нём Debian 6. Все каталоги ОС находились на одном (совсем небольшом) разделе диска. Сервер успешно предоставлял доступ к расположенным на нём сайтам, крутил небольшую БД на MySQL, места хватало, и все были счастливы. Позже было принято решение запустить на нём почтовые службы, и тут возникла проблема - для почтовых ящиков пользователей места было маловато. :( Было решено увеличить дисковое пространство, изменив размер основного раздела (этот вариант сразу отпал, поскольку раздел был в Ext3) или, создав отдельный "диск" (средствами панели администрирования виртуального сервера), перенести раздел /var на него. Что и было сделано. Рассмотрим процедуру подробнее:
Размечаем раздел под /var на новом диске (новый диск виден в системе как /dev/xvdb):
fdisk /dev/xvdb
n
p
1
нажимаем "ввод"
нажимаем "ввод"
w
Форматируем созданный раздел в Ext4:
mkfs.ext4 /dev/xvdb1
И монтируем его куда-нибудь в систему (в данном случае в /mnt):
mount /dev/xvdb1 /mnt
Копируем старый /var на новый раздел:
cd /var
cp -a ./* /mnt
Добавляем строчку в /etc.fstab:
/dev/xvdb1 /var ext4 defaults 0 0
Перезагружаемся:
reboot
После перезагрузки, выполнив команду df -h, видим строчку:
/dev/xvdb1 4,0G 1,9G 2,0G 49% /var
Теперь система работает с разделом /var на отдельном диске. Проверяем, что все необходимые на сервере службы (web-сервер, базы данных и пр.) работают нормально и...
Очищаем старый /var, для этого останавливаем основные службы (web-сервер, базы данных и пр.):
/etc/init.d/apache2 stop
/etc/init.d/nginx stop
/etc/init.d/mysql stop
и т.д.
Нам необходимо отмонтировать новый /var, однако, при попытке выполнить команду umount /var, получаем сообщение:
umount: /var: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
Решить эту проблему можно, загрузившись в singlemod, но сделать это на удалённом, виртуальном сервере крайне проблематично :(
Тут нам на помощь придёт опция "-l" команды umount:
umount -l /var
Удаляем содержимое старого /var:
cd /var
rm -rf ./*
И перезагружаемся...
reboot
Вот и всё - /var перенесён на новый раздел, места теперь достаточно!