Почему lvm2 использует UUID смешанного регистра?

Прежде чем я начну свой ответ, давайте проясним некоторые основы.

Насколько я знаю

  1. Один терминал может иметь только одну оболочку входа в систему, однако несколько пользователей могут использовать один и тот же терминал с оболочкой входа, отличной от -.
  2. Эта оболочка входа может быть TTY или PTS(Разница между tty и pts)
  3. Оболочка входа может иметь другие оболочки без входа в систему(Что такое оболочки входа/не входа -)
  4. exitдля выхода из оболочки входа, отличной от -(Вы не можете logoutиз оболочки входа, отличной от -)
  5. logoutдля выхода из TTY(logoutможет использоваться только с оболочкой входа в систему -)
  6. Как проверить, вошли ли вы в систему или нет -терминал входа в систему

Если вы используете телетайп

(./your_script && ) || logout

или

(./your_script && ) || exit

Если вы находитесь на ПТС

(./your_script && ) || who -u; 
echo 'enter PID of login shell user you want to logout'; read PID; kill $PID;

Источник ответа выше

Remove "<" and ">" tags and place your task in the above scripts.

Я не знаю, почему logoutи exitне работают на PTS, как на телетайпе, но я надеюсь, что это решит вашу проблему.

Я работаю в Linux около 4 месяцев, так что по этому стандарту меня можно назвать новичком. Любые улучшения ответа приветствуются, если вы обнаружите что-то не так.

1
07.09.2019, 18:51
2 ответа

X.667 обсуждает UUID, представленные в шестнадцатеричном формате; LVM UUID — нет. Кроме того, в UUID LVM важен регистр :

.
lvdisplay select uuid=yD0FAx-1nHj-O8vV-qNyI-k1RA-hZsj-UF439H

найдет ваш LV, но

lvdisplay select uuid=YD0FAx-1nHj-O8vV-qNyI-k1RA-hZsj-UF439H

Не будет.

1
27.01.2020, 23:30

Это должно быть историческим. 32-байтовые UUID восходят к LVM 1.

Копание в старых источниках показывает, что в какой-то момент он был изменен с 16 на 32 байта:

lvm-0.8final-2.4.0.patch:312:-#define   UUID_LEN        32  /* don't change!!! */
lvm-0.8final-2.4.0.patch:313:+#define   UUID_LEN        16  /* don't change!!! */

Копание в списке рассылки приводит к некоторым старым обсуждениям UUID в раннем LVM:

https://www.redhat.com/archives/linux-lvm/1999-August/msg00076.html

> It should be
> able to identify PVs by UUID (if this is in 0.7,

Today it identifies PVs by  PV number/VG name  pair.
That obviously is not unique ;*)
But it's sufficient on a single computer system.

https://www.redhat.com/archives/linux-lvm/1999-November/msg00039.html

One of my TODO items for the future still is to have UUIDs
(Uniform Unique Identifiers) for VGs and for system ownership of a VG.

https://www.redhat.com/archives/linux-lvm/2000-September/msg00043.html

I hope nobody is calling pvcreate in an rc script...  From what Heinz
said about LVM 0.9, it will finally implement UUID support, so LVM
will be able to identify a PV no matter what device it is on.

Самая старая ссылка, которую я нашел для 32-байтового типа UUID, относится к ноябрю/декабрю 2000 года:

https://www.redhat.com/archives/linux-lvm/2000-December/msg00185.html

Subject: [linux-lvm] LVM-0.9 Touble in pvcreate
[...]
PV UUID               MB5eIp-jxvc-4pup-ncSM-O6xT-fMmu-JjYgzM

Таким образом, он должен был быть добавлен (как видимый для внешнего интерфейса )в LVM 0.9.

Но даже в этом случае я не мог найти точных доводов в пользу этого. И я думаю, что с тех пор никто не видел причин менять его на более «стандартный» формат UUID.

На самом деле я нашел одну жалобу на это в коде LVM2:

https://github.com/lvmteam/lvm2/blob/32a8865a272d31d5bc12332a4da0309ce3af9243/lib/uuid/uuid.c#L115-L119

/*
 * The only validity check we have is that
 * the uuid just contains characters from
 * '_c'.  A checksum would have been nice :(
 */

Наверное, всего не бывает.:-)

1
27.01.2020, 23:30

Теги

Похожие вопросы