lvchange -ay при утечке памяти логического тома lvmcached Ubuntu 22.04

Ubuntu 22.04, я настроил LV, кэшированные на SSD, с помощью lvmcache (тип writecache), следуя справочной странице lvmcache .

Система загружается нормально, но состояние кэшированных LV всегда НЕдоступно.

        LV Path                /dev/vg_fast3/disk3_lv
  LV Name                disk3_lv
  VG Name                vg_fast3
  LV UUID                UdAPKL-ZQQq-1ytp-CI54-FwVS-4iz5-EAJ0l0
  LV Write Access        read/write
  LV Creation host, time minio1, 2022-05-07 18:13:22 +0200
  LV Status              NOT available
  LV Size                <9.10 TiB
  Current LE             2384383
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto

Затем я пытаюсь активировать LV вручную (у меня их 3). Первая активация занимает немного времени и не потребляет никакой ощутимой системной памяти, но вторая активация занимает больше времени и потребляет всю память хоста (32 ГБ). Это свежая система, и использование оперативной памяти довольно низкое. Когда я пытаюсь активировать 3-й LV, убийца OOM наносит удар.

Пожалуйста, посмотрите, как изменится использование памяти системой, когда я активирую второй LV.

      root@minio1 /etc/systemd/system # free
               total        used        free      shared  buff/cache   available
Mem:        32602580     3594536    28791428        1272      216616    28629324
Swap:        4194300           0     4194300
root@minio1 /etc/systemd/system # lvchange -ay -vvvv /dev/vg_fast2/disk2_lv
root@minio1 /etc/systemd/system # free
               total        used        free      shared  buff/cache   available
Mem:        32602580    29741396     2644252        1284      216932     2482304
Swap:        4194300           0     4194300

Как видите, большая часть времени (2 минуты) уходит на задачу RESUME.

      12:08:48.119176 lvchange[1154] device_mapper/libdm-common.c:2677  Udev cookie 0xd4d1f00 (semid 1) assigned to RESUME task(5) with flags DISABLE_LIBRARY_FALLBACK         (0x20)
