В 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 сохраняет выделенные все экстенты, когда-либо задействованные файловой системой в виртуальной машине. Есть ли способ предотвратить это или вернуть неиспользованное пространство?
Догадаться. Вы должны использовать fstrim
.
Я смог освободить неиспользуемое пространство, запустив это внутри виртуальной машины:
fstrim -v /
На основе решения, описанного в разделе Использование fstrim для увеличения свободного места в LV тонкого пула Вот: http://man7.org/linux/man-pages/man7/lvmthin.7.html