LINUX.ORG.RU

Инвентаризация накопителей в домашней лаборатории: больше не теряю диски

 , , , ,


5

1

Привет, l.o.r.
Решил поделиться тем, как за пару вечеров превратил разрозненные smartctl-логи в таблицу, которую приятно смотреть и которую невозможно не обновлять.
Итог — HTML-отчёт на 30 столбцов, но главное — визуальная грамматика: цвет = смысл, глаз цепляется сразу, а не после пятой перечитки цифр.


Зачем вообще

  • В корпусе 5 дисков, в ящике ещё 4, на столе 3 флешки.
  • У каждого своя история: кто-то покупался «на время», кто-то вытащен из NAS, кто-то «подарок» с рук.
  • Бэкапы делаются, но куда — всегда забываю.
  • SMART-атрибуты сыпятся в journalctl, а анализировать лень.

Хотелось «одного файла», который:

  1. Открывается без софта (браузер everywhere).
  2. Показывает ресурс (TBW, hours, health).
  3. Не даёт спутать диск 2024 года с диском 2008-го.
  4. Можно распечатать и повесить над столом — цвета не сливаются.

Что собираем

Стандартный набор smartctl -A /dev/sdX + idctl -i для NVMe, плюс руками:

  • дата покупки, продавец, цена, порт подключения, заметки;
  • зашифрован ли раздел, SMR/CMR, TLC/QLC, RPM, буфер.

Цветовая логика (коротко)

  1. Вендор — фирменный цвет, но затемнённый на 20 %.
    Samsung = #1428a0, Kingston = #00796b, WD = #5e35b1
    Никаких «красных» или «зелёных» вендоров — эти цвета заняты.

  2. Технологичность — градиент от бирюзы к тёмно-серому.
    PCIe 4.0 = tech-l0, SATA II = tech-l6, Floppy = tech-l7.
    Применяется к году, интерфейсу, прошивке, объёму буфера.

  3. Состояние — единственная «оценочная» шкала: зелёный → красный, 9 ступеней.
    Health 97 % = health-1, TBW 39 % = health-5, 17k hours = health-8.
    Для флешек 64–128 ГБ берём процентиль по всем накопителям: они получаются светло-зелёными, а не «красными из-за маленького TBW».

  4. Нейтральное — каждый столбец свой оттенок серого/циана, не пересекающийся с основными шкалами.
    Цена = #455a64, примечания = #161b22 + голубой текст, «n/a» = фон страницы и серый текст.

Контраст проверял автоматически (библиотека wcag-contrast), минимум 4.5:1 на фоне #0d1117.


Кусок CSS

.vendor-samsung { background:#1428a0; color:#fff; }
.tech-l0 { background:#00bcd4; color:#000; } /* новейшее */
.health-0 { background:#4caf50; color:#000; } /* отлично */
.price { background:#455a64; color:#fff; }

Добавляем класс ячейке — и всё, цвет больше не обсуждается.


Как обновляю

  1. Раз в месяц втыкаю все накопители по-очереди (внешние и «шкафные» тоже).
  2. Для каждого делаю два ctrl-c/ctrl-v:
    • sudo smartctl -A /dev/sdX → блокнот;
    • sudo smartctl -i /dev/sdX → тот же блокнот, ниже.
      NVMe-дискам добавляю nvme smart-log /dev/nvme0n1 – он же второй блок.
  3. Открываю чат-бота и кидаю ему весь этот лог.
    Промпт короткий:
    «Сделай строку HTML-таблицы по шаблону:
   <tr>  
   <td class="vendor-***">Name</td>  
   …  
   <td class="health-N">97</td>  
   …  
   </tr>  

Данные ниже, классы определи сам».
Бот выдаёт готовую строку с правильными классами (цвета я ему заранее описал).
4. Копирую строку в disks.html – вставляю поверх старой.
5. Если купил новый диск, добавляю ещё одну строку тем же способом.
6. Сохраняю, закрываю редактор. Готово.

Всё занимает 15–20 минут: воткнул, скопировал, получил строку, вставил.


Если коротко: цвет = семантика, HTML = универсальный формат, автоматизация = не забудешь.
Теперь диски не теряются, а я перестал покупать «лишний, потому что не помню какой свободен».

Спрашивайте, критикуйте, делитесь своими способами инвентаризации.

★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 3)

Теперь диски не теряются, а я перестал покупать «лишний, потому что не помню какой свободен».

да, вот это особенно актуально

z0idator
()

Круто. Только ИМХО ручная обработка с использование гопоты тут явно… ну лишняя что ли. Можно было бы сделать то же самое и как-то более красиво, ИМХО.

А так идея прям огонь. Я даже так же захотел для своих, а то дисков полно, но я уже не помню даже, что на некоторых по свободному месту, когда они последний раз втыкались для проверки и т.д.

Zhbert ★★★★★
()

Занятно.

Жаль у меня столько дисков живых нет, чтобы прям пригодилось :)

frunobulax ★★★★
()

Заменить бы гпт на скрипт, и было бы гораздо лучше. Ещё можно хранить данные о дисках в sqlite.

skyman ★★★★★
()
Ответ на: комментарий от Jaeger1999

Можно в бд хранить css классы, можно на лету минимальным js раскрашивать в зависимости от величин.

Зато можно и историю хранить, и статистику собирать, и менять формат легко. Короче одни плюсы, кроме затрат на разработку и поддержку 😄

skyman ★★★★★
()

Хм… А зачем вообще инфа о дисках «для утилизации»? Стёр секьюрно и положил на полку. Ну, может быть, статистика типа «сколько отработали»/«в каком состоянии были на момент списания» определённый архивный интерес и представляет, но зачем на неё всё время пялиться?

alegz ★★★★★
()

попытка отыграть в СМ? давно уже все таски с подрядчиками отработаны, и СМ же подтвержденны, как ни странно..

etwrq ★★★★★
()

А можно вашей идей воспользоваться\вдохновиться и запилить подобный скрипт? (Есть еще пару задумок)

imbaaa
()
Ответ на: комментарий от MaZy

действительно, на десятках стоек внедряем ссд одного вендора, одной модели , одной партии - скидка и взятка. наступает день Х, по TBW, и десяток стоек отказывает - -10млрд, + злые пользователи. стоит ли это, суммарных, 100млн взятки?

etwrq ★★★★★
()

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

SL_RU ★★★★
()
Ответ на: комментарий от alegz

Ну они же еще рабочие как бэ. Вдруг пригодятся! Хотя им можно спокойно выкидывать, да.

Jaeger1999 ★★★★
() автор топика
Ответ на: комментарий от MaZy

Как графана узнает в каком магазине, за сколько я купил HDD? И уж тем более к какому порту на материнке оно подключено.

Jaeger1999 ★★★★
() автор топика
Ответ на: комментарий от Jaeger1999

Сервис Менеджер, как Вы далеки до достойных денег. Возожно просто не компетентны для них) Извините)))

