[image]

Вопрос о безопасности горячей замены HDD

 

ttt

аксакал


Кто постоянно пользуется горячей заменой в домашних компьютерах?

Давно стоят салазки Thermaltake, но побаиваюсь горячей замены, меняю на выключенном компе.

Кто регулярно пользуется, бывают инциденты с потерей данных?
   70.0.3538.7770.0.3538.77

Mishka

модератор
★★★

ttt> Кто постоянно пользуется горячей заменой в домашних компьютерах?
ttt> Давно стоят салазки Thermaltake, но побаиваюсь горячей замены, меняю на выключенном компе.
ttt> Кто регулярно пользуется, бывают инциденты с потерей данных?

Дома валяется "система". Так и не удосужился поставить. Как-то спасаюсь внешними винтами. На работе используются только в случае реального выхода из строя.
   63.063.0
+
+2
-
edit
 

e_maksimov

втянувшийся

ttt> Давно стоят салазки Thermaltake, но побаиваюсь горячей замены, меняю на выключенном компе
ttt> Кто регулярно пользуется, бывают инциденты с потерей данных?

Интерфейс SATA может поддерживать hotswap, но не обязан. Организация контактов интерфейсного разъема даже не полдела, она только убережет электронику контроллера/накопителя от переходных процессов.

1. В софте (драйверах контроллера, файловой системы и т.д.) имеются программные буфера на запись, их общий размер может достигать сотен мегабайт и их содержимое нужно сохранить на поверхности диска перед его отключением.
2. В контроллере SATA так же имеются буфера на запись, чаще они очень мелкие (кеш RAID-контроллеров пока не рассматриваем), на одну-пару команд, но их содержимое так же необходимо сохранить на поверхности диска перед его отключением.
3. Буферы на запись есть и в самом накопителе, в десятки мегабайт. Если питание жесткого диска отключить, пока данные из его буферной памяти не сохранились на магнитные пластины, то данные в буфере так же потеряются. Некоторые накопители умеют сбрасывать данные буфера при отключении питания, но не уверен, что это умеют диски для потребительского сегмента, в любом случае, лучше уточнить в документации на конкретный диск.
4. Если жесткий диск дернуть, пока его головки не запаркованы, а диск не умеет их парковать по сигналам встроенного акселерометра, то головки могут соприкоснуться с поверхностью пластин и это приведет к физическим повреждениям диска.

То есть, в идеале, перед отключением диска ОС должна сбросить данные из программных буферов и подать контроллеру соответствующие команды, которые приведут к записи сбросу на диск аппаратных буферов, парковке головок и остановке мотора шпинделя диска. В большинстве случаев, в контроллере и его драйвере такая поддержка имеется, но бывают исключения, нужно смотреть документацию на конкретную модель контроллера и конкретную версию драйвера. Некоторые модели контроллеров/драйверов имеют под Windows поддержку возможность отключения диска через стандартный интерфейс отключения внешних накопителей, через который отключаются, к примеру, USB-флешки. Если такой поддержки нет, то придется самостоятельно размонтировать накопитель через MMC-оснастку управления накопителями, но в этом случае команда на парковку головок и отключение шпинделя не посылается, их можно послать через сторонние утилиты или дождаться, когда накопитель самостоятельно уйдет в режим сна. Только после этого, можно безопасно отключать накопитель от интерфейса и питания. Во всех остальных случаях имеется риски потери повреждения данных или накопителя.
   63.063.0
+
-
edit
 

ttt

аксакал


e.m.> Интерфейс SATA может поддерживать hotswap, но не обязан. ...

Спасибо!.
   70.0.3538.7770.0.3538.77
US Mishka #15.11.2018 01:10  @e_maksimov#12.11.2018 20:53
+
-
edit
 

Mishka

модератор
★★★

e.m.> То есть, в идеале, перед отключением диска ОС должна сбросить данные из программных буферов и подать контроллеру соответствующие команды, которые приведут к записи сбросу на диск аппаратных буферов,
В идеале и в реале, диск обычно никто не выдёргивает на ходу. Обычно его сначала размонтируют, а потом дёргают. Вот размонтирование и делает все записи буферов/кэшей, парковку головок, подготовку к выключению. Ну и не разрешает уже софту работать с этим девайсом.
   63.063.0
RU e_maksimov #16.11.2018 21:32  @Mishka#15.11.2018 01:10
+
+1
-
edit
 

e_maksimov

втянувшийся

