PDA

Показать полную графическую версию : SCSI/SAS диски. Диагностика, ремонт.


Страниц : [1] 2 3

IgNat
19-11-2012, 21:47
Вопросы по различию команд ATA и SCSI. Позволяет ли интерфейс SAS (SCSI) производить операции REMAP и Reasign иначе чем с SATA?

AMDBulldozer
23-11-2012, 10:12
misha2, если желаете, давайте уточним.

Неверно. Ремап происходит только вендор-командой самого винта, находящейся в ТМОС. И никакому линуху, винде или маку это не под силу. И вы это прекрасно понимаете. »

Неверно. Это зависит от интерфейса устройства. Если бы у автора темы был SAS вместе SATA, любой сектор можно было бы легко переназначить принудительно командой sg_reassign.
Если уж Вы требуете от меня безупречных формулировок, тогда и сами их используйте, логично?

Немножко разберитесь с понятиями "сектор" и "блок". Сектор равен 512 байт или 4К, а блок обычно равен 256 секторов (понятие диагностического/ремонтного ПО). ФС (например виндовые) работают не на уровне секторов, а на уровне кластеров, суперблоков и т.п. »

Немножечко разберитесь с понятиями "сектор" и "блок". Сектор равен 512 байт или 4кБ, а блоком называется минимальный объем данных, который может быть распределен файловой системой.
Термин "кластер" не используется никем, кроме Microsoft, и только по отношению к её собственным файловым системам. Термин "суперблок" используется в целом ряде файлов систем, таких как extX, reiserfs, XFS, HFS+, JFS, но означает совсем не то, что Вы думаете. Он представляет собой основной блок фс, содержащий гиперданные (данные о метаданных) файловой системы.
Поэтому, как я уже отметил, задача состоит в том, чтобы сначала по номеру сектора определить к какому блоку он относится и установить свободен ли этот блок или распределен какому-то файлу. В файловых системах extX (т.е. ext2/ext3/ext4) для этой цели используется программа debugfs и последовательность команд icheck/ncheck.

Большая просьба, если собираетесь пытаться меня поправлять, будьте любезны предварительно ознакомиться с существом проблемы по которой высказываетесь. Искренне прошу не обижаться на меня за это замечание.

misha2
23-11-2012, 10:41
Это зависит от интерфейса устройства. Если бы у автора темы был SAS вместе SATA, любой сектор можно было бы легко переназначить принудительно командой sg_reassign. »
Блииин, ну точно вы не понимаете механизма ремапа винтом в принципе. Очень жаль. У винта своя ОСь (ТМОС) - микропрограмма , которая же и реализует это. Это раз 200 было описано в кучах обсуждениях на десятках форумов в течение последних 10 лет. Вы хотите весь мир перевернуть ?
Немножечко разберитесь с понятиями "сектор" и "блок". Сектор равен 512 байт или 4кБ, а блоком называется минимальный объем данных, который может быть распределен файловой системой. »
Здесь форум о накопителях и проблем с ними. Проблемы зачастую решаются софтово. И софт для накопителей использует понятия сектора и блока, равного 256 секторов. Речь здесь идёт про накопители. Для обсуждения ФС, ОС есть и другие ветки. И там существуеют кучи понятий всяких блоков.
блоком называется минимальный объем данных, который может быть распределен файловой системой. »
И вот эту фразу прокомментируйте сами пож-ста. Как это соотнести к Виктории, MHDD и т.п., которым глубоко наплевать в работе на тип и наличие ФС вообще ? И про какие данные может идти речь , если например винт полностью был заполнен 0000 ?

