Дистрибутив Альт Виртуализация 10 NAME="ALT Server-V" VERSION="10.4" ID=altlinux VERSION_ID=10.4 PRETTY_NAME="ALT Virtualization Server 10.4 (Actinoform)" ANSI_COLOR="1;33" CPE_NAME="cpe:/o:alt:server-v:10.4" BUILD_ID="ALT Server-V 10.1" HOME_URL="https://basealt.ru/" BUG_REPORT_URL="https://bugs.altlinux.org/" При каждом запуске команды, выдаётся один и тот же UUID: # nvme gen-hostnqn nqn.2014-08.org.nvmexpress:uuid:24d4dfd8-1dd2-1000-0387-0015b2b15ca9 # nvme gen-hostnqn nqn.2014-08.org.nvmexpress:uuid:24d4dfd8-1dd2-1000-0387-0015b2b15ca9 Насколько я понимаю, значение просто берётся из DMI: # cat /sys/class/dmi/id/product_uuid 24d4dfd8-1dd2-1000-0387-0015b2b15ca9 Хотя в man написано: DESCRIPTION Generate a random host NQN in the form: nqn.2014-08.org.nvmexpress:uuid:1b4e28ba-2fa1-11d2-883f-0016d3cca427 and prints it to stdout. Ожидается, что каждый раз будет генерироваться новый NQN.
Он не может быть каждый раз разный, поскольку генерируется на основе существующего uuid. Описание из интернета: """ NVMe Qualified Name (NQN) используется для идентификации удалённого целевого хранилища NVMe в протоколе NVMe over Fabrics. Этот протокол предназначен для взаимодействия между хостом и системой хранения по сети. """ Это имя по определению не может изменяться.
(Ответ для Alexander Makeenkov на комментарий #1) > Он не может быть каждый раз разный, поскольку генерируется на основе > существующего uuid. > > Описание из интернета: > """ > NVMe Qualified Name (NQN) используется для идентификации удалённого целевого > хранилища NVMe в протоколе NVMe over Fabrics. > > Этот протокол предназначен для взаимодействия между хостом и системой > хранения по сети. > """ > > Это имя по определению не может изменяться. Проблема в том, что на однотипных моделях серверов, этот NQN идентичный, и не позволяет добавить несколько серверов на СХД (СХД требует, чтобы NQN был уникальным).
NQN для хостов - это уникальные номера инициаторов для СХД, они должны быть разными. В описании утилиты недвусмысленно написано "Generate a random host NQN". Описание не соответствует функционалу. Например, на Debian, эта команда каждый раз выдаёт разный номер.
Проверил в: - fedora - генерируется каждый раз одно и то же значение; - ubuntu - генерируется каждый раз разное значение; - alt server (обновлён до sisyphus) - генерируется каждый раз одно и то же значение.
https://github.com/linux-nvme/libnvme/blob/4cef519924249d543555c6cdd43e4c51e41fcf54/src/nvme/fabrics.c#L1430: char *nvmf_hostid_generate() { int ret; char uuid_str[NVME_UUID_LEN_STRING]; unsigned char uuid[NVME_UUID_LEN]; ret = uuid_from_dmi(uuid_str); if (ret < 0) ret = uuid_from_device_tree(uuid_str); if (ret < 0) { if (nvme_uuid_random(uuid) < 0) memset(uuid, 0, NVME_UUID_LEN); nvme_uuid_to_string(uuid, uuid_str); } return strdup(uuid_str); } ... char *nvmf_hostnqn_generate_from_hostid(char *hostid) { char *hid = NULL; char *hostnqn; int ret; if (!hostid) hostid = hid = nvmf_hostid_generate(); ret = asprintf(&hostnqn, "nqn.2014-08.org.nvmexpress:uuid:%s", hostid); free(hid); return (ret < 0) ? NULL : hostnqn; } если вы считаете данное поведение неправильным, то советую озадачить этим авторов libnvme.