Mishka> Обычно его сначала размонтируют, а потом дёргают. Вот размонтирование и делает все записи буферов/кэшей, парковку головок, подготовку к выключению.
Нет. Размонтирование раздела в ОС и отключение накопителя - это разные операции, первая чисто софтовая и не зависит от драйверов контроллеров и поддержки железом. Банальный пример - два раздела на одном диске, размонтируется только один - и? Нужно питание диску отрубать? :)

При размонтировании раздела ОС сбрасывает только собственные буфера/кеши относящиеся к этому разделу, а парковка головки и остановка шпинделя накопителя требует отдачи специальных команд диску и эта возможность должна поддерживаться по всему стеку - ОС, драйверами и железом контроллеров (не только SATA, но и USB в случае переходников USB-SATA), самим накопителем.

В Linux при размонтировании через umount эти команды не посылаются, но в большинстве "mount/umount"-апплетов для DE есть еще функция отключения накопителя, чаще отдельным пунктом меню, не копал, на каком уровне реализуется.

В Windows MMC-оснастка "управление дисками" при размонтировании раздела так же не посылает команды на отключение накопителя, они могут посылаться при использовании апплетов "безопасное извлечение устройства" и MMC-оснастки "диспетчер устройств", но повторюсь, всего лишь могут, а не гарантированно посылаются. Мало того, наличие SATA-диска в списке апплета "безопасное извлечение устройства" говорит только о том, что драйвер контроллера заявляет поддержку отключения, но совсем не факт, что эта возможность действительно реализована в драйвере, а не выведена в функцию-заглушку :) В начале распространения SATA такое встречалось даже в драйверах Intel, а первые драйвера Nvidia вспоминать страшно. Сейчас с драйверам стало получше, но нюансы все равно остались.

Реальности жизни: китайский переходник USB 2.0-SATA, внешний хард Seagate Expansion USB 3.0, а так же ноут с USB-контроллером чипсета Intel 8-й серии и разъемами как чисто USB 2.0, так и комбинированными USB 2.0/USB 3.0, на ноуте одновременно установлены различные Linux'ы, Windows 7 и Windows 10. Разделы, разумеется, везде размонтируются нормально (сбои в ОС отдельная тема), а с отключением не все так однозначно. В Windows 7 через апплет "извлечение устройства" в любых комбинациях головки паркуются, шпиндели останавливаются. В Windows 10 - подключенный через комбинированные USB переходник не паркует головки и не останавливает шпиндель. Под Linux'ами - Seagate Expansion не паркует и не останавливает ни на одном из разъемов. Вот такая загогулина, понимаешь.
   63.063.0
US Mishka #17.11.2018 00:22  @e_maksimov#16.11.2018 21:32
+
-1
-
edit
 

Mishka

модератор
★★★

e.m.> Нет. Размонтирование раздела в ОС и отключение накопителя - это разные операции, первая чисто софтовая и не зависит от драйверов контроллеров и поддержки железом. Банальный пример - два раздела на одном диске, размонтируется только один - и? Нужно питание диску отрубать? :)
Читать умеешь? Видимо нет. Где и кто сказал, что это одна операция. Сказано было, что вначале обычно размонтируют, а потом дёргают.

Питание после размонтировки одного раздела выключать не надо. Но размонтировать диск перед выключением питания было бы неплохо.


e.m.> При размонтировании раздела ОС сбрасывает только собственные буфера/кеши относящиеся к этому разделу, а парковка головки и остановка шпинделя накопителя требует отдачи специальных команд диску и эта возможность должна поддерживаться по всему стеку - ОС, драйверами и железом контроллеров (не только SATA, но и USB в случае переходников USB-SATA), самим накопителем.

Есть разные уровни размонтирования. Очень корявая аналогия с удалением файлов в лине. Запись в директории исчезает сразу, а место освобождается только тогда, когда счётчик ссылок становится равным 0.

Ну и демонтировка того же USB диска в Виндах или Лине таки останавливается двигатель, паркует головки, сбрасывает кэши.

e.m.> В Linux при размонтировании через umount эти команды не посылаются, но в большинстве "mount/umount"-апплетов для DE есть еще функция отключения накопителя, чаще отдельным пунктом меню, не копал, на каком уровне реализуется.

Чаще всего уже не так. Чаще всего, когда USB диск и демонтировал, то готов к выдёргиванию. При этом, если есть хоть одна задача, которая что-то держит открытым, то демонтировка не проходит. Хотя и принудительная есть, но со всякими принуждениями.

