Добрый день уважаемые форумчане! С недавних пор на меня легла задача администрирования небольшого веб-сервера на debian. В ходе работы я столкнулся со следующей проблемой:
в папке var стало периодически заканчиваться место, и сервер переставал работать. Я удалял логи и работа возобновлялась. Затем настроил ротацию логов, места хватало надольше. В результате увеличил место на 100 гигов на гостевой машине в vmsphere. Перезапустил сервер, место появилось. Создал новый раздел /dev/sda3 размеров 100 гигов. /var смонтирована в /dev/sda7 . Вопрос, могу ли я примонтировать /dev/sda3 к папке /var чтобы не потерять содержимое var? Если нет, то как лучше сделать?
Помогите новичку пожалуйста.
Монтирование устройства в существующую папку
Вопрос, могу ли я примонтировать /dev/sda3 к папке /var чтобы не потерять содержимое var?
В принципе это возможно, например посредством overlayfs, unionfs или aufs, но для вас это будет сложно, да и использовать такую связку на сервере может быть несколько неудобно и чревато потерей данных, в особенности, если вы недавно стали использовать Linux.
Поэтому вам нужно загрузиться с какого-нибудь LiveCD, скопировать куда-либо данные на текущем /var, удалить раздел с /var, удалить раздел /dev/sda3, создать один большой раздел из этих двух, создать на нём файловую систему, записать обратно данные, отредактировать /etc/fstab, указав в нём, что в /var монтируется этот новый раздел.
Если /dev/sda3 и /dev/sda7 находятся не рядом и объединить их вместе невозможно, тем более /dev/sda7 у вас находится в расширенном разделе, а /dev/sda3 - основной раздел, то вы можете посмотреть в сторону LVM. Вам нужно опять же скопировать куда-либо данные с /var, затем из /dev/sda3 и /dev/sda7 создать группу LVM томов, создать LVM том, на нём файловую систему, вернуть на этот том данные, отредактировать /etc/fstab.
Вот почитайте про LVM: http://xgu.ru/wiki/LVM
Удачи.
Спасибо большое! А если сделать так: sda7 у меня 30 гигов, sda3 100 гигов. Если я остановлю апач, примонтирую на sda3 папку var2, скопирую туда содержимое папки var. Затем переименую исходную папку var в var3 а var2 в var. В итоге размер папки var увеличится до 100 гигов, а раздел sda7 оставлю к примеру под бэкапы. Пройдет ли такой финт?
upd: сервер находятся далеко, подключаюсь по ssh, загрузиться с livecd нет возможности
Затем переименую исходную папку var в var3 а var2 в var
Не надо ничего переименовывать, это не "папки", а точки монтирования. Поэтому, просто монтируете /dev/sda3 куда-либо, например:
mkdir /tmp/var
mount /dev/sda3 /tmp/var
Затем останавливаете всё, что может писать в /var, все сервисы, прочее, копируете данные:
cp -a /var/* /tmp/var
После того, как всё скопируется отмнотируете /tmp/var и /var и монтируйте /dev/sda3 в /var
umount /tmp/var
umount /var
mount /dev/sda3 /var
Редактируете /etc/fstab, указав, что в /var теперь монтируется /dev/sda3.
Копируйте данные именно посредством 'cp -a', что бы не "слетели" права доступа, но у вас должно быть всё остановлено. Если возможности всё остановить нет, то вам придётся некоторые директории на новом /var создать в ручную и назначить им правильные права доступа и владельцев.
Удачи.
А как узнать что я остановил все, что надо, и что все данные скопировались с нужными правами и в полном объеме?всё, что может писать в /var, все сервисы, прочее, копируете данные:
cp -a /var/* /tmp/var
vincently, так у вас точка монтирования сменится после перезагрузки, а не сразу. Так что проблем возникнуть не должно. А вообще, /dev/sda7 можно смонтировать какой либо каталог из /var. Например /var/www.
А как узнать что я остановил все, что надо
Использовать команду lsof:
lsof /var
Ну или попросту попробовать отмонтировать /var,
umount /var
если отмонтируется - значит, всё, что писало в /var/остановлено, ну или по крайней мере сейчас не пишет и не держит открытых файлов.
и что все данные скопировались с нужными правами
Если копируете посредством 'cp -a', то права будут правильные.
в полном объеме?
Смотрите по занятому пространству
df -h /var /tmp/var
, суммарному объёму файлов на файловой системе
du -xsh /var/* /tmp/var/*
или числу файлов и директорий.
find /var | wc -l
find /tmp/var | wc -l
ну если копировать cp с ключиком -a то уверенность 100% что права с копируются верно.
Огромное спасибо за подсказки! Решил скопировать все содержимое var себе на диск по ssh, для надежности. Вечером попробую провернуть операцию
Решил скопировать все содержимое var себе на диск по ssh, для надежности.
В таком случае для надёжности, что бы точно сохранились все права архивируйте содержимое:
tar -czpf var.tar.gz /var/*
А то на вашей системе UID`ы и GID`ы пользователей и групп могут отличаться.
Так лучше не делать, так как вы можете потерять права на файлы и каталоги, к тому же старый var вы никуда не деваете и сможете восстановить все как было.Решил скопировать все содержимое var себе на диск по ssh, для надежности.
Загружайтесь в single user mode, т.к. в этом режиме ничего лишнего не стартует (даже файловые системы не монтируются, кроме корневой в ro).
После загрузки в single mode смонтируйте все фаловые и новый var в /mnt
mount -a
mount /dev/sda3 /mntПосле чего копируйте используя tar содержимое var
cd /var
tar -cvf - ./ | tar -C /mnt -xf -В конце поправьте fstab вместо /dev/sda7 пропишите /dev/sda3
И перезагружайтесь.
pitdron, у него нет физ доступа к серваку. Так что к single user mode он не загрузится, лучьше пусть затарит var
Мужики, вообщем все удачно скопировалось, только никак не получается отмонтировать /var. пробовал и umount -f /var и fuser -km /var.
Все время одно и тоже:
" /var: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
"
Что можно сделать?
/var: device is busy
Ну так и смотрите, что у Вас его заняло!
lsof в помощь. Смотрите кто там открытые файлы (или текущие каталоги) держит.
Только есть подозрение, что если остановить всё, что открыла файлы в var, система станет неработоспособной.
[quote="vincently"]/var: device is busy
Ну так и смотрите, что у Вас его заняло![/quote]
Так в том то и дело что непонятно что. lsof показывает что нет никаких процессов
Покажите вывод mount, если /var на корне, то и не получится отмонтировать.
Покажите вывод mount, если /var на корне, то и не получится отмонтировать.
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=256140,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=206128k,mode=755)
/dev/disk/by-uuid/f98de536-45b5-4117-9129-dd1d45ad5165 on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered,jqfmt=vfsv0,usrjquota=aquota.user,grpjquota=aquota.group)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1250700k)
/dev/sda9 on /var type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered,usrquota,grpquota)
/dev/sda8 on /tmp type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
/dev/sda5 on /usr type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
/dev/sda6 on /home type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
vincently, *SCRATCH* если копировалось до фига, то лучше перезагрузиться.
[quote=stranger][quote="vincently"]/var: device is busy
Ну так и смотрите, что у Вас его заняло![/quote]
Так в том то и дело что непонятно что. lsof показывает что нет никаких процессов[/quote]
Ну чудес-то не бывает! Значит, в данный момент ничто не пишет.