etwrq ★★★★★
()
Ответ на: комментарий от MaZy

Что только не придумают, лишь бы не использовать графану

Точно! Ещё промитиус для сбора и хранения метрик и кастомных лейблов. И алерт мэнэджер чтобы нотификации были. И ансибл чтобы все это разворачивать. И терраформ для разворачивания всего этого где-нибудь в aws. И ваулт для хранения секретов. И айдентити менеджер с самлом и ссо. И облачные функции не забыть чтобы были.

skyman ★★★★★
()
Ответ на: комментарий от Zhbert

Можно было бы сделать то же самое и как-то более красиво, ИМХО.

Запрашивать SMART скриптом и отправлять выхлоп по API в любую LLM?

the_real_kinik ★★★
()

Не без недостатков и все равно лайк)

Теперь даже интересно как в крупных компаниях организован мониторинг.

Xant1k ★★
()

Я сделал похожее, только в табличке в либреофисе. Так рьяно не раскрашивал, хотя это возможно условным форматированием в odt или селекторами в css (селекторов по содержимому нет, так что придётся намазать яваскрипта).

И без ии, обошёлся студневым интеллектом.

А ещё я отмечаю, какие диски занулены на случай желания их отдать/продать

Самое главное - это не лениться физически доставать диски из кладовой и при этом не слишком часто их ронять.

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от legolegs

Прекрасно работает: последнее известное значение.

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

emmawatsondtypants
()
Ответ на: комментарий от emmawatsondtypants

Это ты кастомный дашборд по smartctl_exporter напилил или скриптом к node_exporter приделал? У первого родной дашборд довольно всратый.

pekmop1024 ★★★★★
()
Ответ на: комментарий от skyman

Зря смеешься, очень удобно. Только облака там лишние в силу непредсказуемой цены, а вот впска на хецнере - вполне. И терраформ там вполне пригодится.

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

Только готовые стандартные метрики из коллекции node-exporter (1, 2).

Изменения в представлении на дашборде.

emmawatsondtypants
()
Ответ на: комментарий от emmawatsondtypants