e.m.> что эта возможность действительно реализована в драйвере, а не выведена в функцию-заглушку :) В начале распространения SATA такое встречалось даже в драйверах Intel, а первые драйвера Nvidia вспоминать страшно.
Ты говоришь про случай, когда выпустили какашку на рынок (по спецификациям там должна быть эта поддержка, откуда и заглушки). А выводы делаешь на то, как бы должно быть. Так вот по спецификациям должно быть. А уж каку тебе предоставили и ты её кушаешь, или же платишь чуть больше, но покупаешь нормальное — это твой выбор.
   63.063.0
LT Bredonosec #17.11.2018 02:51  @e_maksimov#16.11.2018 21:32
+
-
edit
 
e.m.> Реальности жизни: китайский переходник USB 2.0-SATA, внешний хард Seagate Expansion USB 3.0, а так же ноут с USB-контроллером чипсета Intel 8-й серии и разъемами .. В Windows 7 через апплет "извлечение устройства" в любых комбинациях головки паркуются, шпиндели останавливаются. В Windows 10 - подключенный через комбинированные USB переходник не паркует головки и не останавливает шпиндель.

о, близкая тема.. WD blue внешний диск на усб. Тотал воспринимает его как нормальный жесткий диск, а не выносное устройство, и даже не предлагает команд "извлечения" или чего подобного. Хоть, по идее, на усб что-то подобное должно бы было быть реализовано. Соответственно, что под хп, что под 7 .что под 10 - никакой остановки. Даже при отключении питания компа (выключил) - по звуку ведет себя так же...
   26.026.0
RU e_maksimov #17.11.2018 06:49  @Mishka#17.11.2018 00:22
+
+2
-
edit
 

e_maksimov

втянувшийся

Mishka> Читать умеешь?
Умениями в хамстве хвастаешь? Не удивил, старайся лучше.

Mishka> Ну и демонтировка того же USB диска в Виндах или Лине таки останавливается двигатель, паркует головки, сбрасывает кэши.
Настойчиво путаешь две различные операции - размонтирование ФС и отключение накопителя. Попробую еще раз: подключаю хард к линуху без установленного DE и утилит для автомонтирования, монтирую/размонтирую ФС в консоли ручками через mount/umount - и чо? Где обещанная тобой парковка головки? Где остановка шпинделя? А нету. И не будет, пока в хард кто-то не пошлет ATA команду stanby или sleep. Или ждать пока хард автоматически уснет, если хард это умеет, что не факт, особенно на накопителях рассчитанных на работу в RAID, да и руками у многих энергосбережение блокируется.

Mishka> Ты говоришь про случай, когда выпустили какашку на рынок (по спецификациям там должна быть эта поддержка, откуда и заглушки)
Ты фигню написал. Не должна и не обязана. Спецификация на интерфейс SATA предусматривает возможность hotswap, но это лишь опция, её реализация полностью на совести вендоров - это раз. Стандартов ATA, только основных, больше десятка (знаешь, к примеру, отличия ATA8-ACSr6a?) и полной совместимости между ними всеми нет и быть не может, а значит поддержка каких-то возможностей доступна на ограниченном сочетании хостов, устройств и софта - это два. Возможности парковки головок и остановки шпинделя появились еще в подмножестве ATAPI (ЕМНИП, в ATA/ATAPI-4, но могу за давностью лет и немного промахнуться с версией). Нет стандартов на мосты USB-SATA/ATA, обязывающих посылать накопителям stanby/sleep, даже если от USB-хоста прилетела команда поверменеджмента - это три. Да и с софтом всегда есть простор для творчества, Microsoft, к примеру, в одних драйверах отрубает питание с USB-порта хаба, а в других посылает stanby/sleep и питание с порта не снимает, сохраняя (иногда лишь теоретическую) возможность послать wake-up и вернуться к работе с устройством без "перетыкания".

Mishka> А уж каку тебе предоставили и ты её кушаешь
Хочешь дергать накопители только после отмонтирования ФС - дергай, кто-ж тебе запрещает, а замаскировать хамством отсутствие знание по теме у тебя не получилось.
   63.063.0
RU e_maksimov #17.11.2018 07:11  @Bredonosec#17.11.2018 02:51
+
-
edit
 

e_maksimov

втянувшийся

Bredonosec> о, близкая тема...
Творчество Майкрософт отдельная боль. Если от опенсорсного Линуха сложно что-то требовать, то от платной ОС ожидаешь большей предсказуемости, особенно после 7-ки. Это при том, что у 10-ки гораздо более ограниченная поддержка старого железа и софта, чем была у 7-ки на момент её старта и в теории, тестировать компоненты 10-ки должно быть проще. Спасаюсь LTSB/LTSC версией.
   63.063.0
+
-
edit
 

Unix

опытный

