Восстановление поврежденных таблиц в MySQL

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

Но во многих случаях таблички из БД можно починить. Для таких целей существует утилита myisamchk. По умолчанию она просто проверяет таблицу на наличие ошибок. А с ключом -r исправляет ошибки.

Пример использования:

myisamchk /var/lib/mysql/zabbix/triggers.MYI -r
Рубрика: Без рубрики | Метки: , , , | Комментарии отключены

Gentoo Linux, 2 видеокарты в ноутбуке и Nvidia Optimus

Так получилось, что мой новый железный друг имеет на борту как обычную размазанную видеокарту, так и мощную дискретную. Беда состояла в том, что при загрузке они обе были включены и дискретная nvidia gt520 очень активно съедала аккумулятор, при этом не принимая активного участия.

Первым моим желанием было научиться переключаться между видеокартами, ну или хотя бы одну из них просто обесточить программно. На многих форумах рассказывалось о такой опции ядра как vgaswitcheroo, которая давала возможность управлять видеокартами ноутбука на свое усмотрение.

Этот метод имеет два минуса

  1. После переключения видеокарт нужно перезапускать иксы, т.к. они на лету не умеют между видеокартами переключаться.
  2. (Об этом я узнал чуть позднее). Для того, чтобы в /proc появился нужный файлик, нужно для обеих видеокарт выставить modeset=1. Проблема заключается в том, что бинарные драйвера от nvidia такой возможности не дают, а nouveau меня не вдохновляют =).

Читая форумы я натолкнулся на второй и, в моем случае, успешный вариант.

Мой ноутбук, как оказалось поддерживает технологию nvidia optimus, суть которой в том, что основной видеокартой работает размазанная интеловская, а дискретная карточка включается по требованию для обработки вывода отдельных приложений.

Включением/выключением видеокарт занимается программа bumblebee, запущенная в режиме демона.

Для запуска приложений с использованием дискретной видеокарты используется утилита optirun.

Итак…

emerge -av bumblebee
emerge -av bbswitch
/etc/init.d/bumblebee start

Что мы видим после этого в dmesg:

[349281.482985] video LNXVIDEO:00: Restoring backlight state
[349281.483079] video LNXVIDEO:01: Restoring backlight state
[349281.483296] bbswitch: disabling discrete graphics
[349281.483639] bbswitch: Result of Optimus _DSM call: 11000059
[349281.483672] pci 0000:01:00.0: PCI INT A disabled
[349281.496110] pci 0000:01:00.0: power state changed by ACPI to D3

Из вывода dmesg видно, что после выхода из ждущего режима запустились обе видеокарты, а несколько позднее дискретная видеокарта была деактивирована до лучших времен.

А вот, что мы видим при запуске программы через optirun

[349276.478405] bbswitch: enabling discrete graphics
[349276.902596] pci 0000:01:00.0: power state changed by ACPI to D0
[349276.903619] pci 0000:01:00.0: power state changed by ACPI to D0
[349276.904671] pci 0000:01:00.0: restoring config space at offset 0x1 (was 0x100006, writing 0x100007)
[349276.904689] pci 0000:01:00.0: power state changed by ACPI to D0
[349276.905670] pci 0000:01:00.0: power state changed by ACPI to D0
[349276.905678] pci 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[349276.905682] pci 0000:01:00.0: setting latency timer to 64

Основной целью этого исследования было — снизить расход батареи в автономном режиме работы ноутбука. И, надо сказать, цель была достигнута. Время работы от батареи существенно увеличилось.

Рубрика: Железо, Программное обеспечение, Увлечения | Метки: , , , , , , | Комментарии отключены

ext3 + 100% загрузки + удаленные файлы

Если вдруг у вас случилось, что не появилось место, в тот момент, когда вы файлик гигабайтный удалили, это значит, что в системе, кто-то его использует. Достаточно найти этот процесс и прибить/перезапустить. Место сразу вернется. В самых крайних случаях придется перезагружаться и подвергать раздел проверке с помощью fsck.

Рубрика: Программное обеспечение, Работа, Увлечения | Метки: , , | Комментарии отключены

