Какая версия ядра Linux начинает поддерживать SPC-4 для VMware 6.5 UNMAP

VMware 6.5 объявила о поддержке команд UNMAP (восстановление пространства из тонких LUN в системах хранения) с виртуальными машинами VMFS6 и Linux, которые поддерживают основные команды SCSI - 4 (SPC-4). Какая версия ядра Linux начинает поддерживать SPC-4 для VMware 6.5 UNMAP? Это полезная статья.

2 ответа

Решение

Вопрос не в том, "когда Linux будет поддерживать SPC-4 для UNMAP" (вы всегда можете попытаться отправить необработанные команды SCSI, и Linux не должен "понимать" их), поэтому я думаю, что вы хотели спросить "какая версия Linux автоматически объявляет сброс на соответствующие диски ESXi?".

В течение последних нескольких лет, пока "диск" заявляет, что он может поддерживать стандарт SCSI, SPC-2 или более поздняя версия Linux будет продолжать проверять и выставлять поддержку discard (также известную как TRIM или UNMAP), если она доступна. Предоставление поддержки сброса включило коммит https://github.com/torvalds/linux/commit/c98a0eb0e90d1caa8a92913cd45462102cbd5eaf который в итоге появился в 2.6.39. См. https://github.com/torvalds/linux/blob/v4.8/include/scsi/scsi_device.h#L546 котором показано, как происходит чтение страниц VPD только в том случае, если a) оно каким-то образом принудительно (через явные причуды для er "причудливые" устройства) или b) устройство претендует на реализацию как минимум спецификации SCSI SPC-2. В свою очередь, способность читать страницы VPD необходима для проверки, поддерживает ли устройство тонкую инициализацию на https://github.com/torvalds/linux/blob/v4.8/drivers/scsi/sd.c#L2840.

Я проверил тонкий подготовленный диск VMDK на ESXi 6.0, виртуальной машине версии 11, работающей под управлением Ubuntu 16.04, гостевой ОС, установленной на Ubuntu 64 бит. Если вы посмотрите на страницу VPD "Предоставление логических блоков" (через sg_vpd -p lbpv) для диска вам говорят:

Logical block provisioning VPD page (SBC):
  Unmap command supported (LBPU): 1
  Write same (16) with unmap bit supported (LBWS): 0
  Write same (10) with unmap bit supported (LBWS10): 0

(Я должен был установить расширенный вариант EnableBlockDelete 1 на ВМ, чтобы получить это)

Если вы посмотрите на результаты READCAPACITY(16) (через sg_readcap -16):

Read Capacity results:
   Protection: prot_en=0, p_type=0, p_i_exponent=0
   Logical block provisioning: lbpme=1, lbprz=1

Опять же, он претендует на то, чтобы быть худым.

тем не мение sg_inq показывает диск только претензий на поддержку SCSI-2:

standard INQUIRY:
  PQual=0  Device_type=0  RMB=0  LU_CONG=0  version=0x02  [SCSI-2]

(SCSI-2 - это несколько ревизий ниже SPC-2, см. https://github.com/torvalds/linux/blob/v4.8/include/scsi/scsi.h#L253 о том, как Linux заказывает версии спецификации SCSI).

Так что Linux не будет рекламировать сброс:

grep . /sys/block/sdc/queue/discard_max_bytes
0

и все, что пытается использовать сброс, потерпит неудачу для меня:

# blkdiscard --offset 0 --length=2048 /dev/sdc
blkdiscard: /dev/sdc: BLKDISCARD ioctl failed: Operation not supported

Несмотря на это, можно вручную отправлять необработанные SCM UNMAP:

# sg_unmap --lba=0 --num=2048 /dev/sdc

(обратите внимание, что для операций unmap существует минимальный размер 1 МБ, иначе вы получите сообщение об ошибке)

TLDR; Отказ от рекламы в Linux был добавлен в 2.6.39, но почти любой Linux можно сделать так, чтобы он вручную выполнял команды SCSI UNMAP (а в ESXi ваша виртуальная машина должна соответствовать правильным требованиям).

UNMAP поддержка появляется в ближайшее время в 2.6.27 в 2.6.28 сроки для ext4 файловая система. Страница Википедии дляTRIM/UNMAP список версий ядра 2.6.28-25 в частности.

UNMAP Поддержка связана конкретно с файловой системой, потому что это файловая система, которая знает, когда это сделано с диапазоном блоков, и может выпустить их обратно на базовое устройство. Убедитесь, что выбрали файловую систему, которая поддерживает его!

Хорошая сводка содержится в разделе " Поддержка сообщества: отказ от поддержки " в этой презентации SNIA. Как описано, версии ядра от 2.6.32 должен иметь хорошую поддержку. В частности, изменения вошли в мейнстрим RHEL6. Итак, к этому моменту, это было там некоторое время!

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