Мне нужно было добавить больше дискового пространства к моей виртуальной машине CentOS, поэтому я добавил еще один виртуальный диск, а затем использовал lvextend, чтобы добавить пространство к существующему разделу.
Я сделал следующие шаги:
echo "- - -" > /sys/class/scsi_host/host0/scan
pvcreate /dev/sdb
vgextend VolGroup00 /dev/sdb
lvextend -l +100%FREE /dev/VolGroup00/LogVol00
resize2fs /dev/VolGroup00/LogVol00
Это сработало нормально. Впоследствии я заполнил виртуальную машину, а затем удалил большую часть используемого дискового пространства. Однако неиспользуемое дисковое пространство так и не удалось восстановить после того, как я удалил все файлы.
Это лучше проиллюстрирует то, что я говорю:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
61G 32G 26G 56% /
/dev/sda1 99M 20M 75M 21% /boot
tmpfs 1006M 0 1006M 0% /dev/shm
# pwd; du -h --max-depth=0
/
5.1G .
Я не могу понять, как заставить раздел видеть, что используется только 5,1 ГБ. Есть идеи, что я делаю не так?
Бегать du -sh /
и сравните, что возвращается к вашему df -h
вывод. Держу пари, есть большая разница в используемом пространстве.
Перезагрузите сервер или завершите все процессы, у которых открыты удаленные вами файлы. Вероятно, существуют открытые файловые дескрипторы, которые сохраняют пространство, отмеченное как недоступное. Проверьте lsof |grep /volume
(где volume
объем, который вы хотите проверить) или просто lsof +L1
и вы, вероятно, увидите, что удаленные вами файлы все еще считаются открытыми.
Ненавижу предлагать "просто перезагрузить его", но если есть много открытых файловых дескрипторов, это, вероятно, самый простой способ.
Работал над Redhat 6.
Перед началом очистите буферные кеши устройства файловой системы.
resize2fs -F
Расширить и изменить размер:
lvextend -L4G /dev/$VGNAME/$LVNAME
resize2fs -F /dev/$VGNAME/$LVNAME