Назад | Перейти на главную страницу

После использования lvextend я не могу восстановить неиспользуемое пространство

Мне нужно было добавить больше дискового пространства к моей виртуальной машине 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