(Untitled)

Mar 05, 2020 12:46


206761 - escape codes in network interface names causes chaos

bugzilla.kernel.org


echo -e '\x1B[2J'|xargs -I I sudo ip link add I type dummy
echo -e '\xf0\x9f\x92\xa9\xf0\x9f\x92\xa9' |xargs -I I  sudo ip link add I type dummy

linux

Leave a comment

mc6312 March 5 2020, 13:06:16 UTC
> Не трогай вопрос "юникодных символов". Там бездна. Например, "и" и "и + ◌̆"

Я̷̛̣̜͛ͦ͒ͦ̃͞͡ ̢̋͐́͛̔̚͠͠҉̩͚͙з̴̺̯̳̤͓̯̾̔ͮ͢н̨̼̝͍̰̞͋ͮ̿͘а̨͎̩͇̫̦͗̚͢ю̵̶̓̓́҉̭̗̘̀͡ ̴̨̧͈̪̯̞̰̳̝̱̆ͭͪ͛́͢п̵͉͉͓̻͋̂̄ͦ̅ͤ̑̔͝р̊̎̌ͤ̇͆ͮ͏̷̡̮͓̮͎̥͚͚͈͝о̡͑̽̋̌̃͂̚͟͠͏̷̙̲̙͈̙͕̟͈̀͝ ̧̛͕̦̋̓ͅл̧̳͙̟̤̔ͣ̄͊̀͘͘͡и̐͋҉̶̖̤̘̹͕͠г̛ͨͯ̊̀͏̷̣͖͟͢а̵̵̶̢̮̯̌ͪͨ͞т̶̡̢̛̭͙͖̠͇̭͎̻͑̂͂̽̌͘̕͢͝у̵̪̠̘̪͊ͭͭ̆͞͡р̨̡͕̳̬̙̻͉̪̂̂ͬ̎̏̒̀̀́͜͠ͅы̷̢̙̹̯̥͆̃̎͗ͦ́͟.̨͉͈͍̲͊͋͗̾̌̀͗͞͡

> Unicode - бездна

Бездна, не бездна, никто ж не заставляет ее целиком делать именно в VFS. Мелкомягкие вон не надорвались хоть как-то сделать - и я временами сталкиваюсь с ситуацией, когда при копировании с чужого диска (с NTFS) на машину с уебунтой - вижу ругань на слишком длинные имена. При том, что в _символах_ (не байтах) не особо-то они и длинные. При этом на NTFS - UTF-16, а на ext4 у меня из него образуется UTF-8, которую слишком уж любит всякая англоязычная сволочь, не желающая знать о других языках.

А что в юникод понапихано всякого, чего там по уму быть не должно (начиная с тех же лигатур) - ну, а шо делать, зоопарк из кучи кодировок ещё хуже.

> ... меня сейчас больше бесит лимит на 15 символов для имени интерфейса.

...15 байт наверняка, не символов. А сколько надо? Как у имени файла - 255? Может, ещё и с пробелами? (вот это был бы КОШМАРИЩЕ)

Reply

amarao_san March 5 2020, 13:39:35 UTC
Если ты делаешь unicode неполным, это хуже, чем если ты его вообще не делаешь, а используешь просто как байтстрим.

Объясняю, почему 15 символов жопа. Виртуальных интерфейсов может быть много.

Вот, например, у меня интерфейс mock_bgp_as_65535_outside (пара с veth в mock_bgp_as_65535_inside). Но нет, на самом деле оно называется bgp_ma65535i, потому что 15. Понятнее, да?

Reply

mc6312 March 5 2020, 17:01:50 UTC
Тогда уже назревает вопрос, а не нужны ли тут деревья вместо просто длинных имён, и какого вообще фига сетевые интерфейсы не видны в /dev, как прочие устройства. Было б /dev/ethernet/mock/... или как-то так...
А, ну есть /sys/class/net/..., но один фиг настраиваемость "дерева" в случае статыщ интерфейсов не помешала бы.

Reply

amarao_san March 6 2020, 12:30:59 UTC
/sys/class/net всего лишь переменные ядра, а не сами объекты. Теоретически, иметь сетевые интерфейсы в форме /sys/class/net было было бы круто. Я, кстати, никогда не понимал, почему сетевые интерфейсы такие специальные устройства, которым не полагается major для файла. Модем - устройство, а сетевой интерфейс на базе модема - нет. Странно.

Reply

mc6312 March 6 2020, 14:14:16 UTC
Ну, для посмотреть "а чо у меня за интерфейсы есть" уже и /sys/class/net хватает (лично мне).

Reply

amarao_san March 6 2020, 14:16:15 UTC
Ща я посмотрю, что у меня там образовалось после этих эскейп-кодов...

А вот там, эcкейпят, кстати.

lrwxrwxrwx 1 root root 0 Mar 5 17:20 ''$'\033''[2J' -> '../../devices/pci0000:00/0000:00:1c.4/0000:3a:00.0/net/'$'\033''[2J'

