FreeBSD

Ура, она взорвалась!

Много лет я пользуюсь на своих FreeBSD-серверах некоторыми бинарниками, собранными в незапамятные времена, под FreeBSD6. Работают (под compat6x), каши не просят, все устраивает (устраивало?).

Но, ура, наконец оно (воспроизводимо) сломалось:

  • (cd /usr/src; svn up; make то-се-инсталл) - получается текущая 10.1
  • И, ура, эти бинарники перестают запускаться, cannot lock pidfile пишут мне. Truss чего-то такое показывает про bad address.

Воспроизвел на двух машинах - вводимом в эксплуатацию сервере (и сейчас, да, всю команию обратно, вот значит подарочек мне) и на виртуалке. На виртуалке вот просто классически, там была 10.x от 27 июля - и работало, а свежий сегодняшний svn up все поломал. Ну, зашибись.

Я, понятно, могу произвести раскопки, найти ЕЩЕ ТЕ исходники, пересобрать под 10.1 (не уверен, что соберутся текущими компиляторами, гы) и все такое. Но блин, не до грибов мне сейчас!

Аналогично, писать багрепорты не могу, потому что "вот у меня происходит подземный стук" - плохое описание проблемы, а сделать другое за вменяемое время - не вижу способа.

Буду откатываться на 9.3, благо претензий к ней у меня нет.

P.S. На Linux на серверах не перехожу вот примерно по этой же причине (помимо ZFS) - есть нажитые непосильным трудом бинари, они нужны, а заниматься археологией и пересобирать это под Linux - ну нет никаких сил.

P.P.S. Как хорошо, что на домашнем стораджбоксе не затеял переход на 10.1. Собирался ведь, а получился бы точно геморой на всю задницу.

Q: FreeBSD 10

Два вопроса
  1. Кто-нибудь уже использует FreeBSD 10 в бою?
  2. В апгрейде с 9.2 есть грабли какие-нибудь?

FreeBSD ZFS Q

А вот тут у меня проект на празднички, расширить ZFS с 5x3Tb до 6x3Tb.

Ну значит надо побэкапить, пересобрать, поресторить.

Бэкаплю:

zfs snapshot zdata/files@20140104
zfs send zdata/files@20140104 | zfs recv zfiles/files

zdata - это мой массив, zfiles - пул на диске, вставленном через SATA.

Дальше делаю zpool export zfiles. Размонтировались, типа. Вынимаю диск.

Дальше хочу посмотреть как оно. Опять вставляю диск, zpool import и хрена лысого:

pool broken, репайред быть не может.

Такое было и при хотсвапе через SATA и при хотсвапе через USB-dock.

Вопросы:

  • ЧЯДНТ?
  • какого хрена, собственно? Если сделали export, диск же размонтирован и можно вынимать?

Ну то есть я сейчас спишу 10Tb файликов по сети на NTFS-диски, но злобу уже затаил...

UPD: Дима, Слава, я благодарен за советы. Но вот сейчас я, весь на нервах, еще раз пишу 10Tb файликов, уже на винду (точнее, в два потока, на винде и на FreeBSD, но не суть важно).

Всякие предложенные идеи - я обязательно попробую. Но сначала том надо нарастить, место ж кончается.

FreeBSD 9-STABLE + USB3 = ?

И, блин, алаверды к предыдущему посту.

Флешка, SanDisk Extreme 64Gb USB3, куплена чтобы у FreeBSD-box работать загрузочным диском, SATA-порты кончились. И что бы вы думали:

ugen1.1: <XHCI root HUB 0x1b6f> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA)
ugen1.2: <Extreme SanDisk> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (200mA)
И, соответственно, не 200Mb/sec, а 30.

Материнка на Z68 (та самая многострадальная, которая портилась об USB-WiFi).

И что делать (ну кроме cvsup && make buildworld && make buildkernel)?

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

Подземный стук возвращается!

Две недели после установки таймера в HPET все было хорошо. А вчера подземный стук вернулся, а сегодня - повторился.

С теми же симптомами:

  • Cron встал.
  • "часы стоят" - при запуске top и подобного что рефрешится по таймеру - не рефрешится.
  • named: POKED TIMER в логах
  • cat /dev/urandom >/dev/null не поднимает частоту процессора, так и лежит на 200 (это, вероятно, оттого, что таймер стоит и powerd не просыпается)
  • Пакеты роутятся
  • при подаче нагрузки (утренние бэкапы) - оно не просыпается нормально. Вот сегодня туда вылилось ~40Gb бэкапа (из 90) и скорость записи по smb упала практически до нуля, пришлось ребутить эту FreeBSD.
