Nov 25, 2007 12:23
Что можно сказать об интелевой платформе? Пашет как зверь. Когда пашет. Когда ломается - то "лучше купите пряники..."
Чинил и апдейтил вчера, позавчера, и поза-позавчера самиздатский сервер.
Intel Server System SR1530CL, 1U
Шасси: Intel Server Board S5000VLC
Процессоры: 2* Xeon Core2duo 5160
Память: 2* Kingston KVR667D2D8F5/1G 2RX8 PC2-5300F FB DIMM
Память: 2* Kingston KVR667D2D8F5/1G CL5 ECC PC2-5300 FB-DIMM 240pin
Заполнение: A1,B1, A2,B2,A3,B3 (DDR2 not supported)
Питание: 400 W
Диски: SATA-II Seagate 400Gb,
SATA-II Seagate Barracuda ES 750Gb S/N: 5QD2C3B2 ST3750640NS Firmware: 3.AEG
Узнал много нового.
О том, что если заменить один SATA шлейф на другой, скорость линейного чтения с диска меняется с 56 на 73 Мбайт/сек. О том, что от перестановки шлейфов и легкого их шевеления - диски перестают читатся и операционка вылетает в краш через несколько минут после ребута.
О том, что файловая система FreeBSD не имеет средств ремапинга бэд-блоков. Аппаратный авторемапинг SCSI и SATA диска происходит только при записи данных в бэд-блок. Можно "положить" поверх bad-блоков файлики (командой badset) и ничего не
лечить. Можно провести ремапинг в режиме "почти-readonly" DOS-утилитой mhdd32. Можно перепрописать диск командой dd. При предварительном бэкапе dd нарвавшись на bad-block прерывает работу. Нас спасет noconv=noerror,sync (не останавливаться при ошибке, непрочитанные блоки заменять нулями). Размер блока имеет смысл делать кратным блоку fs, чтоб быстрее работало, или 512 байт - чтобы обнуляло _только_ битые блоки.
При линейном сканировании имеем в /var/log/messages
Nov 24 21:34:23 pc6 kernel: ad4: FAILURE - READ_DMA timed out LBA=32207871
# делаем бэкап:
dd if=/dev/da4s1e bs=8k of=/path/file conv=noerror,sync
# "лечим-калечим"
dd if=/dev/random bs=512 of=/dev/da4s1e conv=noerror,sync
# восстанавливаемся с бэкапа
dd if=/path/file bs=1024k of=/dev/da4s1e
А тут программка чтобы писать только по бэд-блокам
#######################################################
#!/usr/bin/perl
($FILE,$SEEK)=(@ARGV[0],@ARGV[1]);
$SEEK=32207871 unless $SEEK;
$FILE="/dev/ad4" unless $FILE;
$SEEK=512*$SEEK;
$m="1234567890abcdf";$m=$m.$m.$m.$m;$m=$m.$m.$m.$m;
print STDOUT $FILE," ",$SEEK,"\n";
exit; # прежде чем запускать - вспомни о грядущем newfs
open (OF,"+<$FILE");
seek (OF, $SEEK, 0);
print OF $m;
close(OF);
#######################################################
Диски все? Все, но не расслабляемся. Теперь о памяти. Оказывается если к 2Г RAM добавить еще два, то получится 2.5Г
Недостающая память быстро нашлась: PCI устройста мапили свои DMA адреса начиная с 2.5Г,, настоящая память при этом переезжает за 4-й гигабайт. У вас не PEM-ядро? Вы не рискнули связываться с 64-хразрядной версией amd64? Тогда памяти выше 4Г вам не видать. Впрочем, в установках БИОС нашлась настройка "PCI memory begins above 3.5G"
Сухой остаток: 2G + 2G = 3.5G
За время этих исследований:
Произведено более 70 перезагрузок, 30 ковыряний в настройках BIOS и SATA RAID, 6 переинсталляций операционки по 5 перестановок флопидисков в каждой.
Ни один сотрудник фирмы Intel не пострадал. Но если поймаю...
P.S. С тоской предчуствую, что тщательно уложенные SATA-шлейфы и старательно воткнутые SATA-раз'емы еще покажут свой норов на техплощадке, когда я буду перекидывать боевые винты с подменного сервера в этот пылесос.