AMDBulldozer
23-11-2012, 11:01
Вы правы. Форум о накопителях. Но есть одно "но". Сама по себе пустая железка никого не интересует. Как только с жестким диском начинают возникать проблемы, у всех сразу первым делом встает вопрос: "как спасти данные"?
А логическая структура данных поддерживается именно файловой системой.
Поэтому, я полагаю, никому из людей с проблемными HDD не интересно знать, что для диагностики поверхности диска некоторое ПО от балды использует последовательность секторов определенной длины (причем разной) и называет это дело "блоком". Который ни физически, ни логически ничему не соответствует. Неинтересно пострадавшему как автор ПО назвал тот участок, к которому в данный момент обращение происходит. Вот ни капельки. А судьба своих любимых файлов ему, напротив, очень интересна.
Поэтому, с моей точки зрения, всё-таки правильнее будет называть блоком именно ту структуру, которую так называют авторы ОС и драйверов файловых систем.

Блииин, ну точно вы не понимаете механизма ремапа винтом в принципе. Очень жаль. »

Боюсь, Вы не знакомы интерфейсом SAS. В частности, с набором команд SBC-3. Очень жаль.
Цитирую по стандарту. Команда "Reassign Blocks" (код команды 0x07):



The REASSIGN BLOCKS command (see table 44) requests that the device server reassign defective logical
blocks to another area on the medium set aside for this purpose. The device server should also record the
location of the defective logical blocks in the GLIST, if supported. This command shall not alter the contents of
the PLIST (see 4.8).
The parameter list provided in the data-out buffer contains a defective LBA list that contains the LBAs of the
logical blocks to be reassigned. The device server shall reassign the parts of the medium used for each logical
block in the defective LBA list. More than one physical block may be relocated by each LBA. If the device
server is able to recover user data and protection information, if any, from the original logical block, it shall
write the recovered user data and any protection information to the reassigned logical block. If the device
server is unable to recover user data and protection information, if any, it shall write vendor-specific data as
the user data and shall write a default value of FFFFFFFF_FFFFFFFFh as the protection information, if
enabled. The data in all other logical blocks on the medium shall be preserved.

IgNat
23-11-2012, 13:10
AMDBulldozer, сначала вы пишите:чтобы их переназначить - это элементарно делается в Linux командой "hdparm --repair-sector" »- затем, что только для:SAS вместе SATA »- может имелось ввиду вместо? и другая команда:переназначить принудительно командой sg_reassign »- если не трудно, каков окончательный вариант переназначения секторов в Linux и при каких условиях? Спасибо.

AMDBulldozer
23-11-2012, 13:30
IgNat, возможность выполнить операцию переназначения сектора, естественно, не зависит от операционной системы. Просто для Linux я команды знаю, а для Windows нет.
Возможны два варианта. Первый - у Вашего диска интерфейс SAS. Именно у диска. Если у Вас диск SATA подключенный к SAS контроллеру, ничего не выйдет. Так вот, среди SCSI block commands (SBC) есть команда переназначения группы секторов в резервную зону. Независимо от того, хорошие они или плохие - микропрограмма контроллера диска выполнит то, что ей приказали. Есть и другая команда. Прочитать список переназначенных секторов (GLIST).
Выполнить принудительное переназначение [диапазона] секторов для SAS-диска можно в Linux командой sg_reassign.
Если попробовать использовать эту команду с SATA устройством (а у подавляющего большинства домашних пользователей, согласитесь, именно диск с SATA интерфейсом), никакого результата не будет вообще.
Набор команд SATA урезан по сравнению с командами SBC. И две упомянутые мной команды в него не вошли.
Поэому остается одно - идти по пути "Виктории" и других подобных программ. Дать команду записи в нестабильный сектор, в надежде, что контроллер обнаружит ошибку и сам переназначит сектор на резервную зону.
Таким образом, для разных типов интерфейса мы используем разные команды.
sg_reassign, которая дает 100% результат для SAS и
hdparm --repair-sector (или "hdparm --write-sector") для SATA дисков.
Принципиальная разница между этими двумя ситуациями понятна. В случае SAS мы можем взять хороший сектор, принудительно его переназначить и нет никаких сомнений, что команда будет исполнена.
Попытка переназначить не только хороший, но даже "слегка аномальный" сектор записью в него, естественно, уже не пройдет. Если контроллер не посчитает нужным - он ничего переназначать не будет.