Reply

mc6312 March 6 2020, 16:23:59 UTC
А там ли эскейпят, или это ls так отображает?

Reply

mc6312 March 7 2020, 05:20:14 UTC
Хе. https://www.opennet.ru/opennews/art.shtml?num=52496
"В systemd-udevd и другие компоненты systemd добавлена поддержка механизма назначения альтернативных имён сетевым интерфейсам, позволяющего одновременно применять для одного интерфейса сразу несколько имён. Размер имени может достигать 128 символов"

Reply

amarao_san March 7 2020, 07:41:37 UTC
Ага. Но ядро не принимает.

Reply

mc6312 March 7 2020, 08:25:45 UTC
Ээээ... это как?! В настройках systemd-udevd можно задать имя, которое ведро не поймёт?!
Или там какое-то подобие ситуации с симлинками на /dev/sdX в виде /dev/disk/by-xxx/yyy?
Если последний случай - то и ладно бы, вполне себе вариант...

PS. (Не)кстати о дисках: на говнохабре тут некто на интересные грабли с именованием устройств и разделов NVME наступил: https://habr.com/ru/post/491454/
Если это не отдельный взбрык на отдельной машине - то это как-то того-с.

Reply

mc6312 March 7 2020, 13:00:15 UTC
Чушь пишут. Да, у nvme первое устройство - символьное. Как и у многих аппаратных рейдов. Люди, перед тем, как что-то с рейдом делать, обычно смотрят на /proc/mdstat, хотя бы. А человек напечатал фигню и потом рассказывает, что он напечатал фигню.

ЗЫ С переименованием сетевых интерфейсов эпично, потому у меня есть usb-wifi-сетевуха, которую если воткнуть в док-станцию Thunderbolt, по new name convention получает имя, которое слишком длинное.

А лимит 15 символов есть. Я не смотрел, можно ли его поменять.

Reply

mc6312 March 7 2020, 15:31:12 UTC
> Да, у nvme первое устройство - символьное

Так блин в чём и дело-то. В массиве одно устройство, шмарт опрашивает другое. И где смотреть, какое к кому относится?

Reply

amarao_san March 7 2020, 15:52:49 UTC
Во-первых, использовать smartctl для nvme - это спорно, мягко говоря. Можно, но SMART - это фича SATA. А nvme, это, мягко говоря, другой интерфейс. Мягко говоря.

Это всё равно, как требовать от smartctl всё знать и уметь про sas-диски.

Я вот зашёл на wiki у smartmontools и там сказано "Smartmontools supports NVMe starting from version 6.5. Please note, that currently NVMe support is considered as experimental. "

А так, вообще-то, есть nvme-cli.

Reply

mc6312 March 7 2020, 16:21:52 UTC
> Можно, но SMART - это фича SATA. А nvme, это, мягко говоря, другой интерфейс.

Мягко говоря, на интерфейс начхать. ATAPI/SATA/SAS/NVME/... один фиг блочное устройство, и вполне логично было бы иметь единый способ спрашивать "а скока там осыпавшихся блоков, не пора ли менять железку?".
Т.е. как минимум атрибуты 5, 174, 194, 196, 197, 198 вполне универсальны для мониторинга любых типов подобных устройств, есть там внутре блины или нет, а за всякие vendor-specific, торчащие наружу (если для них нет открытой документации) вендорам следует рубить руки ссаными тряпками.

Reply

amarao_san March 7 2020, 16:26:09 UTC
Прости меня, какие атрибуты универсальны для scsi-сканера? А для tape-устройства?

Я понимаю, что тебе хочется всё под одну гребёнку. Linux и так тебе ВСЁ под одну гребёнку, так что ты не замечаешь разницы между SD-карточкой, usb mass storage, sata-ssd, iscsi-устройством и high-end sas-полкой за двумя рейдами с избыточностью, но есть граница между универсальностью и фичами.

Ты не можешь спрашивать рейд-контроллер, подключенный к полке с multipath о тех же параметрах, о которых ты спрашиваешь диск.

Reply

mc6312 March 7 2020, 17:03:43 UTC
Ну, как раз, например, для полки что-то шмарт-образное и имело б смысл. Отвечает о битых секторах "вообще" - пора проверять составляющие массив устройства. Температуру сообщать для самого горячего устройства в полке. И т.п.
SCSI-сканеры, кажется, уже вымерли. И я под блочными устройствами выше имел в виду только storage, разумеется.
Для ленты понятие битых блоков вполне имеет смысл, температуры потрохов, с некоторой натяжкой - тоже. В лентожевалках вполне есть чему перегреваться.
Т.е. обобщённый интерфейс мониторинга с атрибутами "у вас косяк примерно такого типа" однозначно был бы полезен.
Причем как раз простой, как обрезок от шмарта, а не snmp какое-нибудь архиразвесистое.

Reply


Leave a comment

Up