e.m.> ... монтирую/размонтирую ФС в консоли ручками через mount/umount - и чо? Где обещанная тобой парковка головки? Где остановка шпинделя? А нету. И не будет, пока в хард кто-то не пошлет ATA команду stanby или sleep.

man hdparam ;)

Но если у тебя HW-RAID то быстрее всего обломишься, надо утиль от вендора юзать.


PS: А вообще тема - жёстко наркоманская :)
   60.060.0
LT Bredonosec #17.11.2018 16:15  @e_maksimov#17.11.2018 07:11
+
-
edit
 
e.m.> Творчество Майкрософт отдельная боль. Если от опенсорсного Линуха сложно что-то требовать, то от платной ОС ожидаешь большей предсказуемости, особенно после 7-ки.
ну это да...
А есть какой-нибудь более-менее универсальный способ из оси останавливать диск, чтоб не перекусывать лом очком за сохранность данных каждый раз, вынимая диск из усб гнезда?
Там, набор команд консоли... unmount просто, как понимаю, недостаточно..
   26.026.0
+
-
edit
 

e_maksimov

втянувшийся

Unix> man hdparam ;)
Дык в курсях, я выше писал, что есть утилиты
Unix> PS: А вообще тема - жёстко наркоманская :)
Так-то да, но был случай в истории, когда у человека запоролся диск: размонтировал, подождал пока кеши сбросятся на блины, подождал еще, начал дергать из салазок, а винт в этот момент решил провести фоновое тестирование и задвигал головками. Сто раз дергаешь просто так и мимо, а потом попадаешь на грабли.
   63.063.0
RU e_maksimov #18.11.2018 07:25  @Bredonosec#17.11.2018 16:15
+
+1
-
edit
 

e_maksimov

втянувшийся

Bredonosec> А есть какой-нибудь более-менее универсальный способ из оси останавливать диск
Наиболее универсальный - послать накопителю ATAPI-команду на переход в режим пониженного энергопотребления. Если мост USB-SATA отдает S.M.A.R.T. накопителя, то скорее всего он не прячет хард за логическим устройством и пропустит команду ATAPI, нужна лишь утилита для её отправки. В линухе это умеет уже упомянутая Unix'ом утилита hdparm, с ключом -Y она посылает команду на переход в режим sleep - хард должен запарковать головы, остановить шпиндель и сократить потребление электроникой до уровня ниже 0,1Вт. Ключ -y отправит винт в standby mode - в принципе, по механике то же самое, только меньше электроники на винте отрубается и потребление не должно превышать 0,3Вт, зато обратный переход в активное состояние займет меньше времени. Под виндой для этой цели пользовался утилитой revoSleep (revoSleep - Get revoSleep and let sleep your hard disk individually!) - бесплатна и компактна.

В варианте, когда мост не передает харду команды поверменеджмента, можно попробовать отрубить питание на порту USB-хаба или хаб целиком, но под винду утилит не припомню, а под линуксом конкретный путь зависит от версии ядра, наложенных патчей, а так же драйверов и железа контроллера USB/хаба. На старых ядрах часто сработатывало "echo suspend > /sys/bus/usb/devices/usbX/power/level", в более новых в каких-то случаях помогает "echo 'X-Y' | tee /sys/bus/usb/drivers/usb/unbind", где Х-Y - это ID устройства/хаба на шине USB, узнать его можно грепнув dmesg по "usb" и серийнику устройства. При подключении девайса там будет написано что-то типа:
[247863.182454] usb 1-1.3: new high-speed USB device number 14 using ehci-pci
[247863.292139] usb 1-1.3: New USB device found, idVendor=14cd, idProduct=6116, bcdDevice= 2.20
[247863.292144] usb 1-1.3: New USB device strings: Mfr=1, Product=3, SerialNumber=2
[247863.292148] usb 1-1.3: Product: USB Mass Storage Device
[247863.292151] usb 1-1.3: Manufacturer: Generic
[247863.292153] usb 1-1.3: SerialNumber: 116AC2101219

В данном случае 1-1 - это ID хаба, а 3 - устройства, но у меня на этом железе порты индивидуально не отрубаются, поэтому можно отключить только хаб целиком по ID 1-1 - осторожно, отрубятся все устройства, что подключены к хабу, флешки-мышки-вебкамеры :) Обратно питание возвращается через "echo 'X-Y' | tee /sys/bus/usb/drivers/usb/bind". Но не факт, что этот способ сработает на другом железе. На тех же USB-SATA коробках/переходниках под 3,5" харды с запиткой от отдельного Б/П этот способ будет скорее-всего бесполезен.
   63.063.0
+
-
edit
 

imaex

опытный


