OpenSolaris, OpenIndiana, Nexenta Forum
OpenSolaris, OpenIndiana, Nexenta Troubleshooting => Hardware => Тема начата: Tico Solaris от Апрель 30, 2009, 12:57:42 pm
-
Данная инструкция описывает процесс определения неисправности на HDD и его замены.
В моем случае используется SoftRaid на двух HDD (Solaris 10).
Рассмотрим наиболее вероятные проблемы с HDD. Для анализа нам необходим лог сервера – файл /var/adm/messages (messages.0 - 3). Чаще всего по нему можно определить причину сбоя с большой вероятностью.
«Тонкое» место на SCSI диске – это его контроллер (микросхема, расположенная на плате HDD).
Итак, возможные причины отказа:
1. Сбой диска (механическая неисправность).
2. Сбой работы SCSI контроллера (сам HDD работоспособен, но система его не видит). Можно восстановить HDD, заменив на нем плату с контроллером.
3. Нестабильная работа SCSI контролера. В этом случае система может работать с диском, но наблюдается большое количество ошибок на SCSI шине. Такие проблемы иногда можно вылечить переусадкой диска в слот сервера, но лучше заменить HDD.
4. «Выпадение» HDD из слота. Эта проблема лечится переусадкой диска в слот сервера.
Исходные данные – логи сервера. Примеры:
1. Пример лога с многочисленными ошибками по шине SCSI. Система «тормозит» при обращении к диску (особенно, если есть программное зеркало).
Apr 3 13:43:21 BER1281IVR02MTS scsi: [ID 365881 kern.info] /pci@1c,600000/scsi@2 (glm0):
Apr 3 13:43:21 BER1281IVR02MTS Cmd (0xe13d32d8) dump for Target 0 Lun 0:
Apr 3 13:43:21 BER1281IVR02MTS scsi: [ID 365881 kern.info] /pci@1c,600000/scsi@2 (glm0):
Apr 3 13:43:21 BER1281IVR02MTS cdb=[ 0x8 0x0 0x0 0x0 0x1 0x0 ]
Apr 3 13:43:21 BER1281IVR02MTS scsi: [ID 365881 kern.info] /pci@1c,600000/scsi@2 (glm0):
Apr 3 13:43:21 BER1281IVR02MTS pkt_flags=0x1c000 pkt_statistics=0x61 pkt_state=0x7
Apr 3 13:43:21 BER1281IVR02MTS scsi: [ID 365881 kern.info] /pci@1c,600000/scsi@2 (glm0):
Apr 3 13:43:21 BER1281IVR02MTS pkt_scbp=0x0 cmd_flags=0x8e1
Apr 3 13:43:21 BER1281IVR02MTS scsi: [ID 107833 kern.warning] WARNING: /pci@1c,600000/scsi@2 (glm0):
Apr 3 13:43:21 BER1281IVR02MTS Disconnected tagged cmd(s) (1) timeout for Target 0.0
Apr 3 13:43:21 BER1281IVR02MTS genunix: [ID 408822 kern.info] NOTICE: glm0: fault detected in device; service still available
Apr 3 13:43:21 BER1281IVR02MTS genunix: [ID 611667 kern.info] NOTICE: glm0: Disconnected tagged cmd(s) (1) timeout for Target 0.0
Apr 3 13:43:21 BER1281IVR02MTS glm: [ID 401478 kern.warning] WARNING: ID[SUNWpd.glm.cmd_timeout.6018]
Что значат эти каракули? =)
Для увеличения производительности SCSI шины, предусмотрена возможность запрашивать не одну операцию ввода/вывода, а сразу несколько. Для этого запросы маркируются (tagged queuing). По умолчанию происходит один такой "большой" запрос на 256 операций (однако предусмотрена возможность для изменения значения). Если обнаруживается ошибка - все 256 операций повторяются заново. Отсюда можно наблюдать "торможение".
Строка "Disconnected tagged cmd(s) (1) timeout for Target 0.0" сигнализирует о том, что обнаружилась ошибка при выполнении такого запроса к SCSI устройству.
Проще говоря, наблюдаются ошибки, связанные с обработкой запросов на устройство HDD. Наиболее вероятная причина - на данном диске неисправен контроллер SCSI. В идеале, диск необходимо заменить. Однако, может помочь "переусадка" диска.
2. Вариант с «умершим» SCSI контроллером:
Mar 3 02:58:26 BER1712SGW01VK md_mirror: [ID 104909 kern.warning] WARNING: md: d61: /dev/dsk/c0t0d0s6 needs maintenance
Mar 3 02:59:26 BER1712SGW01VK scsi: [ID 107833 kern.warning] WARNING: /pci@1c,600000/scsi@2/sd@0,0 (sd3):
Mar 3 02:59:26 BER1712SGW01VK Unit Attention retries exhausted. Check the target.
Mar 3 03:00:26 BER1712SGW01VK scsi: [ID 107833 kern.warning] WARNING: /pci@1c,600000/scsi@2/sd@0,0 (sd3):
Mar 3 03:00:26 BER1712SGW01VK Unit Attention retries exhausted. Check the target.
Mar 3 03:00:26 BER1712SGW01VK scsi: [ID 107833 kern.warning] WARNING: /pci@1c,600000/scsi@2/sd@0,0 (sd3):
Mar 3 03:00:26 BER1712SGW01VK offline
Проблема с диском на шине scsi@2, устройство sd@0,0. Проблема описывается строкой «Unit Attention retries exhausted. Check the target», – диск не отвечает системе на запросы.
Теперь необходимо привести в соответствие имена устройств. Мы знаем, что неисправен диск sd@0,0. Нам необходимо узнать логическое имя и проверить статусы программных зеркал (есть ли они, в каком состоянии). Аппаратные зеркала (raidctl) не рассматриваем, т.к. для Solaris они выглядят как одно физическое устройство.
1. Проверяем доступные диски командой format, определяем неисправный диск.
# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0t0d0 <drive type unknown>
/pci@1c,600000/scsi@2/sd@0,0
1. c0t1d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
/pci@1c,600000/scsi@2/sd@1,0
Specify disk (enter its number):
Нас интересует диск c0t0d0. Именно он неисправен, подлежит замене. Этот диск находится в слоте 0 сервера.
2. Проверяем состояние зеркал командой metastat.
Этот раздел – тема отдельного разговора. В моем случе диск состоит из шести слайсов, каждый из них зазеркалирован на другой HDD. Метареплики хранятся на седьмом слайсе (объемом 50 МБ).
Если зеркало в состоянии State: Needs maintenance, то необходимо его лечить.
3. Удаляем мертвые метареплики. Метареплики хранятся на 7-ом слайсе (в моем случае):
#metadb -f -d /dev/dsk/c0t0d0s7
4. Перед заменой диска необходимо его отключить. Сначала проверяем имена дисков в системе.
# cfgadm -al
Ap_Id Type Receptacle Occupant Condition
c0 scsi-bus connected configured unknown
c0::dsk/c0t0d0 disk connected configured unknown
c0::dsk/c0t1d0 disk connected configured unknown
c1 scsi-bus connected unconfigured unknown
usb0/1 unknown empty unconfigured ok
usb0/2 unknown empty unconfigured ok
Нужный нам диск c0::dsk/c0t0d0.
Необходимо его деконфигурировать в системе:
#cfgadm -c unconfigure c0::dsk/c0t0d0
Теперь cfgadm –al должен показать, что диск деконфигурирован.
5. Вынимаем мертвый диск и ПЛОТНО(!!) вставляем новый. Защелку на новом диске закрываем только тогда, когда дальше его уже никак не пропихнуть.
6. После смены диска:
#cfgadm -c configure c0::dsk/c0t0d0
Теперь cfgadm –al должен показать, что диск cконфигурирован.
7. Далее настраиваем зеркало. Скопировать разбивку диска с рабочей половины зеркала на новый диск:
#prtvtoc /dev/rdsk/c0t1d0s2 | fmthard -s - /dev/rdsk/c0t0d0s2
8. Установить загрузочный блок на новый диск:
#installboot /usr/platform/sun4u/lib/fs/ufs/bootblk /dev/rdsk/c0t0d0s0
9. Создать на новом диске реплики:
#metadb -f -с 3 -a /dev/dsk/c0t0d0s7
10. Для каждого раздела заменить устройство в зеркале:
#metareplace -e d10 c0t0d0s0
#metareplace -e d20 c0t0d0s1
#metareplace -e d30 c0t0d0s3
#metareplace -e d40 c0t0d0s4
#metareplace -e d50 c0t0d0s5
#metareplace -e d60 c0t0d0s6
Готово =) Можно пользоваться!
-
Познавательно. На сколько понял, у вас используется UFS. Почему не ZFS?
-
Во первых, исторически сложилось. ZFS еще не было, когда наши прилаги уже крутились на серваках SUN под Solaris 8 (а потом и 9).
Во вторых, ZFS по производительности чуть отстает. К тому же в 10-ке (не Open Solaris, а Solaris 10 для SPARC серверов) есть ряд "недочетов", с которыми столкнулись. Например - нельзя удалить из пула ZFS дисковое пространство. Добавить - сколько хочешь, а потом убрать назад никак.
Вот и работает в основном UFS по сей день, т.к. привыкли.
Хотя сейчас для некоторых решений перебираемся на ZFS.
-
Какими утилитами можно уменьшить размер дискового пространства, выделенного под UFS?
-
Не очень понял вопрос, если честно...
Сжать что-ли? Или переразбить диск по новому?
-
Например - нельзя удалить из пула ZFS дисковое пространство. Добавить - сколько хочешь, а потом убрать назад никак.
Как я понял, указанный недостаток ZFS отсутствует у UFS. Вот про то, как это реализовано, я и интересовался.
-
День добрый!
следовал Вашей статье для замены выгоревшего HDD d primepower 650
solaris 9
# cfgadm -al
Ap_Id Type Receptacle Occupant Condition
c0 scsi-bus connected configured unknown
c0::dsk/c0t0d0 disk connected configured unknown
c0::dsk/c0t1d0 disk connected configured unknown
c1 scsi-bus connected configured unknown
c1::dsk/c1t4d0 CD-ROM connected configured unknown
#
format
Searching for disks...done
c0t1d0: configured with capacity of 68.36GB
AVAILABLE DISK SELECTIONS:
0. c0t0d0 <FUJITSU-MAP3735NC-3701 cyl 24345 alt 2 hd 8 sec 737>
/pci@87,2000/scsi@1/sd@0,0
1. c0t1d0 <HITACHI-HUS103073FL3800-SA1B cyl 52689 alt 2 hd 3 sec 907>
/pci@87,2000/scsi@1/sd@1,0
судя по всему диск таки прижился
а дальше ничего не могу с новым диском сделать
ругается
# tail -f /var/adm/messages
Jun 25 13:16:09 SMO00C00H scsi: [ID 107833 kern.warning] WARNING: /pci@87,2000/scsi@1/sd@1,0 (sd1):
Jun 25 13:16:09 SMO00C00H Corrupt label; wrong magic number
Jun 25 13:48:06 SMO00C00H scsi: [ID 107833 kern.warning] WARNING: /pci@87,2000/scsi@1/sd@1,0 (sd1):
Jun 25 13:48:06 SMO00C00H Corrupt label; wrong magic number
Jun 25 13:52:07 SMO00C00H scsi: [ID 107833 kern.warning] WARNING: /pci@87,2000/scsi@1/sd@1,0 (sd1):
Jun 25 13:52:07 SMO00C00H Corrupt label; wrong magic number
Jun 25 13:57:22 SMO00C00H scsi: [ID 107833 kern.warning] WARNING: /pci@87,2000/scsi@1/sd@1,0 (sd1):
Jun 25 13:57:22 SMO00C00H Corrupt label; wrong magic number
Jun 25 13:57:22 SMO00C00H scsi: [ID 107833 kern.warning] WARNING: /pci@87,2000/scsi@1/sd@1,0 (sd1):
Jun 25 13:57:22 SMO00C00H Corrupt label; wrong magic number
не знаю что дальше делать
помогите плиз!
-
У меня такая же проблема была только не на сервере а рабочей станции нужно на диске переставить перемычку там есть где вставляется штекер посмотри.
-
Диск скази 2
там нету перемычек вообще никаких :(
меня смущают вот эти параметры геометрии
FUJITSU-MAP3735NC-3701 cyl 24345 alt 2 hd 8 sec 737
HITACHI-HUS103073FL3800-SA1B cyl 52689 alt 2 hd 3 sec 907
может нада найти точно такой же винт и попробовать поменять?
-
привезли винт аналочичный тому что стоял (ну почти аналогичный)
0. c0t0d0 <FUJITSU-MAP3735NC-3701 cyl 24345 alt 2 hd 8 sec 737>
/pci@87,2000/scsi@1/sd@0,0
1. c0t1d0 <FUJITSU-MAP3735NC-0108 cyl 47994 alt 2 hd 4 sec 747>
/pci@87,2000/scsi@1/sd@1,0
в системе он определился нормально
на нем судя по всему есть уже какие то разделы которые счас попробую снести...
пробовал вот так сделать
# dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t1d0s2
dd: /dev/rdsk/c0t1d0s2: open: I/O error
ничего не получилось
# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s -\ /dev/rdsk/c0t1d0s2
Usage: fmthard [ -i ] [ -n volumename ] [ -s datafile ] [ -d arguments] raw-device
#
и где тут ашибка закралась?
-
Можно попробовать заменить s2 на p0. То есть:
dd if=/dev/rdsk/c0t0d0p0 of=/dev/rdsk/c0t1d0p0
-
# dd if=/dev/rdsk/c0t0d0p0 of=/dev/rdsk/c0t1d0p0
dd: /dev/rdsk/c0t0d0p0: open: No such file or directory
а нужно ли руками создавать разделы так же как и на исходном диске?
есть вариант не делать зеркальный рэйд а сделать просто копию диска на диск и отложить его в ящик на всяк случай
если грохнется основной то пставить запасной и с него стартарнуть и работать дальше
как можно реализовать такую операцию??
-
# dd if=/dev/rdsk/c0t0d0p0 of=/dev/rdsk/c0t1d0p0
dd: /dev/rdsk/c0t0d0p0: open: No such file or directory
а нужно ли руками создавать разделы так же как и на исходном диске?
есть вариант не делать зеркальный рэйд а сделать просто копию диска на диск и отложить его в ящик на всяк случай
если грохнется основной то пставить запасной и с него стартарнуть и работать дальше
как можно реализовать такую операцию??
p0 означает все содержимое диска. Может быть попробовать вместо rdsk/ написать dsk/ ? У меня под OpenSolaris создание образа флешки идет так:
$ dd if=/dev/dsk/c12t0d0p0 of=flash.img
^C16353+0 records in
16352+0 records out
8372224 bytes (8,4 MB) copied, 8,97911 s, 932 kB/s
8,4 MB - потому что я прервал копирование.
Для данной операции команды dd будет вполне достаточно.
-
то же самое написало :(
-
Покажи, что выдает команда
mount
Наверно имеет смысл создавать образ не всего диска, а только определенных разделов диска. Предлагаю попробовать создать образ раздела.
-
# mount
/ on /dev/dsk/c0t0d0s0 read/write/setuid/intr/largefiles/xattr/onerror=panic/dev=800000 on Tue Jul 6 08:30:25 2010
/proc on /proc read/write/setuid/dev=44c0000 on Tue Jul 6 08:30:25 2010
/etc/mnttab on mnttab read/write/setuid/dev=4580000 on Tue Jul 6 08:30:25 2010
/dev/fd on fd read/write/setuid/dev=45c0000 on Tue Jul 6 08:30:26 2010
/var on /dev/dsk/c0t0d0s5 read/write/setuid/intr/largefiles/xattr/onerror=panic/dev=800005 on Tue Jul 6 08:30:27 2010
/var/run on swap read/write/setuid/xattr/dev=1 on Tue Jul 6 08:30:27 2010
/tmp on swap read/write/setuid/xattr/dev=2 on Tue Jul 6 08:39:58 2010
/export/home on /dev/dsk/c0t0d0s7 read/write/setuid/intr/largefiles/xattr/onerror=panic/dev=800007 on Tue Jul 6 08:39:59 2010
/home/evgenp on /export/home/evgenp read/write/setuid/dev=800007 on Tue Jul 6 13:22:40 2010
-
Попробуй прочитать файл раздела с домашними каталогами /dev/dsk/c0t0d0s7.
dd if=/dev/dsk/c0t0d0s7 of=/dev/null
Если будет читаться (не выдаст ошибок), значит можно делать его образ.
-
тут вот какой вопрос назрел нужно ли отмонтировать и перемонтировать новый диск
или при рестарте машины все само перемонтируется?
кстати s7 начало копировать
я прервал или нужно было чтоб до конца дошло?
-
Само смонтируется, если есть соответствующая запись в /etc/vfstab.
Если разделы копируются, можно поделить новый винт на разделы и делать dd с записью на эти новые разделы. В принципе надо копировать только s0 и s7.
-
Выбранный мною путь оказалось вел в тупик
нашел вот такой вариант решения моей проблемы
http://www.sunmanagers.org/pipermail/summaries/2001-September/000018.html
сделал все по статье за исключением настройки скази чтоб он сам выбирал с какого винта грузиться
вот только возник такой вопрос нужно ли делать
newfs -v /dev/rdsk/c0t1d0s1
c0t1d0s1 - swap партиция
-
newfs -v /dev/rdsk/c0t1d0s1 делать не нужно, потому что эта команда создает файловую систему UFS. В данном случае достаточно прописать /dev/dsk/c0t1d0s1 - - swap - no
в /etc/vfstab. Своп должен подключиться после перезагрузки. Если хочется обойтись без нее, следует воспользоваться утилитой swap.
Проверить, подключен ли своп, можно командой swap -l.
-
я вобщем все скопировал
вырубил комп вынул рабочий винт всунул на его место новый и запустился
старт прошел как обычно
когда начали проверять то наткнулись на то что несмонтировались разделы NAS сервера который подключен оптикой
в vfstab все нормально
все рзделы прописаны
в какую сторону копать?
где могла закрасться ошибка?
-
Сколько раз устанавливалаь система на этот диск?
-
неизвестно
делалось до меня и человек который делал вне досягаемости :(
я перенес бут область скопировал с живого винта
-
Вот у меня больше система не устанавливается я устанавливал N раз и все больше не идет, а если не идет то я устанавливаю OpenSolaris 2008.05 она бронебойная :-\
-
мне такое решение не прокатит :(
там мегабаза и низя ее трогать
-
Я подумаю как сделать установку с сохранением данных ОК? ;D
Вот куда можно обратиться http://forum.os-solaris.ru/index.php?topic=33.0
-
когда начали проверять то наткнулись на то что несмонтировались разделы NAS сервера который подключен оптикой
в vfstab все нормально
все рзделы прописаны
в какую сторону копать?
где могла закрасться ошибка?
Я бы попробовал смонтировать вручную. Как только будут известны команды монтирования, можно будет думать о том, как автоматизировать их исполнение.
-
Добрый день,
купили сервер Sun Sparc Enterprise T5120 с предустановленной Solaris 10 sparc.
Стоит задача, поставить на этот сервер Solaris 9.
Вставлю в DVD Он там USB диск с Solaris 9 для Sparc
Захожу в shell. пишу reboot -- cdrom
сервер перегружается.
в ответ получаю
Boot device: /pci0/pci0/pci1/pci0/pci1/pci0/usb0,2/hub4/device4/storage0/disk0:f File and args:
boot: cannot open kernel/sparcv9/unix
Enter filename kernel/sparcv9/unix:
в DVD стоит диск:
Solaris 9
Perationg Environment
0/05
Sparc Platform Edition
Был бы рад помощи.
Спасибо