LVM: размер сопоставленных логических томов намного больше, чем занимаемая дисковой памятью файловая система
В Proxmox мы используем LVM для создания дисков (логических томов) для наших виртуальных машин (тонкая подготовка LVM).
Недавно мы узнали, что наша группа томов почти заполнена, даже когда все диски виртуальных машин почти пусты.
Проблема заключается в том, что некоторые разделы LVM имеют гораздо больший размер отображения, чем реальный размер данных, хранящихся на диске виртуальной машины, как сообщает df.
Например, у нас есть виртуальная машина с логическим томом 100 ГБ. Использование диска внутри виртуальной машины показывает, что используется только 3,2 ГБ пространства:
#> df
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/pve-vm--3011--disk--1 99G 3.2G 91G 4% /
...
но логический том на хосте показывает, что он использует 39,8 ГБ:
#> lvdisplay
--- Logical volume ---
LV Path /dev/pve/vm-3011-disk-1
LV Name vm-3011-disk-1
VG Name pve
LV UUID oleKd5-O2o4-c4CE-5vzn-bXRC-TXwF-lzApmW
LV Write Access read/write
LV Creation host, time carol, 2016-08-16 09:03:54 +0200
LV Pool name vm-hdd
LV Status available
# open 1
LV Size 100.00 GiB
Mapped size 39.83%
Current LE 25600
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:28
...
Так что на самом деле используется более чем в десять раз больше места, чем необходимо.
Есть идеи, в чем причина? Я подозреваю, что LVM сохраняет все экстенты, когда-либо затронутые файловой системой в ВМ. Есть ли способ предотвратить это или вернуть неиспользованное пространство обратно?
1 ответ
Догадаться. Вы должны использовать fstrim
,
Я смог вернуть неиспользуемое пространство, запустив это внутри виртуальной машины:
fstrim -v /
Основано на решении, описанном в разделе Использование fstrim для увеличения свободного места в LV с тонким пулом здесь: http://man7.org/linux/man-pages/man7/lvmthin.7.html