12:08:48.119186 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm resume   (253:5) [ noopencount flush ]   [16384] (*1)
12:11:38.391470 lvchange[1154] device_mapper/libdm-common.c:1484  vg_fast2-disk2_lv: Stacking NODE_ADD (253,5) 0:6 0660 [trust_udev]
12:11:38.391498 lvchange[1154] device_mapper/libdm-common.c:1495  vg_fast2-disk2_lv: Stacking NODE_READ_AHEAD 256 (flags=1)
12:11:38.391514 lvchange[1154] activate/dev_manager.c:3686  Creating CLEAN tree for vg_fast2/disk2_lv.
12:11:38.391551 lvchange[1154] activate/dev_manager.c:817  Getting device info for vg_fast2-disk2_lv [LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqieWtt9lFS16fwbF1XWqeoZhb7zyj3vDzc].
12:11:38.391576 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm info  LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqieWtt9lFS16fwbF1XWqeoZhb7zyj3vDzc [ opencount flush ]   [16384] (*1)
12:11:38.391609 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm deps   (253:5) [ opencount flush ]   [16384] (*1)
12:11:38.391655 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm deps   (253:3) [ opencount flush ]   [16384] (*1)
12:11:38.391675 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm deps   (253:4) [ opencount flush ]   [16384] (*1)
12:11:38.391703 lvchange[1154] activate/dev_manager.c:817  Getting device info for vg_fast2-disk2_lv-real [LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqieWtt9lFS16fwbF1XWqeoZhb7zyj3vDzc-real].
12:11:38.391714 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm info  LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqieWtt9lFS16fwbF1XWqeoZhb7zyj3vDzc-real [ opencount flush ]   [16384] (*1)
12:11:38.391728 lvchange[1154] activate/dev_manager.c:817  Getting device info for vg_fast2-disk2_lv-cow [LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqieWtt9lFS16fwbF1XWqeoZhb7zyj3vDzc-cow].
12:11:38.391737 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm info  LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqieWtt9lFS16fwbF1XWqeoZhb7zyj3vDzc-cow [ opencount flush ]   [16384] (*1)
12:11:38.391750 lvchange[1154] activate/dev_manager.c:817  Getting device info for vg_fast2-ssd2_lv_cvol-real [LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqiZmOf0I2TWMotwHgUKQs49RxDYIbrB8oq-real].
12:11:38.391760 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm info  LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqiZmOf0I2TWMotwHgUKQs49RxDYIbrB8oq-real [ opencount flush ]   [16384] (*1)
12:11:38.391775 lvchange[1154] activate/dev_manager.c:817  Getting device info for vg_fast2-disk2_lv_wcorig [LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqiq94eYXDdC8TGT1RVERIDZQNnf5iaJFx9-real].
12:11:38.391785 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm info  LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqiq94eYXDdC8TGT1RVERIDZQNnf5iaJFx9-real [ opencount flush ]   [16384] (*1)
12:11:38.391798 lvchange[1154] activate/dev_manager.c:817  Getting device info for vg_fast2-disk2_lv_wcorig-real [LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqiq94eYXDdC8TGT1RVERIDZQNnf5iaJFx9-real].
12:11:38.391807 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm info  LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqiq94eYXDdC8TGT1RVERIDZQNnf5iaJFx9-real [ opencount flush ]   [16384] (*1)
12:11:38.391820 lvchange[1154] activate/dev_manager.c:817  Getting device info for vg_fast2-disk2_lv_wcorig-cow [LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqiq94eYXDdC8TGT1RVERIDZQNnf5iaJFx9-cow].
12:11:38.391828 lvchange[1154] device_mapper/ioctl/libdm-iface.c:1876  dm info  LVM-Wm7lKJTqlwERGip92OXeIgBi5nEqzsqiq94eYXDdC8TGT1RVERIDZQNnf5iaJFx9-cow [ opencount flush ]   [16384] (*1)
12:11:38.391844 lvchange[1154] mm/memlock.c:641  Leaving section (activated).
12:11:38.391856 lvchange[1154] mm/memlock.c:597  Unlock: Memlock counters: prioritized:1 locked:0 critical:0 daemon:0 suspended:0
12:11:38.391867 lvchange[1154] mm/memlock.c:506  Restoring original task priority 0.
12:11:38.391874 lvchange[1154] activate/fs.c:492  Syncing device names
12:11:38.391888 lvchange[1154] device_mapper/libdm-common.c:2479  Udev cookie 0xd4d1f00 (semid 1) decremented to 1
12:11:38.391896 lvchange[1154] device_mapper/libdm-common.c:2765  Udev cookie 0xd4d1f00 (semid 1) waiting for zero
12:11:38.603440 lvchange[1154] device_mapper/libdm-common.c:2494  Udev cookie 0xd4d1f00 (semid 1) destroyed
12:11:38.603459 lvchange[1154] device_mapper/libdm-common.c:1484  vg_fast2-ssd2_lv_cvol: Skipping NODE_ADD (253,3) 0:6 0660 [trust_udev]
12:11:38.603466 lvchange[1154] device_mapper/libdm-common.c:1495  vg_fast2-ssd2_lv_cvol: Processing NODE_READ_AHEAD 256 (flags=1)
12:11:38.603498 lvchange[1154] device_mapper/libdm-common.c:1249  vg_fast2-ssd2_lv_cvol (253:3): read ahead is 256
12:11:38.603506 lvchange[1154] device_mapper/libdm-common.c:1373  vg_fast2-ssd2_lv_cvol: retaining kernel read ahead of 256 (requested 256)
12:11:38.603510 lvchange[1154] device_mapper/libdm-common.c:1484  vg_fast2-disk2_lv_wcorig: Skipping NODE_ADD (253,4) 0:6 0660 [trust_udev]
12:11:38.603515 lvchange[1154] device_mapper/libdm-common.c:1495  vg_fast2-disk2_lv_wcorig: Processing NODE_READ_AHEAD 256 (flags=1)
12:11:38.603531 lvchange[1154] device_mapper/libdm-common.c:1249  vg_fast2-disk2_lv_wcorig (253:4): read ahead is 256
12:11:38.603537 lvchange[1154] device_mapper/libdm-common.c:1373  vg_fast2-disk2_lv_wcorig: retaining kernel read ahead of 256 (requested 256)
12:11:38.603542 lvchange[1154] device_mapper/libdm-common.c:1484  vg_fast2-disk2_lv: Skipping NODE_ADD (253,5) 0:6 0660 [trust_udev]
12:11:38.603547 lvchange[1154] device_mapper/libdm-common.c:1495  vg_fast2-disk2_lv: Processing NODE_READ_AHEAD 256 (flags=1)
12:11:38.603561 lvchange[1154] device_mapper/libdm-common.c:1249  vg_fast2-disk2_lv (253:5): read ahead is 256
12:11:38.603567 lvchange[1154] device_mapper/libdm-common.c:1373  vg_fast2-disk2_lv: retaining kernel read ahead of 256 (requested 256)
12:11:38.603576 lvchange[1154] misc/lvm-flock.c:84  Unlocking /run/lock/lvm/V_vg_fast2
12:11:38.603583 lvchange[1154] misc/lvm-flock.c:47  _undo_flock /run/lock/lvm/V_vg_fast2
12:11:38.603604 lvchange[1154] metadata/vg.c:79  Freeing VG vg_fast2 at 0x55a132b4b5a0.
12:11:38.603754 lvchange[1154] notify/lvmnotify.c:54  Nofify dbus at com.redhat.lvmdbus1.
12:11:38.604168 lvchange[1154] notify/lvmnotify.c:69  D-Bus notification failed: The name com.redhat.lvmdbus1 was not provided by any .service files
12:11:38.604210 lvchange[1154] cache/lvmcache.c:2091  Destroy lvmcache content
12:11:38.649830 lvchange[1154] lvmcmdline.c:3168  Completed: lvchange -ay -vvvv /dev/vg_fast2/disk2_lv

