amarao (amarao_san) wrote,
amarao
amarao_san

Categories:

патчим #anime под FreeBSD

Итак, финальная часть. Предыдущие: http://amarao-san.livejournal.com/tag/animelife

Осталось уточнить одно: как именно, на физическом уровне, происходит процесс работы с HDDLib?

Ну, всё довольно просто. SATA, особенно, SATA300 умеет hotplug, т.е. диски (при должной готовности файловой системы) можно свободно дёргать на ходу. Единственным "но" является правильность подключения питания - питание подключается раньше data и отключается после отключения data (это вполне понятно, т.к. при подаче питания идут переходные процессы, и совсем не хочется, чтобы побочные эффекты стукнули по шнурку). Теоретически, шнур питания sata достаточно готов к хотплагу, но на практике, лучше не рисковать, потому что один из тысячи раз 12 вольт попадёт на устройство раньше земли...


Итак, процесс подключения выглядит просто: воткнули питание, дождались раскрутки диска, воткнули шнур с данными.

После этого диск монтируется (я обычно это делаю в /media/HDD), с ним выполняется то, что нужно (копирование/удаление), приходит время удаления...

Что нужно сделать в минимальном виде, чтобы отключить диск? Во-первых, отмонтировать его. Файловые системы очень не любят, когда их рубят на ходу.

Во-вторых, нужно объяснить ядру, что диск будут отключать. В принципе, новые ядра очень хорошо умеют понимать "отваливающееся железо", так что никакого криминала не будет, если после отмонтирования просто вытащить винт. (note: я не уверен, делается ли sync при отмонтировании).

Но ядро сдержанно матюгнётся в dmesg, так что есть более красивый вариант отключения. Нужно сказать ядру "выключить такое-то устройство". Делается это записью "1" в /sys/block/sdX/device/delete.

Так что пишется простенький, но приятный скрипт в /usr/local/sbin/:
#!/bin/sh
echo 1 >/sys/block/$1/device/delete


sudo soff sdf, и диск можно отключать.

У меня есть штатная соска SATA и SATA-TO-USB бокс. Безусловно, первое работает лучше (скорости до 70Мб/с, у USB не выше 30). Но оно требует открытого корпуса, и некоторой сосредоточенности духа (т.к. можно легко воткнуть питание SATA к верх ногами, что на ходу приведёт к КЗ в БП и вероятному выгоранию электроники, разъём SATA хоть и хотплаг, но нифига не дуракозащищённый - воткнуть питание углом к верх ногами можно элементарно), так что USB используется для мелких задач, а так же для ситуаций, когда нужно больше одного винта одновременно.

В принципе, в корпусе есть место для большего количества винтов, но лучше не перенапрягать БП, потому что при старте дисков идёт ОЧЕНЬ большое превышение потребления тока, а все бюджетные (десктопные) системы не умеют делать отложенного старта винтов... (у меня есть пара мыслей, как это попытаться сделать для несистемных дисков, но это надо садиться экспериментировать с живыми винтами, что есть не очень хорошо).

Винчестер на БП - обычное место для гостевого диска (благодаря отсутствию соседов и дырки сзади, он получает довольно ощутимый ток воздуха не смотря на отсутствие вентиляторов. В моей коллекции дисков, только первая 250ка от сигейта с вертикальной записью умудряется тут перегреваться под 45-50 градусов, остальные лежат холодными.

Tags: anime, animelife, hardware, linux
Subscribe

  • systemd-networkd, netlink и arp флуд

    Нереально странный баг пофикшен с помощью eBPF затычки. Для меня большой неожиданностью является реакция на него.…

  • Rust soundness

    Каждый раз, когда я сталкиваюсь с маленькими "но" в Rust'е, это ощущение тщательной продуманности. Например, простейшие fold-функции для итераторов:…

  • still_ntp

    В ходе локального мозгового штурма у меня родилась суперидея. Надо написать ntp сервер, который может отдавать указанную дату. Т.е. сказали при…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 22 comments

  • systemd-networkd, netlink и arp флуд

    Нереально странный баг пофикшен с помощью eBPF затычки. Для меня большой неожиданностью является реакция на него.…

  • Rust soundness

    Каждый раз, когда я сталкиваюсь с маленькими "но" в Rust'е, это ощущение тщательной продуманности. Например, простейшие fold-функции для итераторов:…

  • still_ntp

    В ходе локального мозгового штурма у меня родилась суперидея. Надо написать ntp сервер, который может отдавать указанную дату. Т.е. сказали при…