Ну добавил еще:
kern.eventtimer.timer=HPET
kern.eventtimer.periodic=1
Но надежды мало - больше двух недель не менялось ничего - и тут вдруг началось.

Ну память еще поменяю, хотя в данной машине это делается лапароскопией.

Но что делать то? По всем прочим признакам - машина нормальная, процессор процессорит, следов битой памяти (вроде падений на компиляции) не видать.

Кто виноват и что делать? Linux - не предлагать!

Про подземный стук

Рассказываю:

Вот этой вот проблеме

kern.timecounter.hardware=HPET
вроде бы помог. Ну то есть сегодня утром все было хорошо, ничего не замерзло.

named[...]: *** POKED TIMER *** тоже пропали, нету в логах.

Буду продолжать наблюдения.

От тайка они пухли, а от украдки - дохли

Уважаемые ученые!

У меня в подполе происходит подземный стук стала странно себя вести FreeBSD 9.1

А именно: она замерзает.

Это домашний сервер, на котором ночью никаких процессов нет (я в рамках поиска проблемы даже periodic убрал) и утром я нахожу его в следующем состоянии:

  • Оно с виду живое, можно залогиниться
  • Если запустить top или systat - то вместо обновления раз в несколько секунд - экран обновляется раз в секунд 10-30 (а может и медленнее)
  • Если запустить netstat 1, то вместо печати суммарного трафика раз в секунду - печатается заголовок и более ничего не происходит (впрочем, дольше нескольких десятков секунд я не ждал)
  • По reboot - убиваются процессы, а дальше я не знаю т.е. на экран оно ничего не выводит, диски не синкает. Всякий раз перегружаю ресетом.
  • Если делать на машину scp - то идет медленно (~3MB sec), при этом sshd съедает целое ядро, судя по top. Samba тоже работает медленно, вместо 150-250 MB/sec (по 10G) получается скорее 30MB/sec.
  • В логах - тишина, за исключением вот этого вот:
    May  8 00:07:24 home-gw named[1406]: *** POKED TIMER ***
    May  8 00:18:16 home-gw named[1406]: *** POKED TIMER ***
    May  8 00:30:25 home-gw named[1406]: *** POKED TIMER ***
    May  8 00:50:52 home-gw named[1406]: *** POKED TIMER ***
    May  8 01:31:10 home-gw named[1406]: *** POKED TIMER ***
    
Изначально была гипотеза, что оно зависает в каком-то low-power state. Сейчас гипотеза - что просто встает таймер.

Пока переставил таймер с TSC-low на HPET, но что бы еще такое посмотреть?

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

Q: perl5 upgrade

А вот у меня, я извиняюсь, на одном из серверов perl 5.8

portupgrade ругается, дескать такой уже не поддерживается, давай, апгрейдься до 5.14 или 5.16

Вопросы

  1. Кто-нибудь так делал по живому? Что ломается?
  2. 5.14 или 5.16?
Из подозрительных мест имею mod_perl2 и DBI, остальное вроде без особых наворотов.

P.S. Конечно, я попробую поднять тестовую копию машинки из бэкапа и потренироваться на кошках. Но вдруг все известно уже и такой апгрейд просто невозможен :) ?

Домашний стораджбокс: производительность iSCSI/SRP, FreeBSD/Linux

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

Помня о весенних результатах (когда тестировался доступ по Infiniband к RAM-диску), я не стал тратить много времени на Samba (хотя и померял, см. ниже) и вдумчиво тестировал только iSCSI/SRP варианты.

Hardware

Клиент: Intel i7-2600K без оверклока, 16Gb RAM (DDR3-1600), Windows7. Файрволл выключен, антивирус деинсталлирован (с антивирусом получается весело, но результаты невоспроизводимы).

Сервер: Intel i5-2400 без оверклока, 8GB RAM, Adaptec ASR-5805, 6x Seagate Barracuda ES.2 SAS 1Tb + 2 WD RE4 SATA 1Tb, объединены в RAID-6 (контроллер ругается, что SAS и SATA смешаны в одном томе, а мне плевать).

Сеть: Mellanox Infinihost Ex III (MHEA28-XTC), 10(8) Gbit/s, две карты соединены кабелем.

Сетевые протоколы: iSCSI (по IPoIB), SRP (SCSI RDMA Protocol).

