Восстановление сбойного загрузочного диска в Linux RAID 1
Наткнулся на хорошую статью по замене загрузочного диска в софтверном RAID Linux.
Если кратко, то на второй уцелевший диск надо засетапать grub )
Наткнулся на хорошую статью по замене загрузочного диска в софтверном RAID Linux.
Если кратко, то на второй уцелевший диск надо засетапать grub )
Здесь можно узнать, как мониторить удаленно хардварный RAID DELL Perc 6/i (чип LSI) с помощью утилиты MegaCLI, самописных скриптов, SNMPd и Nagios в Linux (CentOS).
О том, как подготовить Nagios и SNMPd, рассказано в статье о мониторинге софтварного RAID. Туда добавить мне нечего, можно скопипастить инфу оттуда.
А вот скрипт raid_status.pl несколько изменился. Для его корректной работы нужно скачать утилитку LSI MegaCLI for Linux. Так же я ставил симлинк /opt/MegaRAID/MegaCli/MegaCli64 -> /usr/sbin/MegaCLI:
# ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/sbin/MegaCli
Теперь надо подготовить два скрипта.
Небольшой ликбез по удаленному мониторингу софтварного рейда в Linux с помощью Nagios и SNMPd.
[ДАННЫЙ СКРИПТ НЕПРАВИЛЬНЫЙ, НО НЕТ ВРЕМЕНИ ПОФИКСИТЬ]
Для начала подготовим перловый скрипт на машине, которую требуется мониторить. Скрипт будет проверять рейд и выдавать “OK” или “FAILED: описание” в зависимости от статуса RAID.
Написано по материалам HowTo VNC Server. В качестве операционной системы удаленного сервера возьмем CentOS.
Поскольку у нас отсутствует доступ к консоли сервера, установим KDE на http://www.softpedia.com/get/Internet/Remote-Utils/VNC-for-Windows.shtml.
На сервере понадобится 512М оперативы чтобы все это нормально работало.
Все нижеописанное работает на VDS/VPS на основе Virtuozzo/OpenVZ.
В основном это касается Virtual Dedicated Server (VDS/VPS), т.к. дефолтная установка MySQL на CeontOS/Fedora/RHEL с дефолтным my.cnf делает malloc на сотню с лишним мегабайт.
Конечно на потребляемую память MySQL влияют такие параметры как key_buffer, query_cache_size и т.п. Но они по дефолту идут минимальные, а кеш запросов вообще по моему отключен по дефолту.
Так вот все очень просто. Добавляем в my.cnf:
skip-innodb
skip-bdb
Это выключит хандлеры InnoDB и BerkeleyDB и всю потребляемую ими память. Ну конечно делать это нужно если вы не используете вышеприведенные типы таблиц.
Далее рестартуем мускуль и видим в топе что он занимает десяток-другой мегабайт.
PS: в большинстве случаев не помешает опция и skip-networking. А вот thread_cache_size я советую поставить в значение 5-15 (в зависимости от нагрузки)
Бывает такая фигня с yum‘ом на VPSках с памятью <=256M, когда пытаешься сделать какое то телодвижение с yum‘ом, он вываливается с таким бектрасом:
-bash-3.2# yum search foobar
Loading “fastestmirror” plugin
Loading mirror speeds from cached hostfile
* epel: ftp.nluug.nl
Traceback (most recent call last):
File “/usr/bin/yum”, line 29, in ?
yummain.main(sys.argv[1:])
File “/usr/share/yum-cli/yummain.py”, line 105, in main
result, resultmsgs = base.doCommands()
File “/usr/share/yum-cli/cli.py”, line 293, in doCommands
return self.yum_cli_commands[self.basecmd].doCommand(self, self.basecmd, self.extcmds)
File “/usr/share/yum-cli/yumcommands.py”, line 383, in doCommand
return base.search(extcmds)
File “/usr/share/yum-cli/cli.py”, line 867, in search
for (po, matched_value) in matching:
File “/usr/lib/python2.4/site-packages/yum/__init__.py”, line 1313, in searchGenerator
for sack in self.pkgSack.sacks.values():
File “/usr/lib/python2.4/site-packages/yum/__init__.py”, line 537, in <lambda>
pkgSack = property(fget=lambda self: self._getSacks(),
File “/usr/lib/python2.4/site-packages/yum/__init__.py”, line 392, in _getSacks
self.repos.populateSack(which=repos)
File “/usr/lib/python2.4/site-packages/yum/repos.py”, line 214, in populateSack
self.doSetup()
File “/usr/lib/python2.4/site-packages/yum/repos.py”, line 66, in doSetup
self.ayum.plugins.run(’postreposetup’)
File “/usr/lib/python2.4/site-packages/yum/plugins.py”, line 169, in run
func(conduitcls(self, self.base, conf, **kwargs))
File “/usr/lib/yum-plugins/fastestmirror.py”, line 90, in postreposetup_hook
repomirrors[str(repo)] = FastestMirror(repo.urls).get_mirrorlist()
File “/usr/lib/yum-plugins/fastestmirror.py”, line 142, in get_mirrorlist
self._poll_mirrors()
File “/usr/lib/yum-plugins/fastestmirror.py”, line 155, in _poll_mirrors
pollThread.start()
File “/usr/lib/python2.4/threading.py”, line 416, in start
_start_new_thread(self.__bootstrap, ())
thread.error: can’t start new thread
Это означает что у него есть плагин “fastestmirror“, который жрет много памяти в пике. Ессесно ее не получает, т.к. память лимитирована.
Лечится добавлением –noplugins к команде yum‘а или добавлением памяти на VDS.
По просьбам трудящихся, опишем установку mod_geoip для Apache из Fedora-community репозитория Extra Packages for Enterprise Linux (EPEL).
Версию EPEL (5.2) и архитектуру системы вписать соответствующую или найти тут
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-2.noarch.rpm
# yum install httpd mod_geoip
# httpd -t
Syntax OK
# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
В принципе все. ))
CentOS/RHEL/Fedora – простые шаги по установке
Предполагается что апач уже стоит и настроен. Предполагается версия mod_geoip 1.2.5. Возможно на момент прочтения она уже устарела. Проверьте последнюю версию на сайте MaxMind.
-bash-3.2# yum install GeoIP GeoIP-devel httpd-devel
-bash-3.2# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
-bash-3.2# gunzip GeoIP.dat.gz
-bash-3.2# mv GeoIP.dat /var/lib/GeoIP/GeoIP.dat
-bash-3.2# wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
-bash-3.2# tar xzf mod_geoip2_1.2.5.tar.gz
-bash-3.2# cd mod_geoip2_1.2.5
>> В зависимости от битности ОС использовать путь библиотеки /usr/lib или /usr/lib64
-bash-3.2# apxs -i -a -L/usr/lib64 -I/usr/include -lGeoIP -c mod_geoip.c
-bash-3.2# vi /etc/httpd/conf/httpd.conf
==================
LoadModule geoip_module /usr/lib64/httpd/modules/mod_geoip.so
GeoIPEnable On
GeoIPDBFile /var/lib/GeoIP/GeoIP.dat
==================
-bash-3.2# httpd -t
Syntax OK
-bash-3.2# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
Работает? Не трогай!