IgNat
23-11-2012, 14:11
AMDBulldozer, спасибо. По сути:я разобрался бы с этими тремя секторами за 10 минут максимум (на самом деле, основная проблема состоит не в том, чтобы их переназначить - это элементарно делается в Linux командой "hdparm --repair-sector" »- при физическом повреждении сектора/блока секторов практически не выполнимо? Как пишутся команды для переназначения, например для сектора LBA1000 и блока секторов LBA1000-LBA2000, для SAS и SATA.

AMDBulldozer
23-11-2012, 14:33
IgNat,
для SAS:
sg_reassign -a 1000 /dev/sda
sg_reassign -a 1000 /dev/sda && sg_reassgn -a "$(echo {1001..2000})" /dev/sda

Этот вариант годится для обоих интерфейсов:

hdparm --repair-sector 1000 /dev/sda
for i in {1000..2000}; do hdparm --repair-sector $i /dev/sda; done

Как раз физические дефекты поверхности "--repair-sector" и отлавливает.
Если сектор уже включен в список "нестабильных", количество которых фиксируется в 197-ом атрибуте, то любая попытка
записи в него автоматически сопровождается последующим чтением. И если при чтении зафиксирована ошибка контрольных сумм, либо несовпадение записанной и прочитанной информации, сектор автоматически переназначается микропрограммой контроллера диска.

misha2
23-11-2012, 18:05
AMDBulldozer,
Приведите лучше для примера формат, саму команду переназначения или переноса самого вендора, а не описание стандарта. Ради интереса. (подсказка - ключевое слово merge to p-list).

AMDBulldozer
23-11-2012, 19:10
Приведите лучше для примера формат, саму команду переназначения или переноса самого вендора, а не описание стандарта. Ради интереса. (подсказка - ключевое слово merge to p-list). »

Вы имеете в виду команду интерфейса или команду технологического режима? Второй, сами понимаете, никакого отношения к нормальной работе диска не имеет и для домашнего пользователя (как и для операционной системы) недоступен.

misha2
23-11-2012, 19:55
имеете в виду команду интерфейса или команду технологического режима? Второй, сами понимаете, никакого отношения к нормальной работе диска не имеет и для домашнего пользователя (как и для операционной системы) недоступен. »
А вы считаете что встроенный селфтест (оффлайн) при котором собствено ремап и происходит - это какой-то ненормальный, нештатный режим винта ? А и при простом чтении секторов винт может ремапить, не только при оффлайн-скане. Вообще ремап как таковой недоступен для ОС.

AMDBulldozer
23-11-2012, 20:38
А вы считаете что встроенный селфтест (оффлайн) при котором собствено ремап и происходит - это какой-то ненормальный, нештатный режим винта ? А и при простом чтении секторов винт может ремапить, не только при оффлайн-скане. Вообще ремап как таковой недоступен для ОС. »

Вы, простите, не ответили на поставленный вопрос. и, если честно, я не совсем понимаю какую цель Вы преследуете. Из Вашей подписи следует, что Вы занимаетесь ремонтом жестких дисков. Отсюда следует, что Вы безусловно гораздо больше меня знаете об их внутреннем устройстве.
Но, судя по той же подписи, Вы также занимаетесь восстановлением информации на них. А значит, должны знать структуру метаданных всех файловых систем, которые используют потенциальные заказчики Ваших услуг.
И, тем более, должны знать все подробности функционирования SMART, поскольку именно эта технология отвечает за самодиагностику накопителя. Настройка запуска автономного тестирования в фоновом режиме осуществляется именно функциями ОС. По запросу или по таймеру.
К примеру, "smartctl -t offline /dev/sda".

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

Естественно, контроллер предпринимает действия по отношению к проблемным блокам, выявленным при таком тестировании. К примеру, 198-ой атрибут содержит счетчик нестабильных блоков, выявленных именно при самотестировании.

Это первое. И второе. Такое впечатление, что мы с Вами ходим по какому-то замкнутому кругу.
Я привожу Вам конкретный опкод и описание стандартной команды принудительного переназначения сектора, а Вы, никак не комментируя этот факт, опять повторяете, что "ремап, как таковой, якобы недоступен для ОС".
Я не хочу Вас задеть, но наша с Вами беседа превращается в какой-то бессмысленный обмен сообщениями, в которых каждая сторона пытается непонятно что доказать и не может понять вторую сторону.

Мне, поверьте, совершенно не жалко с Вами согласиться. Я признаю Ваш авторитет в области внутреннего устройства накопителей и архитектуры их прошивки.
Я уважаю Ваши знания, но к сути нашей с Вами дискуссии они не относятся. Мне неинтересно, как устроен накопитель. Для меня это просто "черный ящик", который получает на вход один поток байтов, а на выходе выдает другой.
И вот то, что он выдаст, строго стандартизовано.

А Вы, к примеру, не имеете представления о деталях работы операционной системы. Вам это не нужно и неинтересно. Поэтому, к примеру, пишете, что для SATA-дисков нет понятия "master" и "slave".
Давайте я Вам начну в ответ рассказывать, что Вы глубоко ошибаетесь и что промежуточный уровень ПО операционной системы инициализирует каждый дисковод как главный или подчиненный в зависимости от того, к первичному или вторичному порту контроллера он подключен? Я могу прямо вырезки кода выложить с указанием из какой системной библиотеки они взяты.
Вам будет интересно? Нет. Потому что это сугубо внутреннее дело операционной системы и все эти структуры данных не выходят за пределы уровня промежуточного ПО.
А теперь давайте поменяемся местами и, надеюсь, Вы меня поймете. Детали реализации технологического режима в каждом конкретном накопителе пользователя интересуют ничуть не больше, чем работа middle layer software в ОС.

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

misha2
23-11-2012, 20:51
я не совсем понимаю какую цель Вы преследуете. Из Вашей подписи следует, что Вы занимаетесь ремонтом жестких дисков. Отсюда следует, что Вы безусловно гораздо больше меня знаете об их внутреннем устройстве. »
Я просто пытаюсь вам дать понять что ремап это внутренняя функция ТМОС винта. А вы не слышите. И ес-нно если я давно этим занимаюсь, то имею закрытые доки, софт и оборудование.
И, тем более, должны знать все подробности функционирования SMART, поскольку именно эта технология отвечает за самодиагностику накопителя. Настройка запуска автономного тестирования в фоновом режиме осуществляется именно функциями ОС. По запросу или по таймеру.
К примеру, "smartctl -t offline /dev/sda". »
Поэтому и утверждаю что формирование дефект-листов, логов на их основе и как следствие - отображение этого в СМАРТе происходит в самом винте, без участия каких-либо ОСей. Запуск (принудительный) оффлайн-скана ес-нно возможен подачей соответствущей командой извне. НО не сам ремап. Запустили скан и винт сам ремапит то, что считает нужным. Но не юзер или ОС.
Для меня это просто "черный ящик" »
Вот именно. Как и для подавляющего числа форумчан.
мы закроем эту тему? »
С этим я согласен. Поскольку простое описание работы ТМОС винта займёт не одну страницу. И углубляться в это полезно только тем кто профессионально занимается ремонтом винтов. А таких людей совсем немного.
P.S. Кстати примерно так заносится дефект у Самсунгов F3 :
8f a,0000/0/хх,хх хх хх '''''''''''''''''''''
[GL][ADD:хххххххх][C:хххх][E:0000]

@Successful writeRList
[GL][SAVE]
где х - координаты и параметры команды.
Но это тоже практически никому не надо...

Ment69
24-11-2012, 05:29
AMDBulldozer, Вы почему то не хотите понять, что пытается объяснить misha2, забудьте про ОС, более того забудьте об остальной начинке компьютера. Попробуйте рассмотреть этот вопрос как будто у вас есть доступ к ТМОС HDD через спецоборудование. В этом случае все что вы пытались доказать лишено смысла, именно потому, что все что вы объясняете привязано к ОС и железу компьютера.

Настройка запуска автономного тестирования в фоновом режиме осуществляется именно функциями ОС » Не верно, smartctl - утилита, которую вы запускаете чтобы она обратилась к S.M.A.R.T., в аббревиатуре которого сказано Self-Monitoring, Analisys and Reporting Technology, то есть технология самомониторинга, анализа и отчёта, главное слово здесь самомониторинг, то есть все операции проводятся средствами самого HDD, в ОС вы всего лишь видите отчет. Следовательно ОС не имеет функции S.M.A.R.T.. То же относится и к REMAP. То что у вас есть возможность через интерфейс подать комаyду внутренней ОС HDD, не означает что вы проводите REMAP с помощью той же Linux.

misha2
24-11-2012, 11:21
Да-да. Именно это я и пытался сказать. Просто команды к винту всегда можно разделить на открытые (доступные по АТА-стандарту) и закрытые (вендор-команды). Так вот СМАРТ селфтесты доступны, а сам ремап - нет. При запуске смарт селфтеста ата-командой запускается селфтест внутри винта, а сама ТМОС обнаруживая дефекты - уже и ремапит сама, своими вендор-командами. А инженерный софт умеет подавать супер-он, тем самым открывая доступ к СА (модулям) винта и позволяет именно вендор-командами заносить/перемещать/очищать дефекты в листах винта. Вот потому и недоступно это из-под ОС, т.к. в ОС (любых) просто нет этих самых супер-, вендор-команд.
А если б было доступно - то представьте сколько было б вирусни, убивающей винты и инфу на них напрочь. :)

IgNat
24-11-2012, 13:03
misha2, всё бы так и было незыблемо для всех, кто хоть чуть-чуть сталкивался с обслуживанием/ремонтом HDD. Но прямое утверждение в описании программы sg_reassign:sg_reassign - REASSIGN BLOCKS:
- reassign a LBA from one sector on a disk (typically damaged) to a new (spare) sector. User data copied if it is recoverable.

Command help:
Usage: sg_reassign [--address=A,A...] [--dummy] [--eight=0|1] [--grown]
[--help] [--hex] [--longlist=0|1] [--primary] [--verbos
[--version] DEVICE
where:
--address=A,A...|-a A,A... comma separated logical block addresses
one or more, assumed to be decimal
--address=-|-a - read stdin for logical block addresses
--dummy|-d prepare but do not execute REASSIGN BLOCKS command
--eight=0|1
-e 0|1 force eight byte (64 bit) lbas when 1,
four byte (32 bit) lbas when 0 (def)
--grown|-g fetch grown defect list length, don't reassign
--help|-h print out usage message
--hex|-H print response in hex (for '-g' or '-p')
--longlist=0|1
-l 0|1 use 4 byte list length when 1, safe to ignore
(def: 0 (2 byte list length))
--primary|-p fetch primary defect list length, don't reassign
--verbose|-v increase verbosity
--version|-V print version string and exit
С учётом того, что программа портирована под большое количество ОС, включая Windows (http://rghost.ru/41773716) и включена во многие дистрибутивы Linux. Также пользователи интернета сообщают об успешном использовании данной программы. Всё это наводит на размышления :)

misha2, AMDBulldozer, этот спор можно было решить довольно просто. Нужен SCSI/SAS диск (к сожалению, у меня нет такого), отчёты до и после использования программы. Но вот проверить верность отчётов и изменение модулей, как я понимаю можно только с помощью комплекса PC-3000 for SCSI. И в первую очередь, меня лично интересует, производится ли пересчёт транслятора. Операция переназначения - секундное дело, но пересчёт транслятора измеряется минутами/десятками минут/часами :) AMDBulldozer что можете сказать по этому поводу? Как при использовании hdparm так и sg_reassign.
Возможно, что если затрагивается только G-лист, то пересчёт и не нужен :confused:

misha2
24-11-2012, 13:35
Реассигн это 2 варианта :
1. переназначение существущего ЛБА только через смарт селфтест (оффлайн, онлайн, short и long), и неважно на чём он проводится (ИДЕ, САТА, САС, СКАЗИ) это ж делает сам винт.
2. Ремап в процессе скана поверхности. Тогда винт при натыкании на дефект пытается 8-16 раз (например 10 раз и Сигейт Ф3) переписать его с проверкой КС . Занесение в аттрибут 197 (С5). Неудача - переназначение ЛБА. Неудача всех попыток переназначения - аттрибут 198 (С6). Удачи и неудачи операций переназначения - аттрибут 05 (удачные) , а все (и удачные и неудачные) в аттрибуте 196 (С4) общее значение.
И ещё, дефект-листов у винтов несколько :
1. Р-лист (заводской) при изготовлении винта (Primary-первичный). (D-, S- листы у Самсунгов).
2. G-лист (Grown) текущих дефектов при эксплутатации (Alt- у Сигейт, R-, A- у Самсунгов).
3. Relo-лист у WD кандидаты на ремап.
Сами записи о дефектов несут в себе не только адреса и кол-во, но и аттрибуты (причины) по которым он переназначен. Это легко посмотреть у Сигейтов в терминале по "Vх", где х-номер дефект листа. В А-листах самсунгов тоже можно увидеть дефекты с разными аттрибутами. Как практически и у других винтов. По аттрибутам дефекты могут заносится в соответствующие листы и логи. И напомню что отображаемый СМАРТ лишь сборник этих отчётов.

Возможно, что если затрагивается только G-лист, то пересчёт и не нужен »
Пересчёт нужен всегда и делает это сам винт, например в результате операций переназначения. Сам транслятор может быть как динамического типа, так и статического.

IgNat
24-11-2012, 20:40
misha2, в том и дело, что из описание следует, что нет никакихв процессе скана поверхности »исмарт селфтест »но есть прямая команда переназначения:sg_reassign -a 1000 /dev/sda
sg_reassign -a 1000 /dev/sda && sg_reassgn -a "$(echo {1001..2000})" /dev/sda »- т.е. как ты в комплексе заносишь сектора в G-лист :)
Я лишь хочу разобраться в верности/не верности утверждений AMDBulldozer. Для этого нужен тест программы с SCSI/SAS-диском :)

misha2
24-11-2012, 22:16
т.е. как ты в комплексе заносишь сектора в G-лист »
Я-то заношу, но прежде чем начать работу с любым винтом в утилите ему предназначенной - утилита САМА подаёт ему супер-он. Это самый первый шаг - получить доступ к модулям СА, одним модулем из которых и является G-лист ! Ну как ещё втолковать-то ? Ну нет в АТА-стандартах открытых команд прямого доступа в СА винта и к G-листу. Если б был, то все винты б давно подохли из-за вирусописателей. Предлагаю логически помыслить...

AMDBulldozer
24-11-2012, 23:12
Ну нет в АТА-стандартах открытых команд прямого доступа в СА винта и к G-листу. »

Вы опять-таки правы. И я это никогда не отрицал. Единственное, на что я хочу обратить Ваше внимание, что SCSI - это не ATA. Они разные. Понимаете? И хотя всё то, что Вы говорите, безусловно верно для типичных домашних дисков, можно спокойно купить за 3-4 тысячи диски, которые позволят напрямую читать и записывать GLIST.
Конечно, опять Вы можете сказать, что они делают это не самостоятельно, а выдавая команду микропрограмме контроллера.
Но то же самое возражение можно привести практически для любой периферии.
Суть в том, что в данном (и только в данном) случае у контроллера не остается "права выбора".
"Виктория", к примеру, не боится давать команду записи в дефектный сектор 10 раз подряд. В любом случае, больше одного переназначения не случится. А 10 команд "SCSI Reassign Blocks" приведут к тому, что один и тот же сектор будет переназначен 10 раз. И, соответственно, 10 секторов будут заняты в резервной зоне.

Простите, но я возможно проблема в том, что Вам больше приходилось иметь дело с PATA/SATA, чем со SCSI/SAS дисками?




© OSzone.net 2001-2012