Серверный софт:

  1. Ubuntu Server 12.04, драйвера Infiniband и iscsitarget из поставки, scst из гнезда (trunk), при установке scst ядро патчилось согласно инструкции.
  2. FreeBSD 9.1 Prerelease (свежий cvsup), istgt из портов.
SRP поддерживается только scst, остальные два варианта работали по iscsi.

Клиентский софт: iSCSI initiator из комплекта Win7. Infiniband SRP Initiator из комплекта Infiniband-драйверов openfabrics.org (OFED 3.1).

IPoIB Connected Mode у OFED 3.1 работает только Windows-Windows (в 3.0 работало Windows-Linux). Возможно, причина не в Windows-стороне, а в других драйверах с Linux-стороны, детально не разбирался, жил с MTU 2044.

Linux TCP performance Q

А вот у меня в FreeBSD, еще с гигабитных времен написано такое вот, к примеру:
net.inet.tcp.recvbuf_auto=1
net.inet.tcp.recvbuf_inc=131072
net.inet.tcp.recvbuf_max=1048576
net.inet.tcp.sendbuf_auto=1
net.inet.tcp.sendbuf_inc=131072
net.inet.tcp.sendbuf_max=1048576
net.inet.tcp.maxtcptw=102400
Ну и так далее, конкретные слова я брал, кажется, из какой-то презентации Сысоева. И работает, на 10G-сети Samba практически упирается в диски, насколько я вижу.

Вопрос: где взять готовых рецептов для тюнинга Linux? Задача - максимальный перформанс у самбы. А то сейчас смешно: запись 560Mb/sec, а чтение - 235, это же явно сеть не того, а не диски. dd гигабайтными блоками пишет 660 Mb/sec, а читает - 640.

Если существенно: Ubuntu Server 12.04, 3.2.0-29-generic #46-Ubuntu SMP. Intel Core-i5 2400, 8GB RAM.

Про Infiniband и FreeBSD (again)

Все-таки Infiniband на линке FreeBSD-FreeBSD получается какой-то очень мучительный:

  • Datagam Mode - устойчиво теряет несколько процентов пакетов на ping -f (icmplim, естественно, задран до небес, разрешающее правило в ipfw - первое). Ну и всякие iperf работают в лучшем случае на гигабит, а обычно и меньше.
  • Connected Mode на первый взгляд лучше: packet loss 0%, гигабитов эффективных примерно 5, но:
    • Установить эту самую Connected Mode между двумя машинами получается не с первого раза. Иногда надо ifconfig down сказать, иногда хватает с одной стороны, иногда надо с двух.
    • Могучий tcp-поток с одной из моих машин на вторую (ftp get /dev/zero /dev/null) может отправить ее в ребут или просто в транс. При этом в другую - все в порядке и я даже zfs send/zfs receive на 6Tb в середине недели успешно исполнил.
При этом на тех же картах, портах, кабелях связка FreeBSD - Windows работает отлично и tcp-потоки никого никуда не отправляют. Но только в Datagram Mode. С нулем потеряных пакетов. Я уже вторую неделю так живу на своей WS, ни одного Ethernet, только IB (только хардкор!).

Да, попытка поднять Connected Mode между FreeBSD и Windows один раз таки удалась. После каких-то перезагрузок, подниманий-опусканий интерфейса и т.п. При этом отвалились пинги с Windows, а вся конструкция прожила минут 20, а потом FreeBSD-шная сторона перезагрузилась.

Не исключено, конечно, что какое-то железо где-то как-то криво, но с Windows все, повторяю, работает.

Такие вот вести с полей.

O ZFS performance

Подтверждается старое правило: чем гуще горшок, тем пуще ZFS

Переставил новый массив из тестовой машины (i7-2.67Ghz) в несколько более медленную (Core2Quad Q9300 @2.5) и сразу вместо 350-360Mbyte/sec на запись получил 250-280.

На скорость диска не могу грешить, zpool scrub в обеих машинах в начале процесса рапортует в районе 500Mb/sec:

 pool: zdata
 state: ONLINE
  scan: scrub in progress since Tue Mar 20 14:40:34 2012
        782G scanned out of 7,84T at 507M/s, 4h4m to go
        0 repaired, 9,74% done

Собственно, не секрет, и недавно обсуждали, и давно тоже: от перехода c С2D 1.86 на C2Q 3.06 наступает счастье.

Ну, значит пора этому C2Q на покой. Никому не нужна материнка (Micro-ATX, 1xPCI, 2xPCIe1x, 1xPCIe 16x)+процессор+8Gb DDR2-памяти? Махнусь на 12Gb DDR3 в фасовке по 4Gb!, уже неактуально.

