Намедни обзавелся тремя дисками WD Caviar Green по 3 ТБ. Счастья полные штаны
Но за счастьем следовало разочарование. Итак, немного предыстории.
Диски были куплены для организации файлового хранилища, как бы пафосно это не звучало ![]()
Тазик используется как медиа сервер. Весь медиа контент воспроизводится через dune hd tv101 приставочку по протоколу SMB.
Естественно, я решил использовать ZFS для организации массива RAID5, RAID0 для таких дел как бе нелепо, а RAID1 из трех дисков не сложится, да и четвертый покупать пока не имеет смысла.
Я без задней мысли штампую:
# zpool create storage raidz ada1 ada2 ada3
Потом я создал каталоги и радостный стал переносить всякое добро с системного диска на новый массив.
После нескольких минут копирования, я увидел это в /var/log/messages:
(aprobe0:ahcich1:0:0:0): NOP. ACB: 00 00 00 00 00 00 00 00 00 00 00 00 (aprobe0:ahcich1:0:0:0): CAM status: ATA Status Error (aprobe0:ahcich1:0:0:0): ATA status: d1 (BSY DRDY SERV ERR), error: 04 (ABRT ) (aprobe0:ahcich1:0:0:0): RES: d1 04 ff ff ff ff ff ff ff ff ff (aprobe0:ahcich1:0:0:0): Error 5, Retries exhausted (aprobe1:ahcich1:0:15:0): NOP. ACB: 00 00 00 00 00 00 00 00 00 00 00 00 (aprobe1:ahcich1:0:15:0): CAM status: ATA Status Error (aprobe1:ahcich1:0:15:0): ATA status: d1 (BSY DRDY SERV ERR), error: 04 (ABRT ) (aprobe1:ahcich1:0:15:0): RES: d1 04 ff ff ff ff ff ff ff ff ff (aprobe1:ahcich1:0:15:0): Error 5, Retries exhausted (aprobe0:ahcich1:0:0:0): NOP. ACB: 00 00 00 00 00 00 00 00 00 00 00 00 (aprobe0:ahcich1:0:0:0): CAM status: ATA Status Error (aprobe0:ahcich1:0:0:0): ATA status: d1 (BSY DRDY SERV ERR), error: 04 (ABRT ) (aprobe0:ahcich1:0:0:0): RES: d1 04 ff ff ff ff ff ff ff ff ff (aprobe0:ahcich1:0:0:0): Error 5, Retries exhausted
Что показывал camcontrol devlist:
beast# camcontrol devlist <SAMSUNG HD160JJ ZM100-47> at scbus0 target 0 lun 0 (pass0,ada0) <WDC WD30EZRX-00MMMB0 80.00A80> at scbus2 target 0 lun 0 (pass2,ada2) <WDC WD30EZRX-00MMMB0 80.00A80> at scbus3 target 0 lun 0 (pass3,ada3) <Generic- SD/MMC 1.00> at scbus6 target 0 lun 0 (da0,pass4) <Generic- Compact Flash 1.01> at scbus6 target 0 lun 1 (da1,pass5) <Generic- SM/xD-Picture 1.02> at scbus6 target 0 lun 2 (da2,pass6) <Generic- MS/MS-Pro 1.03> at scbus6 target 0 lun 3 (da3,pass7)
Запустил более подробный вывод camcontrol:
beast# camcontrol devlist -v scbus0 on ahcich0 bus 0: <SAMSUNG HD160JJ ZM100-47> at scbus0 target 0 lun 0 (pass0,ada0) <> at scbus0 target -1 lun -1 () scbus1 on ahcich1 bus 0: <WDC WD30EZRX-00MMMB0 80.00A80> at scbus1 target 0 lun 0 (pass1) <> at scbus1 target -1 lun -1 () scbus2 on ahcich2 bus 0: <WDC WD30EZRX-00MMMB0 80.00A80> at scbus2 target 0 lun 0 (pass2,ada2) <> at scbus2 target -1 lun -1 () scbus3 on ahcich3 bus 0: <WDC WD30EZRX-00MMMB0 80.00A80> at scbus3 target 0 lun 0 (pass3,ada3) <> at scbus3 target -1 lun -1 () scbus4 on ahcich4 bus 0: <> at scbus4 target -1 lun -1 () scbus5 on ahcich5 bus 0: <> at scbus5 target -1 lun -1 () scbus6 on umass-sim0 bus 0: <Generic- SD/MMC 1.00> at scbus6 target 0 lun 0 (da0,pass4) <Generic- Compact Flash 1.01> at scbus6 target 0 lun 1 (da1,pass5) <Generic- SM/xD-Picture 1.02> at scbus6 target 0 lun 2 (da2,pass6) <Generic- MS/MS-Pro 1.03> at scbus6 target 0 lun 3 (da3,pass7) scbus-1 on xpt0 bus 0: <> at scbus-1 target -1 lun -1 (xpt0)
Притом dmesg всегда показывал, что диск как бе на месте и виден системе:
beast# dmesg -a | grep ada ada0: <SAMSUNG HD160JJ ZM100-47> ATA-7 SATA 2.x device ada0: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes) ada0: Command Queueing enabled ada0: 152627MB (312581808 512 byte sectors: 16H 63S/T 16383C) ada0: Previously was known as ad4 ada1 at ahcich1 bus 0 scbus1 target 0 lun 0 ada1: <WDC WD30EZRX-00MMMB0 80.00A80> ATA-8 SATA 3.x device ada1: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes) ada1: Command Queueing enabled ada1: 2861588MB (5860533168 512 byte sectors: 16H 63S/T 16383C) ada1: Previously was known as ad6 ada2 at ahcich2 bus 0 scbus2 target 0 lun 0 ada2: <WDC WD30EZRX-00MMMB0 80.00A80> ATA-8 SATA 3.x device ada2: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes) ada2: Command Queueing enabled ada2: 2861588MB (5860533168 512 byte sectors: 16H 63S/T 16383C) ada2: Previously was known as ad8 ada3 at ahcich3 bus 0 scbus3 target 0 lun 0 ada3: <WDC WD30EZRX-00MMMB0 80.00A80> ATA-8 SATA 3.x device ada3: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes) ada3: Command Queueing enabled ada3: 2861588MB (5860533168 512 byte sectors: 16H 63S/T 16383C) ada3: Previously was known as ad10
Вывод pciconf -lv был следующим:
beast# pciconf -lv
ahci0@pci0:0:31:2: class=0x010601 card=0x82d41043 chip=0x3a228086 rev=0x00 hdr=0x00
vendor = 'Intel Corporation'
device = '82801JI (ICH10 Family) SATA AHCI Controller'
class = mass storage
subclass = SATA
bar [10] = type I/O Port, range 32, base 0xac00, size 8, enabled
bar [14] = type I/O Port, range 32, base 0xa880, size 4, enabled
bar [18] = type I/O Port, range 32, base 0xa800, size 8, enabled
bar [1c] = type I/O Port, range 32, base 0xa480, size 4, enabled
bar [20] = type I/O Port, range 32, base 0xa400, size 32, enabled
bar [24] = type Memory, range 32, base 0xf9ffc000, size 2048, enabled
cap 05[80] = MSI supports 16 messages enabled with 1 message
cap 01[70] = powerspec 3 supports D0 D3 current D0
cap 12[a8] = SATA Index-Data Pair
cap 13[b0] = PCI Advanced Features: FLR TPВ BIOS'е ahci режим был включен изначально. Еще хотел бы обратить внимание:
Статус пула выглядел следующим образом:
# zpool status
pool: storage
state: DEGRADED
status: One or more devices has been removed by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scan: resilvered 36,5M in 0h2m with 0 errors on Wed Oct 24 15:11:44 2012
config:
NAME STATE READ WRITE CKSUM
storage DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
1180438976994044890 REMOVED 0 0 0 was /dev/ada1
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
errors: No known data errorsПосле долгих раздумий и педолирования интернета, решение подсказали на офф. форуме FreeBSD.
В чем же была проблема и как избежать геморроя при использовании терабайтных дисков. Решение касается винтов WD и не только.
Эти диски имеют фичу AF - Advanced Format, т.е. имеют размер сектора в 4k, но на самом деле представляют сектор в размере 512b. Врут, негодники.
Создавать пул ZFS из сырых дисков не рекомендуется, т.к. ZFS отправляет операции I/O (ввода/вывода) не выровненными, что может очень сильно сказаться на производительности.
Поэтому необходимо сделать разделы жестких дисков по 1Мб.
Следующая проблема - показатель zfs ashift. Когда я создал пул из сырых дисков, этот показатель был равен:
beast# zdb | grep ashift
ashift: 9Что свидетельствует о том, что ZFS будет отправлять 512байтные IO, тогда как ashift: 12, отправляет 4K IO. Что и любят эти диски.
Если есть важные данные, сделайте резервную копию. У меня не было, я просто грохнул пул и принялся за исправление ошибок.
Делаем партиции:
# gpart create -s gpt ada(1,2,3) # gpart add -t freebsd-zfs -b 2048 -a 4k -l disk(1,2,3) ada(1,2,3)
Создаем пул с ashift: 12
# gnop create -S 4096 /dev/gpt/disk1 # zpool create storage raidz gpt/disk1.nop gpt/disk2 gpt/disk3 # zpool export storage # gnop destroy /dev/gpt/disk1.nop # zpool import -d /dev/gpt storage
Это, что касается пула. Теперь собственно, что качается дисков. Есть у них неприятная вещь, как парковка головок при простое в 5 секунд. Про эту спецификацию можно почитать в интернетах, скажу, что это не есть хорошо для дисков, которые состоят в массиве ZFS. Быстрее выйдут из строя.
Из этой ситуации есть выход. Есть тулза от WD называется wdidle. Скачать ее можно с офф. сайта произвродителя или скачать The Ultimate Boot CD 5.11 по-моему. В этот диск входит эта утилита.
Небольшое видео про нее и как пользоваться.
В моем случае это не помогло. Оказалось, что сам диск был неисправен и по гарантии был заменен у продавца.

