LinuxForum.Fans
Тема

Монтирование устройства в существующую папку

Автор: vincently 40 сообщений 3035 просмотров
18.12.2014 09:01 #405680

Добрый день уважаемые форумчане! С недавних пор на меня легла задача администрирования небольшого веб-сервера на debian. В ходе работы я столкнулся со следующей проблемой:
в папке var стало периодически заканчиваться место, и сервер переставал работать. Я удалял логи и работа возобновлялась. Затем настроил ротацию логов, места хватало надольше. В результате увеличил место на 100 гигов на гостевой машине в vmsphere. Перезапустил сервер, место появилось. Создал новый раздел /dev/sda3 размеров 100 гигов. /var смонтирована в /dev/sda7 . Вопрос, могу ли я примонтировать /dev/sda3 к папке /var чтобы не потерять содержимое var? Если нет, то как лучше сделать?

Помогите новичку пожалуйста.

18.12.2014 09:16 #405683
"vincently" написал:
Вопрос, могу ли я примонтировать /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

Удачи.

18.12.2014 09:28 #405684

Спасибо большое! А если сделать так: sda7 у меня 30 гигов, sda3 100 гигов. Если я остановлю апач, примонтирую на sda3 папку var2, скопирую туда содержимое папки var. Затем переименую исходную папку var в var3 а var2 в var. В итоге размер папки var увеличится до 100 гигов, а раздел sda7 оставлю к примеру под бэкапы. Пройдет ли такой финт?
upd: сервер находятся далеко, подключаюсь по ssh, загрузиться с livecd нет возможности

18.12.2014 09:40 #405686
"vincently" написал:
Затем переименую исходную папку var в var3 а var2 в var

Не надо ничего переименовывать, это не "папки", а точки монтирования. Поэтому, просто монтируете /dev/sda3 куда-либо, например:

text

mkdir /tmp/var
mount /dev/sda3 /tmp/var

Затем останавливаете всё, что может писать в /var, все сервисы, прочее, копируете данные:

text

cp -a /var/* /tmp/var

После того, как всё скопируется отмнотируете /tmp/var и /var и монтируйте /dev/sda3 в /var

text

umount /tmp/var
umount /var
mount /dev/sda3 /var

Редактируете /etc/fstab, указав, что в /var теперь монтируется /dev/sda3.

Копируйте данные именно посредством 'cp -a', что бы не "слетели" права доступа, но у вас должно быть всё остановлено. Если возможности всё остановить нет, то вам придётся некоторые директории на новом /var создать в ручную и назначить им правильные права доступа и владельцев.

Удачи.

18.12.2014 10:04 #405688

"kostik87" написал:
всё, что может писать в /var, все сервисы, прочее, копируете данные:
cp -a /var/* /tmp/var
А как узнать что я остановил все, что надо, и что все данные скопировались с нужными правами и в полном объеме?
18.12.2014 10:20 · отредактировано #405691

vincently, так у вас точка монтирования сменится после перезагрузки, а не сразу. Так что проблем возникнуть не должно. А вообще, /dev/sda7 можно смонтировать какой либо каталог из /var. Например /var/www.

18.12.2014 10:20 #405692
"vincently" написал:
А как узнать что я остановил все, что надо

Использовать команду lsof:

text

lsof /var

Ну или попросту попробовать отмонтировать /var,

text

umount /var

если отмонтируется - значит, всё, что писало в /var/остановлено, ну или по крайней мере сейчас не пишет и не держит открытых файлов.

"vincently" написал:
и что все данные скопировались с нужными правами
text

Если копируете посредством 'cp -a', то права будут правильные.
"vincently" написал:
в полном объеме?

Смотрите по занятому пространству

text

df -h /var /tmp/var

, суммарному объёму файлов на файловой системе

text

du -xsh /var/* /tmp/var/*

или числу файлов и директорий.

text

find /var | wc -l
find /tmp/var | wc -l
18.12.2014 10:22 #405693

ну если копировать cp с ключиком -a то уверенность 100% что права с копируются верно.

18.12.2014 11:56 #405701

Огромное спасибо за подсказки! Решил скопировать все содержимое var себе на диск по ssh, для надежности. Вечером попробую провернуть операцию

18.12.2014 12:04 #405704
"vincently" написал:
Решил скопировать все содержимое var себе на диск по ssh, для надежности.

В таком случае для надёжности, что бы точно сохранились все права архивируйте содержимое:

text

tar -czpf var.tar.gz /var/* 

А то на вашей системе UID`ы и GID`ы пользователей и групп могут отличаться.

18.12.2014 12:46 #405713

"vincently" написал:
Решил скопировать все содержимое var себе на диск по ssh, для надежности.
Так лучше не делать, так как вы можете потерять права на файлы и каталоги, к тому же старый var вы никуда не деваете и сможете восстановить все как было.

Загружайтесь в single user mode, т.к. в этом режиме ничего лишнего не стартует (даже файловые системы не монтируются, кроме корневой в ro).
После загрузки в single mode смонтируйте все фаловые и новый var в /mnt
text
mount -a
mount /dev/sda3 /mnt

После чего копируйте используя tar содержимое var

text
cd /var
tar -cvf - ./ | tar -C /mnt -xf -

В конце поправьте fstab вместо /dev/sda7 пропишите /dev/sda3
И перезагружайтесь.

18.12.2014 18:35 #405747

pitdron, у него нет физ доступа к серваку. Так что к single user mode он не загрузится, лучьше пусть затарит var

18.12.2014 22:32 #405763

Мужики, вообщем все удачно скопировалось, только никак не получается отмонтировать /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))
"
Что можно сделать?

19.12.2014 00:14 #405765
"vincently" написал:
/var: device is busy

Ну так и смотрите, что у Вас его заняло!

19.12.2014 16:56 #405810

lsof в помощь. Смотрите кто там открытые файлы (или текущие каталоги) держит.
Только есть подозрение, что если остановить всё, что открыла файлы в var, система станет неработоспособной.

19.12.2014 17:00 #405811
stranger написал:
[quote="vincently"]/var: device is busy

Ну так и смотрите, что у Вас его заняло![/quote]
Так в том то и дело что непонятно что. lsof показывает что нет никаких процессов

19.12.2014 17:37 #405815

Покажите вывод mount, если /var на корне, то и не получится отмонтировать.

19.12.2014 20:46 #405832
yars написал:
Покажите вывод mount, если /var на корне, то и не получится отмонтировать.
text
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)
19.12.2014 22:19 #405839

vincently, *SCRATCH* если копировалось до фига, то лучше перезагрузиться.

19.12.2014 23:39 #405846
vincently написал:
[quote=stranger][quote="vincently"]/var: device is busy

Ну так и смотрите, что у Вас его заняло![/quote]
Так в том то и дело что непонятно что. lsof показывает что нет никаких процессов[/quote]


Ну чудес-то не бывает! Значит, в данный момент ничто не пишет.

Войдите или зарегистрируйтесь, чтобы ответить.