Логирование kernel panic на удаленный syslog сервер.

Несколько из обслуживаемых мною серверов внезапно с небольшим интервалом времени попадали в kernel panic. Очень хотелось узнать почему, но серверы находятся в датацентрах в разных точках планеты и физически увидеть это нереально. Если попросить подключить kvm, то время простоя сервера будет недопустимо большим. В результате я стал искать возможность сохранения лога dmesg на диск или еще куда-нибудь, чтобы увидеть на что заругалось ядро….

В результате поисков я наткнулся на информацию о kexec kdump и netconsole. Первое сохраняет дамп оперативки, что мне не подходит. А вот netconsole оказалась намного интереснее. Это стандартный модуль ядра, дающий возможность отсылать сообщения ядра по сети в виде обычного текста по сети.

При загрузке модуля в параметрах задается на какой хост и на какой порт и через какой интерфейс отсылать сообщения.

modprobe netconsole netconsole="1234@192.168.88.246/eth0,6665@
192.168.88.250/aa:bb:cc:dd:ee:ff"

где

  • 1234 — исходящий порт
  • 192.168.88.246 — адрес интерфейса с которого слать
  • eth0 — интерфейс через который слать
  • 6665 — порт назначения
  • 192.168.88.250 — адрес сервера куда мы логи шлем
  • aa:bb:cc:ff:ee:ff — mac-адрес сервера назначения. Если не указывать, то он выставится в ff:ff:ff:ff:ff:ff, что будет соответствовать широковещательному сообщению.

Некоторые из параметров можно пропускать:

modprobe netconsole netconsole="@/,514@192.168.88.250/"

Проблемы с которыми я столкнулся

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

2. Я несколько часов мучался и не знал почему же у меня сообщения не отсылаются =). В результате почитал официальную документацию и узнал, что по умолчанию в ядре уровень логирования в консоль низкий и шлются только сообщения о чрезвычайных событиях. А я же проверял на подключении/отключении флешки. Для изменения уровня логирования нужно скомандовать

dmesg -n 8

Если 8 не подходит, то 7 точно подойдет =). В разных дистрибутивах были разные цифры. Я не копался в эту сторону, так что не знаю чем это обусловлено.

З.Ы. Чтобы вызвать kernel panic вручную, нужно выполнить

echo "c" > /proc/sysrq-trigger

Документация

Рубрика: Программное обеспечение, Работа | Метки: , , , , , , | Комментарии отключены

Linux + rtl8168b rev06

Не так давно я решил сменить рабочую машинку и сегодня наконец-то ко мне пришел новый железный друг =). Попытка установить на него linux не увенчалась успехом, т.к. драйвер сетевой карты не хотел работать как надо.

Сетевая карта realtek 8168B. Теоретически для нее подходит драйвер r8169, но видимо не в моем случае.

Проблема решилась сборкой модуля, скачанного с сайта производителя. Зовется он r8168.

Рубрика: Железо, Программное обеспечение | Метки: , , , , , | Комментарии отключены

Таблица коммутации с Cisco по SNMP

Я долго пытался читать документацию на сайте Cisco, но т.к. с английским у меня не очень хорошо, то ничего путного по части SNMP найти не смог. Однако я все же нашел, как получать таблицу коммутации с коммутаторов. К моему удивлению, несмотря на то, что нарузку с портов я снимаю по snmp v2c, тут потребуется 1-я версия протокола.

snmpwalk -v 1 -c public@VLAN_ID IP .1.3.6.1.2.1.17.4.3.1.1

Как видно из примера, комьюнити содержит в себе vlan id. А что если мы не знаем какие вланы созданы на коммутаторе? Тогда мы можем это узнать вот так:

snmpwalk -v 1 -c public IP .1.3.6.1.4.1.9.9.46.1.3.1.1.2
Рубрика: Железо, Программное обеспечение, Работа | Метки: , , | Комментарии отключены

Пустить VLAN через Mikrotik

Несмотря на то, что маршрутизаторы от фирмы Mikrotik очень производительны и гибки в настройке, некоторые моменты настройки не такие уж красивые, как хотелось бы.

