Итак, существует SVN-виртуальная машина (сервер vmware), на которой закончилось место. Я не могу зафиксировать, потому что там написано, что нет места. К виртуальной машине подключен один виртуальный диск объемом 80 ГБ (hda), раздел / boot и большой VG (VolGroup00) для /
Я архивирую и удаляю старые репозитории SVN с диска, но не получаю обратно свободного места. Что мне нужно сделать, чтобы это пространство снова стало доступным для использования? Я использую Linux почти для всего, но никогда не играл с LVM достаточно, чтобы знать, что происходит.
вывод vgdisplay:
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 74.41 GB
PE Size 32.00 MB
Total PE 2381
Alloc PE / Size 2380 / 74.38 GB
Free PE / Size 1 / 32.00 MB
VG UUID dPSZpL-kFBn-HpkH-ChfO-dw9q-YGg2-qHOiQF
Со вчерашнего дня освободилось место ...
Вывод df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
72G 67G 959M 99% /
/dev/hda1 99M 15M 80M 16% /boot
tmpfs 62M 0 62M 0% /dev/shm
Выход лвс
LV VG Attr LSize Origin Snap% Move Log Copy%
LogVol00 VolGroup00 -wi-ao 73.38G
LogVol01 VolGroup00 -wi-ao 1.00G
Что-то все еще кажется странным, так как там говорится, что 959M доступно, а 67G используется с размером 72G ...
Итак, теперь я получаю место после удаления репозиториев ... и все же баланс во вселенной еще не восстановлен ...
Удаление файлов не меняет размер логического тома (и, как следствие, не влияет на свободное пространство в группе томов).
Вы можете думать о группе томов как о «виртуальном диске», а логические тома на нем как о разделах, но с которыми намного легче работать (изменять размер, создавать, удалять), чем с обычными разделами.
Как говорит Камил, если во время работы вы получаете ошибки «не хватает места», значит, виноват не LVM - это простая ошибка файловой системы, и вы можете определить, в какой файловой системе не хватает места, с помощью df -h
, и удаление достаточного количества файлов в этой файловой системе в конечном итоге даст вам больше места. Однако с LVM, если у вас есть файловая система с кучей свободного места, а другая - без него, вы можете сжать LV с большим количеством свободного места, а затем выделить это пространство для LV, у которого закончилось пространство, и, следовательно, использовать свой выделил диск более эффективно.
Процесс сжатия и расширения файловых систем немного рискован (поэтому есть резервные копии), и этап сжатия должен выполняться на несмонтированных файловых системах (так что переход в однопользовательский режим хорош, и вы не можете сжать корневую файловую систему; если ваши файловые системы поддержите его (XFS, reiser, недавний ext2 / 3), вы можете сделать онлайн-расширение). В общем, процесс такой:
resize2fs /dev/mapper/VolGroup00-largeLV xG
). Причина, по которой вы уменьшаете его до немного меньшего размера, заключается в том, что, если вы ошибетесь в математике и уменьшите LV меньше, чем файловая система, вы его набьете.lvresize -L xG VolGroup00/largeLV
)resize2fs /dev/mapper/VolGroup00-largeLV
lvresize -L+nG VolGroup00/smallLV
resize2fs /dev/mapper/VolGroup00-smallLV
И теперь у вас должно быть достаточно места везде.
Несколько советов:
lvs
перечислит все ваши LV вместе с их размерамиvgs
даст вам быстрое отображение всех размеров вашего VG и свободного местаУдачи!
/ Dev / sda - локальный или в сети SAN? Если это в SAN, то есть надежда. Если он локальный и использует все доступное пространство, вам придется освободить место на диске, удалив файлы.
Обновите вопрос и сообщите нам, каков статус.
редактировать
Ах, это ВМ! Вам повезло (в любом случае, если на хост-машине есть свободное место).
Создайте еще один виртуальный диск в диспетчере виртуальных машин такого размера, какой вы хотите, чтобы было свободное пространство. Затем представьте этот образ диска виртуальной машине.
Убедитесь, что виртуальная машина его видит (используйте dmesg, чтобы увидеть, появляется ли он). Предполагая, что это так, выполните fdisk и создайте один раздел.
Проблема
pvcreate /dev/whatever1
Где "что угодно", очевидно, устройство. Наверное sdb. 1 - это раздел, который вы только что создали. У него не должно возникнуть проблем с созданием этого физического объема.
Теперь беги
vgextend VolumeGroupName /dev/whatever1
Вы можете использовать vgdisplay, чтобы убедиться, что теперь в группе томов есть свободное место. Теперь увеличьте логический том:
lvextend -l +100%FREE
Это должно расширить логический том, чтобы заполнить группу томов.
А теперь самое сложное. Предполагая, что у вас есть файловая система ext3, вы сможете изменять размер в реальном времени на лету:
resize2fs /dev/volgroup/logicalvolume
(где volgroup и logicalvolume - это фактический путь ко всему, что установлено на /)
Он скажет, что выполняет изменение размера в реальном времени, поскольку том смонтирован, и вуаля, запуск df -h должен показать, что у вас есть свободное место.
Объем свободного места в группе томов не изменится. Все это выделено файловой системой, в которой вы его отформатировали. При удалении файлов из файловой системы удаляются только их записи inode, но файловая система по-прежнему будет требовать место.
Единственный способ освободить место в группе томов - изменить размер или удалить логические тома.
Но то, что вы описываете, звучит просто так, как будто у вас нет места на диске. Вы должны проверить вывод df -h
в вашей виртуальной машине и посмотрите, сколько свободного места есть на томе, где находится репозиторий.
Попробуйте перезапустить свой сервер SVN. Если удаление файлов не освобождает место, они должны каким-то образом использоваться. То же самое происходит и с активными журналами. Однажды у меня был какой-то журнал, который увеличивался на 10 МБ в час, поэтому довольно скоро мне пришлось удалить журнал, но он не освободил место, пока я не перезапустил демон, извергавший этот журнал.
РЕДАКТИРОВАТЬ: Я посмотрел, почему это происходит. Кажется, что файлы подсчета ссылок linux / unix, поэтому их можно удалить, пока они не будут выпущены всеми процессами, которые их открыли.