Про Infiniband FreeBSD-FreeBSD

Тут спрашивали, как работает IB с FreeBSD на FreeBSD.

Вкратце: очень странно работает. Но байты ходят, достаточно быстро, пользоваться можно.

Сначала мне не удалось ЭТО завести (при том, что линк FreeBSD-Windows7 на тех же картах, портах и драйверах работает прекрасно). Но тут удачно подсказали в комментариях, что это место обновилось.

Ну значит csup && make buldworld && make buildkernel, перезагружаемся и оно работает. При этом

  • При неудачном стечении светил, оно может работать в одну сторону (в одну сторону пинги ходят, в другую - нет), лечится down/up интерфейса. Это у меня было в Datagram mode, пару раз.
  • Connected Mode между двумя FreeBSD - поднялась. Пинги ходят, байты тоже, о производительности ниже. MTU работает и 16k (как уже обсуждали) и 65520 - тоже.
  • Connected Mode между FreeBSD и Windows так и не починилась. Возможно, надо перегрузить (в каком-то порядке) обе машины и я еще буду пробовать, но пока симптомы те же, что и в прошлый раз (слишком большой пакет, не будем слать). Лечится установкой mtu 2044 на FreeBSD-шной стороне.
Производительность:

Про ZFS, Advanced Format и ashift

Пару лет назад я уже исследовал ZFS на дисках с 4k-сектором, но тогда такой диск в массиве был только один (а остальные три - с 512b секторами) и какой-то значимой разницы я не нарыл.

Кроме того, том был загрузочный, а грузиться с тома где ashift не равен 9 тогдашние бутблоки не умели.

Поэтому овладев пятеркой 3Tb сигейтов я просто обязан был это опробовать.

Рассказываю.

Hardware

  • 5x Seagate ST3000DM001 (3Tb)
  • Материнка на Intel X58, Core i7 920, 12GB RAM
  • FreeBSD 9.0-STABLE, обновлялась недели три назад.
  • Попало с машины, откуда я склонировал FreeBSD. Может оно и неправильно, но уже поздно перемеривать:  vfs.zfs.arc_max="4G" vfs.zfs.vdev.max_pending=30

10G дома: Infiniband + FreeBSD

Я тут интересовался про Infiniband и FreeBSD, теперь могу и сам рассказать :)

Datagram mode

Для начала нужна FreeBSD 9. У меня - какая-то, cvsup делал где-то в январе или около того.

Далее все тривиально:

/etc/make.conf:

WITH_OFED=yes
Конфиг ядра (в GENERIC это место не включено) /sys/amd64/conf/OFED:
include GENERIC
options OFED # Infiniband protocol stack and support
options SDP # Sockets Direct Protocol for infiniband
device ipoib # IP over IB devices
device mlx4ib # ConnectX Infiniband support
device mlxen # ConnectX Ethernet support
device mthca # Infinihost cards
У меня карты mthca, остальные два драйвера в моем случае вероятно не нужны.

Далее все просто:

cd /usr/src
make buildworld && make installworld # поставит IB-шный утиль, всякие ibstat и opensm
make buildkernel KERNCONF=OFED && make installkernel KERNCONF=OFED

Что-то из этого добра (то ли userland IB-шный, то ли ядро) не собирается clang-ом, поэтому про CC=clang стоит забыть.

Если нужен Subnet manager (на другом конце линка/свитче его нет), то opensm_enable=YES в rc.conf (а если нету /etc/rc.d/opensm, то накатить его mergemaster-ом).

Бутимся....

Q: Infiniband и FreeBSD

Читаю тут Гугл про Infiniband (по случаю вчерашнего поста) и внезапно выяснил, что 2-портовые карты на eBay продаются вообще по $22 (+ доставка, две карты получаются чуть меньше $100)

Так как я давно вынашиваю мысль поднять дома линк быстрее 1Gbit/s на небольшом пятачке вокруг рабочего стола, я сильно возбудился. Но есть вопросы:

  1. Верно ли я понимаю, что CX4-кабель для Ethernet и Infiniband MicroGigaCN (как его называет Mellanox) и просто банальный 4xSAS (SFF-8470) - это все одно и то же?
  2. Есть ли драйвера для Mellanox Infiniband под FreeBSD9? Или таки светит мне Linux на NAS?
  3. Верно ли я понимаю, что взяв три 2-портовые карты (1-портовых нету) я могу 3 машины соединить в P2P-сеть и внутри каждой пары будут искомые 10G (после вычета оверхеда - 8G data)? В каждой паре заведу свою IP-подсеть, роутинга не надо. Что в такой конструкции будет с subnet manager, можно ли OpenSM-у сказать "этот интерфейс не твой"?

FreeBSD 9 + clang

$ uname -a
FreeBSD home-gw.lexa.ru 9.0-RC2 FreeBSD 9.0-RC2 #14: Sun Nov 13 14:18:10 MSK 2011 lexa@home-gw.lexa.ru:/usr/obj/usr/src/sys/GENERIC amd64
$ cat /etc/make.conf

.if !defined(CC) || ${CC} == "cc"
CC=clang
.endif
.if !defined(CXX) || ${CXX} == "c++"
CXX=clang++
.endif
.if !defined(CPP) || ${CPP} == "cpp"
CPP=clang-cpp
.endif

Страшно - трындец как.

Но все собралось (не без warnings), перезагрузилось и загрузилось. Сейчас попробую то же самое, но под конкретную архитектуру (еще страшнее....)

А llvm/clang я всячески приветствую.

Про перевод часов, таймзону, PHP и Drupal

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

PHP:

  1. У PHP база данных таймзон вшита в пузо и, конечно, не обновляется регулярно.
  2. Но есть pecl-timezonedb, который ее оверрайдит, со свежей базой (последняя имеет номер версии 2011.13), с этим расширением с таймзонами все станет отлично и любимая всеми Europe/Moscow будет работать как полагается по новым правилам.
  3. Но если вы живете под FreeBSD, то там /usr/ports/misc/pecl-timezonedb не обновлялся очень давно, посему:
    • Меняем там в Makefile 2010.9 на 2011.13
    • удаляем distinfo
    • make && make install
  4. Добавляем timezonedb.so в список extensions.ini (на FreeBSD это сделает make install)
  5. Перестартовываем PHP-fastcgi или Apache или что у вас там работает процесс-сервером для PHP
  6. Ура, можно накатить первый стакан.

Drupal 6:

  1. Сам по себе сразу начинает жить правильно (ну, насколько мне показалось). Т.е. таймзона меняется после апдейта PHP-timezonedb с +0300 на +0400 сама.
  2. Но! В Administer-Date-and-time есть настройка про User Configurable time-zone. Если она включена, то пользователю будут показываться даты-времена в его таймзоне. И весь созданный им контент будет иметь время создания рассчитанное из юзерской таймзоны.
  3. Но. Юзерская таймзона специфицирована в секундах смещения от UTC.
  4. Выходов два: или для всех российских пользователей взять и поправить скриптом (по хорошему, с учетом даты регистрации), или просто отменить настройку пользовательских таймзон. Я пошел по второму пути.

О время-время, темпо-темпо

Ну что, сколько у кого серверов перевело время сегодня с утра?

Holy War (Linux vs FreeBSD)

Вынесу из каментов к прошлому посту:

номер раз:

Это значит что с дисковой/fs в линуксе все настолько загадочно и хреново, что у нас ротейт логов на одной из машин роняет ее регулярно раз в месяц (логи то ротейтятся мгновенно, только апач больше не работает) и помогает только reboot -fn. А на десктопе при копировании больших файлов все задумывается так что анекдот про "сейчас дискетка отформатируется..." как раз про современные Линуксовые ядра. Debian/2.6.разные, ext3/4.

номер два:

Я ловил клина на полминуты только при удалении больших пачек больщих файлов (ie по полгига где-то)

Типа записал жене сериал/дитю мультиков на болванку -- хочешь грохнуть исошку/исходники -- и оно тупит минуты две. В 2.6.39 xfs порефакторили сильно (осталась только его "родовая" болезнь -- файл при создании и до закрытия (или до fsync?) имеет только dnode, и если начать копировать файл (ту же исошку) и в середине дернуть питание -- файл будет пустой)

С другой стороны у меня 4 машины с XFS везде кроме /boot и убитого XFS я не видел еще (хотя питание у меня тут весьма нестабильное)

И, рискуя (стремясь!) спровоцировать Holy War, спрошу я вас: че, типа, так и есть?. И считается нормальным? Ну ладно, xfs вроде починили, но ведь было?

Update: в каментах сообщили правильное название, "баг 12309". Поиск в Яндексе "Linux 12309" приносит истинные лулзы!

Справедливости ради два пункта:

Pages

Subscribe to FreeBSD