Картинка не открывается ;(

Автоматически, без заполнения ручного журнала учёта локалхоста:

И что круто это видеть? Я понимаю что графана это прикольно, но смотреть на это зачем?

- name: RAIDCritical
  rules:
  - alert: RAIDCriticalFailure
    expr: node_md_state{state="inactive"} >= 1
    for: 5m
    labels:
      severity: critical
...
mx__ ★★★★★
()
Ответ на: комментарий от emmawatsondtypants

Это просто кусок что под руку попался.

mx__ ★★★★★
()

Спрашивайте, критикуйте

Зачем что-то вручную копипастить и куда-то слать? Если бы у меня была задача получить результат как твой - я бы ежемесячные проверки так делал:

Запускаем прогу, она показывает надпись «вставьте диск 1» - вставляем, она ждёт пока он определится, пишет «вставьте 2» - вытаскиваем этот вставляем второй итд. Вставлять не важно в каком порядке, ведь диски отличаются серийниками и соответственно прога сама разберётся где какой. Ну и файл она сгенерит сама и положит его туда откуда можно браузером смотреть легко.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

делитесь своими способами инвентаризации.

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

Теперь диски не теряются, а я перестал покупать «лишний, потому что не помню какой свободен».

У меня свободные могут быть только если они ещё нераспечатаны. Распечатал значит ввожу в эксплуатацию. Если эксплуатация прекращается - подписал железку откуда вытащил, бывшую роль в этой железке и дату вытаскивания и сложил в архив, вдруг когда-то понадобятся данные. Но т.к. скорее всего не понадобятся, то возиться ежемесячно проверять им смарты смысла не вижу, тем более что вытаскивание в большинстве случаев как раз по причине того что у диска уже всё плохо.

firkax ★★★★★
()

но главное — визуальная грамматика: цвет = смысл, глаз цепляется сразу, а не после пятой перечитки цифр.

И тут я осознал, что это аи-слоп.

BruteForce ★★★
()

Зачем инвентаризировать 12 накопителей их можно запомнить в лицо, главное не пить много в процессе?

Frohike
()

Зачем это здесь? Для искиновысеров швабр есть.

mogwai ★★★★★
()

Просто удивительно насколько это лучше стандартных читалок смарта, а особенно той что присобачена к гном-диск.

kirill_rrr ★★★★★
()
Ответ на: комментарий от firkax

Что это за ужасное и неудобное уродство?

Я очень рад, что мои вкусы так далеки от круглосуточного лоровца!

emmawatsondtypants
()
Ответ на: комментарий от Xintrea

Здесь вообще ничего нет ни про ФС, точки монтирования, место и т.д. Эта таблица вообще не про это. Здесь единственная связь с ПК - это столбец «Connection Port», то есть куда воткнут диск и все.

Jaeger1999 ★★★★
() автор топика
Ответ на: комментарий от Jaeger1999

Это понятно, но чтобы понимать какой у тебя ресурс в свободном пространстве, эту информацию надо видеть.

Xintrea ★★★★★
()

Ощущения двойственные.

С одной стороны - потребности автора решены, это главное.

С другой стороны, всегда в таких проектах думаешь - а нужно ли это мне, а как бы я решил проблемы, поставленные проектом, если б его не было?

  1. В теме заявлено - больше не теряю диски. То есть предполагаю, что вот этот набор:

В корпусе 5 дисков, в ящике ещё 4, на столе 3 флешки.

каким-то образом терялся/путался/etc. У меня бы не терялся, конечно. Но, допустим, что планируется еще сто дисков заиметь либо завести в отчеты.

  1. Бэкапы делаются, но куда — всегда забываю. - непонятно, где про них вообще что-то есть в этой программе? Вроде скриншот об этом умалчивает и поиск по треду ничего не дает.

  2. SMART-атрибуты сыпятся в journalctl, а анализировать лень. - их не нужно анализировать, надо настроить smartd на критические атрибуты, чтобы он на почту слал инфу по ним. Пришлет - садитесь, да анализируйте. Он ведь вам может проблем наприсылать прямо после пяти секунд после того, как вы поглядели в этот ваш красивый отчет. В котором еще пять секунд назад все было более-менее норм.

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

Это (разнообразие показаний от разных вендоров) в программе учтено?

  1. «Показывает ресурс (TBW, hours, health).» - ага, вот TBW, мб, пригодилось бы и мне, так я б его, наверное, в Zabbix впилил.

Как и все остальное, что мне нужно.

А прочую инвентаризацию типа - год покупки, куда льются бэкапы, на каком хосте или в какой коробке лежит изделие, наверное, решал бы с помощью GLPI. И вот тут-то всплывает, как по мне, корень любой инвентаризации такого рода, указанный автором:

Раз в месяц втыкаю все накопители по-очереди (внешние и «шкафные» тоже).

То есть, поддержка актуальности - это вам не файл для браузера. Увы. Не буду я так втыкать. Да и к GLPI и прочему подобному софту, если его ставить, вопросов хватает, потому что надо ставить агентов на хосты, а агенты эти могут и приврать, когда инфу собирают. А если руками все вносить, то если работаешь в сплоченном коллективе программистов, которым ничего не стОит поменяться молча мониторами и которые в приципе не поддаются административному воздействию, то все руки поломаешь.

Тем не менее - задор автора понимаю, у него получилось, пользу автор от программы имеет, а более ничего и не нужно (:

Aburus
()
Последнее исправление: Aburus (всего исправлений: 1)

Для каждого делаю два ctrl-c/ctrl-v:

Как минимум это делать точно не нужно, а перенаправлять сразу в файл:

# smartctl -A /dev/sdX > 25nov.txt;
# smartctl -i /dev/sdX >> 25nov.txt;

ну и т.д., есть поле для творчества.

mobster
()
Ответ на: комментарий от mobster

из лесу, ведомо. а если Вы про деяния, то деяния остаются много где таковымы

etwrq ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.