Я хотел создать ошибку, но я решил поделиться некоторыми мыслями здесь раньше.

Заранее благодарим за отзыв.

2 ответа

ОК, похоже, что требования к памяти меняются в зависимости от размера кэша lv, и пара сотен гигабайтов использует всю память моего сервера. Я не уверен, что я что-то упускаю, но я решил использовать bcache, который, кажется, менее требователен к памяти.

Теперь все работает как положено без ощутимого потребления памяти.

Спасибо.

Я провел еще пару тестов и выяснил, что память используется при активации кэшированного LV. Если LV неактивен, недостающая память возвращается.

        --- Logical volume ---
  LV Path                /dev/vg_fast3/disk3_lv
  LV Name                disk3_lv
  VG Name                vg_fast3
  LV UUID                DiqET1-VMau-4zuc-4vVt-4WDk-yfeJ-KORpwq
  LV Write Access        read/write
  LV Creation host, time minio2, 2022-05-08 13:36:15 +0200
  LV Status              available
  # open                 0
  LV Size                <9.10 TiB
  Current LE             2384383
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vg_fast2/disk2_lv
  LV Name                disk2_lv
  VG Name                vg_fast2
  LV UUID                H0FAlm-1KOe-fLeL-EsgX-iupN-JsYl-zsThtM
  LV Write Access        read/write
  LV Creation host, time minio2, 2022-05-07 19:03:33 +0200
  LV Status              NOT available
  LV Size                <9.10 TiB
  Current LE             2384383
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto

  --- Logical volume ---
  LV Path                /dev/vg_fast1/disk1_lv
  LV Name                disk1_lv
  VG Name                vg_fast1
  LV UUID                yo32U4-IfzJ-W0sj-JTKn-Qj4B-syJd-zgu9qK
  LV Write Access        read/write
  LV Creation host, time minio2, 2022-05-07 18:58:01 +0200
  LV Status              NOT available
  LV Size                <9.10 TiB
  Current LE             2384383
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto

root@minio2 ~ # free
               total        used        free      shared  buff/cache   available
Mem:        32600636    26401620     5984508        1284      214508     5821340
Swap:        4194300           0     4194300
root@minio2 ~ # lvchange -an /dev/vg_fast3/disk3_lv
root@minio2 ~ # free
               total        used        free      shared  buff/cache   available
Mem:        32600636      291212    32095032        1272      214392    31931824
Swap:        4194300           0     4194300

Я использую 160 ГБ в качестве кеша записи, может быть, это просто слишком много.

Другие вопросы по тегам