В моем случае это настройка L2 уровня, т.е. проброс vlan-а между портами маршрутизатора. В то время, когда в коммутаторах 2-го и 3-го уровня именитых производителей это делается одной командой… в нашем случае придется затратить больше телодвижений.

Делается это примерно вот так:

interface vlan add name=manage vlan-id=2000 interface=ether1-gateway disabled=no
interface vlan add name=manage2 vlan-id=2000 interface=ether2-master-local disabled=no
interface bridge add name=manage-bridge disabled=no
ip address add address=172.28.10.121/15 interface=manage-bridge
interface bridge port add bridge=manage-bridge interface=manage
interface bridge port add bridge=manage-bridge interface=manage2
Рубрика: Железо, Программное обеспечение, Работа | Метки: , , , | Комментарии отключены

Перенос баз данных, вместе с пользователями.

Итак, задача: требуется перенести несколько баз данных на другой сервер, но при этом перенести в неизменном пользователей, имеющих доступ к этой базе, их пароли и все назначенные им привилегии.

1. Если нужно перенести все базы на новую чистую БД, то нас спасет команда

mysqldump -u root -p --all-databases

При этом сдампится абсолютно все. В том числе и служебные таблицы самой mysql.

2. Если нужно перенести несколько баз данных, то нужно уже ковыряться в табличках *_PRIVILEGES в базе information_schema. Занятие не очень интересное. Но к счастью есть набор утилит для наблюдения за mysql — maatkit. В случае если он установлен, то проблему можно решить такой командой:

mk-show-grants --user=root --password=root_pass --database=databasename
Рубрика: Программное обеспечение, Работа | Метки: , , | Комментарии отключены

Zabbix-proxy

Иногда возникают ситуации, в которых необходимо мониторить оборудование недоступное напрямую zabbix-серверу. Например много удаленных офисов, имеющих выход в интернет. В таком случае нам поможет zabbix-прокси, который возьмет на себя функции сервера в этих сетях и будет передавать данные основному серверу.

При настройке прокси следует обратить внимание на то, чтобы его имя совпадало либо с его доменным именем или с ip-адресом. Это нужно для того, чтобы сервер смог подружиться с прокси.

Не стоит указывать SourceIP, т.к. с этого адреса прокси будет и во внутреннюю локалку стучаться.

Рубрика: Железо, Программное обеспечение, Работа | Метки: , , | Комментарии отключены

Автооподключение второго монитора на нетбуке

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

Для начала требуется добавить вот такую запись в /etc/X11/xorg.conf

Section "ServerFlags"
....
Option    "Xinerama" "True"
....
EndSection

Далее с помощью утилиты xrandr мы можем делать с нашими мониторами все, что душе будет угодно.

Для начала убедимся, что система увидела оба монитора (и LCD встроенный и подключенный к выходу VGA). Для этого потребуется ввести такую команду:

xrandr -q | grep "connected"

Далее примерно такой командой настраиваем оба монитора и их взаимодействие:

xrandr --output LVDS1 --mode 1024x600 --output VGA1 --mode 1366x768 --right-of LVDS1

Имена мониторов берем из предыдущей команды, разрешения выставляем те, что нам удобно. Кстати если ввести команду xrandr без параметров, то вы увидите все доступные разрешения. Плюсиком будут помечены самые оптимальные для данного монитора разрешения.

Чтобы отключить второй монитор можно применить следующую команду:

xrandr --output LVDS1 --mode 1024x600 --output VGA1 --off

Но у меня возникла еще одна проблема — на работе и дома мониторы имеют разные оптимальные разрешения экрана. Можно конечно сделать две отдельные кнопочки для дома и офиса, но хотелось сделать более аккуратно и универсально. В результате я написал такой небольшой скриптик:

#!/bin/bash

params=`xrandr | grep + | awk '{ print $1 }'`
command=`echo $params | awk '{ print "xrandr --output " $1 " \
--mode " $2 " --output " $3 " --mode " $4 " --right-of " $1 }'`
`$command`

Надеюсь, кому-нибудь эта информация тоже поможет.

Рубрика: Железо, Программное обеспечение | Метки: , , , , , , | Комментарии отключены