Комментариев: 9 RSS
1laforsh01-01-2013 15:27
Offtop, но
Неоптимально. В этой ситуации использование NFS пошустрее будет. А уж если DLNA сервер настроить - совсем оптимальный вариант получится - контент до 20 гигов свободно воспроизводить позволит.
2ttys02-01-2013 08:31
>>а RAID1 из трех дисков не сложится
а у меня работает зеркало от 2х и до бесконечности
3Vladimir02-01-2013 16:53
До NFS руки не дошли пока. Читал, что шустрее летает. Буду пробовать.
Это как? Вроде в RAID1 можно засунуть максимум 2 диска или нет?
4ttys04-01-2013 23:31
5ttys04-01-2013 23:37
для теста я делал из 6_ти дисков
6laforsh09-01-2013 11:33
Тогда уж лучше пробуйте сразу dlna настроить на Дуне - оно еще пошустрее, чем через NFS работает
http://nmt200.ru/hand/padavan/dune-linux-term-utils-v0-4/#comment-11362
http://nmt200.ru/hand/padavan/dune-linux-term-utils-v0-4/#comment-10407
7Vladimir09-01-2013 12:02
У меня стоял mediatomb и к сожалению он не все файлы кушал. Дуня как раз подключалсь через dlna к нему.
Сейчас я хочу еще раз попробовать его довести до ума (если NFS не спасет). Хотя даже по smb блюреи идут без тормозов. Единственный плюс от dlna сервера - это скриптование в БД содержимого контента, например по годам, по жанрам и с адекватными названиями файлов, а то торрент релизеры называют как попало фильмы
Пока разберусь с mediatomb.
810Xer15-01-2013 10:33
По NFS нормально будет, у меня server 3x3Tb в raidz, в спальне спокойно смотрю весь контент на WDTV Live через Wi-Fi (5Ghz).
9Vladimir15-01-2013 17:54
У меня по-старинке через кабель. Я еще помню настраивал NFS, у меня почему-то отображались только каталоги в корне и были пустые. У кого-нить есть рабочий конфиг для nfs? Поделитесь пжлста.
Вы можете войти под своим логином или зарегистрироваться на сайте.