e.m.> а парковка головки и остановка шпинделя накопителя требует отдачи специальных команд диску

Я, конечно, не специалист в этой области, но давно считал, что спецкоманды на парковку - это анахронизм. Вроде как головки должны автоматом в зону парковки выводиться при прекращении питания за счет энергии, накопленной в конденсаторах, отвечающих за эту задачу. Лет 20 как минимум считал так, а скорее всего больше. Это не так?
   1717
LT Bredonosec #19.11.2018 17:48  @e_maksimov#18.11.2018 07:25
+
-
edit
 
e.m.> Под виндой для этой цели пользовался утилитой revoSleep (revoSleep - Get revoSleep and let sleep your hard disk individually!) - бесплатна и компактна.
спасибо, забрал )
но как понимаю, надо инсталлить?
Думал, есть что-то, что можно скопировать с диска, запустить, и выключить на любой произвольной машине без инсталла..
   70.0.3538.170.0.3538.1

Sandro
AXT

инженер вольнодумец
★☆
imaex> Вроде как головки должны автоматом в зону парковки выводиться при прекращении питания за счет энергии, накопленной в конденсаторах, отвечающих за эту задачу. Лет 20 как минимум считал так, а скорее всего больше. Это не так?

Близко к истине, хотя на самом деле парковка производится просто за счёт скатывающей силы, про конденсаторы — это сказка. Но данные из буферов могут не успеть попасть на диск, и в этом-то и проблема.
   52.952.9
RU e_maksimov #19.11.2018 22:43  @Bredonosec#19.11.2018 17:48
+
+1
-
edit
 

e_maksimov

втянувшийся

Bredonosec> но как понимаю, надо инсталлить?
ЕМПНИ, раньше не требовала, но за обновлениями не следил, так что извиняюсь, если прога стала унылой.
   63.063.0
LT Bredonosec #19.11.2018 22:56  @Sandro#19.11.2018 21:19
+
-
edit
 
Sandro> Близко к истине, хотя на самом деле парковка производится просто за счёт скатывающей силы
а что за скатывающая сила? Головки же не касаются поверхности.
Разобранные также не имели тренда к повороту куда угодно
Ток при парковке мелкий неодимовый магнитик защелкивал положение в паркинге.
   26.026.0
+
+1
-
edit
 

e_maksimov

втянувшийся

imaex> Вроде как головки должны автоматом в зону парковки выводиться при прекращении питания
Вы правы, головка сама уходит в нерабочую зону при отключении питания, для питания сервопривода могут использовать не только конденсаторы, могут мотор шпинделя в режим генерации переключать, заодно затормаживая его. Только здесь обсуждается совсем другая ситуация, когда накопитель уже двигается в залазках, а питание на него еще подается - за счет хода контактной пары в разъеме SATA питание отключится уже после того, как накопитель сдвинется на несколько миллиметров. Знаю случаи, когда этого было достаточно. Если в диске нет акселерометра, то сам он не успеет запарковать головки. В старые времена существовали отсеки под SCSI (КМК, что-то IDEшное у TEAC'а было под их диски-картириджи), у которых питание отрубалось при открытии ключом замка блокировки. Допускаю, что подобные существуют и для SATA, на таких салазках достаточно корректно размонтировать разделы, отрубить замком питание и через несколько секунд можно спокойно извлекать накопитель, но лично с такими салазками не сталкивался и не слышал от других.
   63.063.0
RU Sandro #20.11.2018 02:33  @Bredonosec#19.11.2018 22:56
+
-
edit
 

Sandro
AXT

инженер вольнодумец
★☆
Sandro>> Близко к истине, хотя на самом деле парковка производится просто за счёт скатывающей силы
Bredonosec> а что за скатывающая сила? Головки же не касаются поверхности.

Банка же газонаполненная. Когда диск вращается, он увлекает за собой газ, в результате из-за действия центробежной силы возникает постоянный поток от центра к периферии диска. Скорость там, кстати, довольно приличная.

Bredonosec> Разобранные также не имели тренда к повороту куда угодно

Естественно — диск-то не вращается. :)
   43.043.0
LT Bredonosec #20.11.2018 10:38  @Sandro#20.11.2018 02:33
+
-
edit
 
Sandro> Банка же газонаполненная. Когда диск вращается, он увлекает за собой газ
хм.. вариант..
Жаль, не имею под рукой разобранного с неснятой головкой для проверки...

Sandro> Естественно — диск-то не вращается. :)
имел в виду, именно при врщении. Крутил - не замечал стремления головок повернуться. А ща проверить не на чем.
   69.0.3497.9969.0.3497.99

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru