Проблема: есть установленный Solaris 10 (SPARCv9), в зоне запущен memcached 1.2.6 (последний стабильный), через некоторое количество активных запросов к мемкешу он впадает в коматозное состояние - перестает отвечать вообще (подключения позволяет устанавливать, к примеру, тем же telnet’ом, но уже на запросы текстовым протоколом не даёт никакие ответы).
Решение: перекомпилить memcached без параметрета скрипта ./configure --enable-threads
, после чего опция запуска -t
будет недоступна. Баг memcached? Попробую в багтрак запостить.
Почти три дня ушло на поиск решения проблемы. Интернет по этому поводу вообще молчал.
Выбирал, выбирал, остановился на Brief:
https://addons.mozilla.org/en-US/firefox/addon/4578
Каждый со своими особенностями и прочим. Какие-то забыл? Комментируйте :)
-
lynx - наверное самый старый, потому и самый первый. Есть почти в любом дистрибутиве Linux, умеет дампить html в простой текст, что используется в mc для отображения html страничек по F3. Не умеет таблиц, что очень часто портит восприятие страницы. Фишек много, но не получилось сохранить капчу, которая в html задана в таком виде:
<img src="/confirm.php" alt="captcha" title="captcha" border="0">
Отобразился только альтернативный текст. Есть в репозитариях Arch Linux
-
links - старенький и уже не развивается, трудно найти в дистрибутивах уже, умеет таблички, не умеет, к примеру, HTTP аутентификации.
-
elinks - расширили links новыми возможностями, стал хорошим браузером, не без своих загонов конечно, капчу показанную выше позволил сохранить, что я потом посмотрел в zgv и ввел в браузере - прошло. Но дальше было ожидание до скачивания, сделанное на js, так что обломился :) Наличиствуется в репозитариях Arch Linux.
-
links2 - дальнейшее развитие links (кто бы дал умереть ему!?) научился работать в графическом режиме (links -g), научился http аутентификацию. С капчей вышеуказанной поступил как elinks. Таблицы и прочая радость и… практически невозможно работать из UTF8 терминала… ну заточен он на 8бит кодировки, так что юзаем luit. Он как и luit есть в резпозитариях Arch Linux.
-
Links Hacked - по сути - links2 + портирование некоторых фич из elinks. Остальное не юзал, не знаю.
-
w3m - наверное самое вкусное… первое что бросается в глаза - отлично работает с UTF8, а как же - разработчик японец, а там с кодировками почище нашего :) умет таблицы, умеет как и lynx дампить html, посему в конфиге mc и занял место lynx’а. Капчу отобразил мне как и lynx, т.е. прочесть не удалось. Есть в репозитариях Arch. Из вкусностей: w3mman - гипертекстовый навигатор по man страницам, в секции See also подствечивает гиперссылками страницки на которые можно перейти - удобно :) Главное меню вызывается по клавише Ins
Да, все браузеры не умеют java script, для w3m наткнулся на это:
http://abe.nwr.jp/w3m/w3m-js-en.html но вроде как не жизнеспособно.
Если DNS провайдера подгоняет, или висит, или у вас несколько линков в Internet, которые переключаются в зависимости от доступности, а DNS провайдера отвечает только в том случае, если с его адресов запрос пришел (Привет Дальсвязи! И спасибо
НТК, что отвечают не только своим адресам). Собственно выход - использовать нейтральный DNS сервис. Один из таких (в Техлайн Транстелеком их выдал на запрос :)) - OpenDNS.
Сайт сервиса:
http://www.opendns.com
Первичный и вторичный DNS:
- resolver1.opendns.com: 208.67.222.222
- resolver2.opendns.com: 208.67.220.220
Собственно только недавно начал собирать информацию, как в отсутствии винды и доса прошить BIOS, и вот уже ответ:
flashrom. Сам пока не тестировал, svn версия лежит в у ArchLinux в AUR:
http://aur.archlinux.org/packages.php?ID=23390
По результатам отпищусь позже :)
На заметку, без особой гибкости, но…
В общем команда:
dd if=/dev/urandom count=128 | uuencode - | mkpasswd -s
выдаст примерно следующее:
OvdDK0TV8FZQY
или, вариация:
dd if=/dev/urandom count=128 | uuencode - | mkpasswd -s -m md5
выдаст примерно следующее:
$1$cIpngJsx$LT.EpSQS3rEQPfAeBCDhI1
поднобности:
mkpasswd –help
mkpasswd -m help
man mkpasswd
Да, вообще mkpasswd генерирует хеш последовательности… но :)
UPD:
На моей ArchLinux машинке mkpasswd утилита находится в пакете expect и работает значительно проще:
$ mkpasswd
js2ts4TG"
Длинну сгенерированной последовательности можно задать при помощи параметра -l __число__
. Посмотреть какие параметры он понимает штатным образом не предоставляется возможнным, автор скрипта (да, это скрипт на tcl) не предусмотрел такой возможности :) Потому, кому интересно, - смотрим сам скрипт.
В репозитариях ArchLinux появилось ядро 2.6.28, сегодня утром проивел обновление системы. Сразу всплыло несколько проблем:
- некорректно работает тачпад в иксах
- странно работает wifi
Итак, по порядку…
Elantech Touchpad
Input устройства у меня подключены через hal, соответственно в /etc/hal/fdi/policy лежал (да и лежит) файлик 09-x11-elantech.fdi вот только беда, после обновления он вроде как не цепляется (точнее это я понял потом, что он не цепляется).
Симптомы такие:
- “дерганное” передвижение курсора в иксах, отсутствие реакции на слабые перемещения по тачпаду
- при переключении из иксов в консоль и обратно: курсор вообще перестает двигаться, в консоли наблюдаем: FIXME
(EE) EXPS/2 Elantech Touchpad: ... - disabled
Причины, трудно сказать кто конкретно - hal или ядро, но внутри fdi была строчка:
посмотрев вывод hal_device я обнаружил, что у тачпада в списке capabilities нет строки input.touchpad, есть только input и input.mouse, поэтому вышеуказанная строчка приобрела вид:
и полный fdi стал такой:
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.mouse">
<match key="info.product" contains="Elantech Touchpad">
<merge key="input.x11_driver" type="string">synaptics</merge>
<merge key="input.x11_options.SHMConfig" type="string">on</merge>
<merge key="input.x11_options.MaxSpeed" type="string">1.00</merge>
<merge key="input.x11_options.MinSpeed" type="string">0.75</merge>
<merge key="input.x11_options.Emulate3Buttons" type="string">on</merge>
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge>
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge>
<merge key="input.x11_options.TapButton1" type="string">1</merge>
<merge key="input.x11_options.TapButton2" type="string">2</merge>
<merge key="input.x11_options.TapButton3" type="string">3</merge>
<merge key="input.x11_options.LockedDrags" type="string">11</merge>
</match>
</match>
</device>
</deviceinfo>
после чего делаем /etc/rc.d/hal restart и, на всяк, перезапускаем иксы. Всё, работа восстановлена.
Wifi
Тут вспомнил, что на archlinux.org.ru проскакивала информация, что драйвер переделан для совместимости с rfkill.
Раньше карточку можно было включать/выключать записывая 1 или 0 в /sys/devices/platform/eeepc/wlan, теперь же это нужно делать через /sys/class/rfkill/rfkill0/state, соответственно нужно подправить конфиг для acpi: /etc/acpi/eee.conf (смотреть предыдущие статьи).
Но и это не всё.
К сожалению, одно сделали - другое поломали, т.е. раньше драйвер eeepc_laptop знал - включена или нет wifi карта и, соответственно, генерировал на нажатие Fn + F2 разные последовательности.
Теперь он не знает. Поэтому пришлось сделать небольшой хак (надеюсь временный), основанный на сиквенс-намбере нажатия - делим на 2 и получаем остаток, если 0 - выключаем карту, если 1 - включаем.
Что бы это работало - меняем файл /etc/acpi/eee-handler.sh, находим где обрабатываются hotkey (строчка “hotkey)”) далее ищем “00000010) # wlan on” комментируем строку
#/etc/acpi/eee/wlan.sh poweron
и прописываем вот такие команды
some hack for 2.6.28 stock kernel
rez=$(( 0x$4 % 2 ))
[ $rez -eq 0 ] && /etc/acpi/eee/wlan.sh poweroff
[ $rez -eq 1 ] && /etc/acpi/eee/wlan.sh poweron
неприятно что asusosd будет постоянно говорить что wifi включается :(
В заключение
Нашел вот это:
новые темы в вики, на форуме и в AUR касательно Asus EeePC 1000
После очередного обновления системы обновился udev с версии 130 на 135. Попутно хочу сказать, у меня две сетевых карточки, и, что бы именования интерфейсов сохранялись, используется 75-persistent-net-generator.rules
, благодаря которому генерируется 70-persistent-net.rules
.
Так вот, в новом udev произошли обновления, из-за которых старый 70-persistent-net.rules
оказался несостоятельным. Имена сетевых интерфейсков поменялись, в результате PPPoE не поднимался. Пришлось удалить файл и переименовать 75-persistent-net-generator.rules.optional
в 75-persistent-net-generator.rules
и перечитать правила, подправить получившийся 70-persistent-net.rules
. Но этого мало: нужно или выгрузить и подгрузить модули сетевух или перезагрузить систему, что бы правила подействовали на именование интерфейсов.
Собственно, вот такая вот ремарка.
В продолжение изначальной
темы про мой EeePC. Разберем вопрос правильного задания DPI и как пользоваться WIFI и вообще сетью на ноутбуке.
DPI
Как задавать DPI (dots per inch / точек на дюйм) рассказано в статье про установку Arch Linux на EeePC 901 (смотреть мой первый пост про EeePC на этом блоге или пользоваться поиском на ArchWIKI). Я же хочу разобраться как получить это значение вообще, и какое оно будет для EeePC 1000HA, в частности.
Небольшое пояснение на март 2023 года: уже третий ноутбук сменился, но подходы остаются теми же: меняются среды, меняются окружения, единственно, что хорошо пахает с DPI - Qt и Plasma. Ну и начинаем с знакомства с этой ссылкой:
Итак, разрешение матрицы монитора X на Y точек (пикселей). Тогда количество точек по диагонали:
Диагональ монитора D дюймов, тогда значение DPI:
Округляем его до большего целого.
Для EeePC имеем разрешение матрицы 1024x600 пикселей и диагональ 10.2 дюйма:
Z = sqrt(1024^2 + 600^2) = 1186.8
DPI = 1186.8 / 10.2 = 116.36 ~ 117 dpi
Иногда встречается информация, что диагональ 10 дюймов… спорить не берусь, меня пока всё устраивает :)
А для моего ThinkPad T530 (15.6 inch, 1920x1080):
Z = sqrt(1920^2 + 1080^2) = 2202.90717
DPI = 2202.90717 / 15.6 = 141.21 ~ 141 dpi
Width = 15.6 / 2202.90717 * 1920 * 25.4 = 345.35 ~ 345 mm
Height = 15.6 / 2202.90717 * 1080 * 25.4 = 194.26 ~ 194 mm
Прописываем полученное значение в /etc/X11/xinit/xserverrc
, где строчка запуска превращается примерно в такое:
exec /usr/bin/X -nolisten tcp -dpi 117 "$@"
При использовании всяких mdm, gdm, kdm и иже с ними, нужно параметры запуска Xserver искать у них в настройках. Плюс, при таких настройках строчка ниже упорно рапортует о 96dpi. Зато в логах Xorg.0.log гордо красуется 141 (это уже новый ноутбук). При конфигурировании через xorg.conf картина с точностью до наоборот.
Перезапускаем, проверяем при помощи xdpyinfo:
xdpyinfo | grep -B2 resolution:
На картах nVidia (это уже не про EeePC :)) есть опция для драйвера DPI, использовать её как-то так:
Section "Device"
Identifier "Card0"
Driver "nvidia"
...
Option "UseEdidDpi" "false"
Option "DPI" "141 x 141"
EndSection
Для других карт поможет DisplaySize
в миллиметрах (сохраняем, например, в /etc/X11/xorg.conf.d/90-monitor.conf):
Section "Monitor"
Identifier "<default monitor>"
DisplaySize 345 194 # посчитали выше
EndSection
Более подробно:
Для KDE Plasma и всех приложений на Qt5 и Qt6 этих настроек будет достаточно, что бы подцепить корректный DPI. Для Gtk3/Gtk4 это не оказывает влияние. Я решил просто, добавив в ~/.Xresources
:
хоть это и не корректно и не работает per-monitor. Возможно, с выходом Plasma 5.27 ситуация с приложениями Gtk, запущенными в этом окружении поменяется:
Note: Plasma 5.27
dropped use of
GDK_SCALE
/
GDK_DPI_SCALE
variables and
switched to
Xsettingsd. It should be installed to make scaling work for GTK apps. Or you can set this variables manually as described in
#GDK 3 (GTK 3).
Хотя, вроде это тоже не работает per-monitor.
WIFI
Хотя не только он, но больше про него.
Первое, говорится что стандартный драйвер не очень хорошо работает, я не стал проверять, поставил madwifi-hal из AUR. Надо только занести модуль ndiswrapper в blacklist или вообще удалить пакеты ndiswrapper и ndiswrapper-utils (если были поставлены). Если с драйвером madwifi-hal карточка не заведется, то, как рекомендуют форумы, стоит попробовать родной драйвер ath5k, и наоборот.
Да, я думаю пакет acpi-eee901 у вас уже стоит, так вот, стоит отредактировать файл /etc/acpi/eee.conf
, конкретно, изменить значение переменной WIRELESS_MODULE
и поставить её в ath_pci (в случае использования madwifi-hal) или ath5k (в случае использования стокового драйвера).
Теперь дело за малым. За менеджером соедененний.
Ноутбук устройство мобильное, и может использоваться в различных сетях, каждый раз править /etc/rc.conf и перезапускать сеть не выход. На помощь приходят менеджеры соединений. На себе проверил wicd, который есть в репозитариях ArchLinux. Прочитать про его настройку можно
тут. Хотя я настроил методом “научного клика” и все заработало на ура :)
Для консоли есть netcfg2, проект разрабатывается в рамках дистрибутива, так что глупо говорить о его наличии в репозитариях арча. Прочитать про его использование можно
тут
Проверил работу wifi совместно с wicd на работе - работает :) На этом тема wifi для меня пока закрыта.
На прошлой неделе пришел мне сабжевый нетбук. Машинка неплохая, мне, вцелом понравилась :)
В продаже, на момент покупки была только версия с WindowsXP SP3, которую по приходу снес и поставил туда ArchLinux.
При конфигурировании пользовался статьями а ArchWiki:
По результату, использую стоковое ядро, вайфай ещё не трогал, пока родной стоковый драйвер сетевой карточки (но уже сталкивался с ошибкой в назначении MAC адреса, так что нужно будет обновиться). Тачпад настроил пока по дефолту, настроил ACPI (из первой статьи для Eee PC 901), так что кнопочки все работают, suspend2ram работает тоже, звук изменяется и яркость тоже. Настроил cpufreq в целях экономии батареи. В общем ещё опишу что да как.
В планах:
Опять скрипт небольшой, я обозвал его loadcpu
#!/bin/sh
### CPU loading summary (wrapper for 'mpstat')
if [ x"$1" != x"---run_in_bash" ]; then
bash $0 ---run_in_bash $@
exit $?
fi
shift
# currently unused
cpu_count=`mpstat | grep -v CPU | wc -l`
mpstat | grep -v CPU | nawk '
{
usr+=$13;
sys+=$14;
wt+=$15;
idl+=$16;
CPU_COUNT++;
}
END{
printf(" %5s %5s %5s %5s %5sn", "count", "usr", "sys", "wt", "idl");
printf(" cpu total: %5d %5d %5d %5d %5dn", CPU_COUNT, usr, sys, wt, idl);
printf("cpu middle: %5d %5d %5d %5d %5dn", 1, usr/CPU_COUNT, sys/CPU_COUNT, wt/CPU_COUNT, idl/CPU_COUNT);
}'
Ну и сразу небольшой обзорный скриптик, показывает утилизацию просессора, памяти, свопа, подсистемы ввода-вывода, среднюю нагрузку, использует скрипт
free
и loadcpu
что представлен выше, скрипт обозвал sysstat
:
#!/bin/sh
### System stat (cpu/mem/io/load average/uptime) summary
if [ x"$1" != x"---run_in_bash" ]; then
bash $0 ---run_in_bash $@
exit $?
fi
shift
echo "** CPU"
`dirname $0`/loadcpu
echo "** MEM"
`dirname $0`/free
echo "** IO"
iostat -xn
echo "** Load average and Uptime"
uptime
StressLinux - дистрибутив для тестирования железа. Достаточно скачать ISO образ или образ для флешки (работает и через PXE) прожечь/записать и загрузиться, утилиты доступные (актуальная информация
тут):
-
stress - утилита для стрессового тестирования POSIX систем, генерирует события, которые могут иметь место при обычной работе (A tool to impose certain types of stress on a POSIX system.)
-
CPUBurn - утилита для проверки стабильности работы CPU при большой загрузке (CPU maximum load (heat) stability test)
-
CPU Burn-In - аналогичен предыдущей (CPU burn-in test)
-
nbench - еще тесты для CPU (CPU test suite)
-
iometer - производительность подсистемы ввода-вывода (I/O performance meter)
-
hddtemp - температура диска, вообще утилиту и на рабочей системе держать не дурно (A program to display the temperature of your hard drive.)
-
lm_sensors - работа с сенсорами, температура CPU/мамки, информация из EEPROM и т.д. На рабочей системе тоже не помешает (LM78 and other hardware monitor drivers.)
-
lshw - показывает список железа в системе, дополнение к lshwd (в ArchLinux) и lscpi/lsusb (Hardware lister)
-
bonnie++ - производительности жеского диска, работает на файловой системе, так что можно сравнить и производительность файловых систем (Hard drive benchmark)
-
netio - тесты производительности сети (Network benchmark)
-
Nepim - тестирование сети (Network test)
-
Netperf - тестирование сети (Network test)
-
Iperf - тестирование сети (Network test)
-
smartmontools - мониторинг параметров S.M.A.R.T. (S.M.A.R.T. drivetests)
-
x86info - информация по CPU (CPU information)
-
memtester - утилита для проверки памяти из запущенной системы, лучше гнать вместе с memtest86[+] (A userspace utility for testing the memory subsystem for faults)
-
memtest86 - наверное одна из лучших утилит для тестирования памяти (A stand-alone memory diagnostic)
-
memtest86+ - другая реализация (An other stand-alone memory diagnostic)
Скачать образы можно тут:
http://www.stresslinux.org/downloads.php
Документация тут:
http://www.stresslinux.org/docu.php, хотя она вся сводится, как записать и что сделать, там совсем всё просто.
Да, судя по последней новости, дистрибутив обновлялся давно, хотя, возможно, жизнь идет в списке рассылки :) Но, ничто не мешает использовать данные утилиты и в вашем дистрибутиве, а тот же Memtest86+ уже почти всегда встречается на установочных/восстановительных дисках почти любого дистрибутива (в ArchLinux - есть, из главного меню Grub в Tools и там вызвать).
Наличие PXE-версии “ис-каропки” делает вкусным применение этого изделия в организации, представляете, достаточно перебутать комп, загрузиться по сети и прогнать тесты…
На форуме
русского сообщества ArchLinux в разделе скриншотов за декабрь 2008 появилась тема, там, на снимке экрана фигурировал эмулятор терминала Sakura, решил попробывать.
Sakura
Терминал зависит только от GTK и компоненты VTE, умеет UTF-8, табы. Есть в community репозитария ArchLinux. После запуска имеет примерно такой вид:
Все настройки, коих аскетично мало, делаются через контекстное меню:
Конечно, горячие клавиши, тут даю на основные операции, что меня интересуют:
- Ctrl-Shift-t - создать новую вкладку
- Ctrl-Shift-w - закрыть текущую вкладку
- Alt-Left/Right - переключение между вкладками влево/вправо
Исходный код программы состоит из одного файла :)
Termit
Изучая сакуру, нашел на её сайте упоминание терминала Termit. Эмулятор терминала так же зависит от GTK и VTE, но ещё требует LUA 5.1. Умеет UTF-8, табы. В репозитариях ArchLinux нету, есть только в AUR. После первого запуска видим такое окно:
Терминал может конфигурироваться через меню, но настройки распространяются только на текущую сессию. Основная конфигурация идет через файл init.lua (о чем немного далее)
Сразу после запуска будете неприятно удивлены когда откроете новую вкладку - цвет текста сбросится в черный, а прочитать черным по черному будет проблемно :)
Автор уже знает, а пока что можем сделать сами.
Вот тут делои касается конфигурации. Она происходит скриптом на LUA который помещается в ~/.config/termit/init.lua, пример этого скрипта есть в архиве с исходными кодами, пример надо сказать работающий и функциональный. В случае ArchLinux выполним команды:
mkdir ~/.config/termit
cp /usr/share/doc/termit/init.lua.example ~/.config/termit/init.lua
и немного подредактируем. Главное раскомментируйте параметр defaults.foreground_color
и укажите тот что вам нужен, gray
в большинстве случаем окажется достаточным.
Перезапускаем termit, наблюдаем что в новых вкладках нормально отображается текст, наблюдаем два новых пункта меню:
Последнее позволяет поменять кодировки, особенно актуально мне, когда приходится по ssh заходить то на сервера со старой доброй koi8-r или на новые utf-8. Да luit помогает, но иногда забывается, а перелогиниваться лениво :)
Почитать про LUA API термита можно в доке, что идет с ним: /usr/share/doc/termit/lua_api.txt (путь может отличаться в вашем дистрибутиве)
Горячие клавиши настраиваются через init.lua, по умолчанию такие:
- Alt-Left - предыдущая вкладка
- Alt-Right - следующая вкладка
- Ctrl-t - открыть новую вкладку
- Ctlr-w - закрыть текущую вкладку
- Ctrl-Insert - копировать выделенный текст в буффер
- Shift-Insert - вставить текст из буффера
Выполнение приложений
Ещё иногда нужно выполнить какое-то приложение в терминале, иногда приложение не интерактивное, и терминал быстро схлопывается, так что не рассмотреть результатов. Поэтому обычно команда приобретает вид:
bash -c ’echo test; read'
и пока не нажмешь Enter терминал не закроется
Для sakura командная строка получилась:
sakura -e “bash -c ’echo test; read’”
и ничего не отработало - завершилось ошибкой
У termit строка такая:
termit –execute “bash -c ’echo test; read’”
и всё отработало как нужно!
Ну… В общем, Termit - мой выбор ;)
Сайты программ
Сегодня потребовалось узнать сколько памяти в Салярке всего, сколько свободно и сколько занято… Ага и команды free нету. Но есть kstat, как подсказал скрипт проверки памяти из Nagios, а дальше написал “свой” free:
#!/bin/sh
### Mem/swap using in Solaris
if [ x"$1" != x"---run_in_bash" ]; then
bash $0 ---run_in_bash $@
exit $?
fi
shift
page_size=`kstat -p unix:0:seg_cache:slab_size | awk '{print $2}'`
# RAM
mem_total=`kstat -p unix:0:system_pages:pagestotal | awk '{print $2}'`
mem_total=`expr $mem_total * $page_size / 1024`
mem_used=`kstat -p unix:0:system_pages:pageslocked | awk '{print $2}'`
mem_used=`expr $mem_used * $page_size / 1024`
mem_free=`kstat -p unix:0:system_pages:pagesfree | awk '{print $2}'`
mem_free=`expr $mem_free * $page_size / 1024`
# SWAP
swap_total=`kstat -p unix:0:vminfo:swap_avail | awk '{print $2}'`
swap_total=`expr $swap_total / 1024 / 1024`
swap_used=`kstat -p unix:0:vminfo:swap_alloc | awk '{print $2}'`
swap_used=`expr $swap_used / 1024 / 1024`
swap_free=`kstat -p unix:0:vminfo:swap_free | awk '{print $2}'`
swap_free=`expr $swap_free / 1024 / 1024`
#echo -e "ttotalttusedttfree"
#echo -e "mem:t$mem_totaltt$mem_usedtt$mem_free"
#echo -e "swap:t$swap_totaltt$swap_usedtt$swap_free"
# для более красивого вывода
printf " %14s %14s %14sn" "total" "used" "free"
printf " mem: %14d %14d %14dn" $mem_total $mem_used $mem_free
printf "swap: %14d %14d %14dn" $swap_total $swap_used $swap_free
В качестве источника информации:
https://project.openfiler.com/tracker/browser/openfiler/branches/2.x-rpath/var/www/phpsysinfo/includes/os/class.SunOS.inc.php?rev=1161
На уровне замечений, касательно понятий “Node Group” и параметра секции [NDBD DEFAULT]
NoOfReplicas
в конфиге кластаера config.ini
NoOfReplicas
- параметр задающий количество реплик данных. Допустим, его значение 2, тогда получается у нас будет две реплики данных. Теперь дальше, допустим, NDB ноды у нас с номерами 10, 11, 12, 13 и в конфиге они перечислены в этом же порядке, тогда количество Node Group будет:
NodeGroupsCount = NDB_Nodes_Count / NoOfReplicas = 4 / 2 = 2
Номера Node Group будут: 0 и 1 (нумерация с нуля.)
Теперь, как ноды группируются в группы? А просто, по порядку номеров. Т.е. наши ноды 10, 11, 12, 13 при NoOfReplicas = 2
, распределятся так:
- Node Group 0: 10, 11
- Node Group 1: 12, 13
Если прводить аналогии, то очень похоже на RAID 10: 10+11, 12+13 - работают в зеркалирование, и в сумме (10_11)+(12_13) - в чередовании.
Отсюда ещё одно важно замечание: если ВСЕ ноды одной группы вылетают, целостность данных нарушается, как следствие ВЕСЬ кластер прекращает работу, и, как следствие: для работы (и для запуска) кластера необходимо, что бы было хотя бы по одной живой ноде из группы.
Ещё одно замечание (пока окончательно не проверено), но дополню: по одной живой ноде из группы должны стартовать в промежуток не больше 30 сек. Ещё лучше запускать ноды с параметром -n
а потом через менеджмент-панель делать или ALL START
или node-id START
И в заключение, если отвалится одна нода из группы, лучше, как можно быстрее получить об этом уведомление на почту или ещё куда. И распределять ноды одной группы так, что бы не получилось “семерых одним ударом”.