Tuesday, December 29. 2009Восстановление даты модификации файла из rpmdb / rpm verify fix mtime differences
Восстановить дату последней модификации файла из базы rpmdb позволяет команда:
touch -m --date="`rpm -q --qf '%{FILEMTIMES:date}' -f <filename>`" <filename>
Например, рассмотрим ситуацию # rpm -V postgresql-server .......T c /var/lib/pgsql/.bash_profile #У файла поменялась дата модификации в связи с внесением в него временных изменений. Восстановим дату модификации на хранимую в rpmdb # touch -m --date="`rpm -q --qf '%{FILEMTIMES:date}' -f /var/lib/pgsql/.bash_profile`" /var/lib/pgsql/.bash_profile
Проверим, что изменения имели место быть
# rpm -V postgresql-server #Проверка прошла успешно. Monday, December 21. 2009Machine Check Exception (MCE)
Основная часть заметки была написана в 4ом часу утра 31 марта 2009 непосредственно в момент описываемых событий.
О том, что такое MCE и чем его закусывают мне довелось впервые столкнуться ночью 31 марта 2009. Знамение пришло в виде нескольких неисправимых ошибок на системной консоли следующего содержания (снимок экрана)
HARDWARE ERROR
CPU 5: Machine Check Exception: 5 Bank 0: b200004000000800
RIP !INEXACT! 10:<ffffffff8006ad64> {default_idle+0x29/0x50}
TSC 1d24d355f8839d
This is not a sotware problem!
Run through mcelog --acsii to decode and contact your hardare vendor
Полагаясь на диагностику операционной системы, а именно сообщение о том, что проблема связана с железом я погрузился в поиски. Как оказалось существуют 2а подмножества ошибок:
Привлек внимание факт, что сбой произошел в «Bank 0». Согласно презентации Bank с нулевого по третий соответствуют процессорам. Banks 0-3 CPU internal (DC, IC, BU, LS) 4 Northbridge: only really interesting oneС другой стороны аналогичные сообщения возникают из-за внутренней несовместимости оборудования. Например, материнская плата SuperMicro X7DB8+ и дисковый контроллер Adaptec не уживаются вместе. Днем 31 марта 2009 рассматриваемый сервер был выведен из эксплуатации и начались процедуры тестирования. Неоценимую помощь оказал дистрибутив breakin, который позволил нагрузить систему и воспроизвести сбой. Причина была в недостатке охлаждения. При продолжительной работе в пиковых нагрузках система не справлялась с отводом тепла, что вызывало перегрев процессоров. Проблема скрывалась в аппаратной платформе SuperMicro SYS-1025W, в которую необходимо устанавливать процессоры с меньшим тепловыделением и дополнительные вентиляторы для охлаждения. После этого случая вся используемая нами линейка SYS-1025W была модернизирована описанным способом. Sunday, December 20. 2009HP ProLiant Series / Установка компонентов ProLiant Support Pack
Заметка первоначально была начата 08 июля 2007 года, но, к сожалению, так и не получила завершения. Позволю себе опубликовать ее в незаконченном виде, возможно, кто-то подчерпнет для себя полезную информацию.
Исходные данные:
Для настройки массивов компания HP предлагает 4-е прикладных набора:
Доступ к ORCA возможен только на начальной стадии загрузки сервера (during POST). Разумеется, в production environments это не оправданный простой сервиса. К тому же сам интерфейс достаточно ограничен в возможностях (ряд возможностей в нём просто отсутствует). Соответственно его ниша сильно ограничена первоначальной настройкой системы. CPQONLIN существует для Novell NetWare. В связи с отсутствием в ближайшем окружении систем с NetWare можно судить лишь по описанию. По возможностям повторяет своих собратьев ACU и ACU CLI. Основное внимание будет сконцентрировано в эпсилон окрестности ACU и ACU CLI. Обе охватывают весь функционал дисковых контроллеров на заданной платформе Red Hat Enterprise Linux. HP ACU CLI распространяется как отдельно в виде RPM-пакета, так и в составе ProLiant Support Pack (архив, содержащий в себе актуальные на момент его выхода пакеты различных сетевых, локальных служб и описания к ним). Оба варианта доступны через раздел сайта HP Support & Drivers. Для рассмотрения был взял актуальный на момент написания RPM-пакет hpacucli-7.80-6.linux.rpm. Для его работы потребовался дополнительный пакет compat-libstdc++-296, входящий в репозиторий дистрибутива. Его установка была произведена командой: yum -y install compat-libstdc++-296 && rpm -Uvh /path/to/hpacucli-7.80-6.linux.rpmПервой командой, которую мы настоятельно рекомендуем выполнить hpacucli help и hpacucli shorthand. Последняя отобразит список принятых сокращений. А обе они поведают о всех своим возможностях. Легко заметить простоту синтаксиса: <target> <command> [parameter=value]Рассмотрим наиболее повседневные операции с ориентиром на последующее использование в командных скриптах. Первоначально потребуется определить расположение контроллера(ов), чтобы в последующих командах обращаться к вполне определенному устройству. Выполним команду: [root@savecore ~]# hpacucli ctrl all show status Smart Array 6i in Slot 0 Controller Status: OK Cache Status: OK Battery Status: OK [root@savecore ~]#Контроллер HP Smart Array 6i расположен в слоте с номером 0. Запрос информации непосредственно о данном контроллере производится явным заданием параметра slot=0:
[root@savecore ~]# hpacucli ctrl slot=0 show detail
Smart Array 6i in Slot 0
Bus Interface: PCI
Slot: 0
Cache Serial Number: P75B20C9SS017I
RAID 6 (ADG) Status: Disabled
Controller Status: OK
Chassis Slot:
Hardware Revision: Rev B
Firmware Version: 2.36
Rebuild Priority: Low
Expand Priority: Low
Surface Scan Delay: 15 sec
Cache Board Present: True
Cache Status: OK
Accelerator Ratio: 50% Read / 50% Write
Total Cache Size: 192 MB
Battery Pack Count: 1
Battery Status: OK
SATA NCQ Supported: False
[root@savecore ~]#
Поддерживаемые схемы адресации:
[controller all|slot=#|wwn=#|chassisname="AAA"|serialnumber=#|chassisserialnumber=#|ctrlpath=#:# Saturday, December 19. 2009NFS и все-все-все
Централизованная аутентификация с использованием NIS+, LDAP, ... - замечательная штука, товарищи, если реализована со следующими оговорками:
Наименее дешевым вариантом оказывается выбор NFS в качестве мастер хранилища и autofs в качестве средства автоматического монтирования. В этом случае пользователь заводится централизованно в каталоге LDAP и одновременно создается его домашняя директория с требуемыми правами. При подключении пользователя к машине по ssh или через getty она автоматически аутентифицирует его через LDAP и с помощью autofs монтирует соответствующую домашнюю директорию. Все выглядит достаточно радужно, если выбросить из рассмотрения тот момент, что своими же руками мы ввели единую точку отказа - NFS. В случае сетевых проблем, проблем дисковой системы и недоступности NFS хранилища мы сразу обретаем массу незабываемых мгновений беготни с бубном вокруг ошибок возвращаемых системными вызовами при обращении к сетевому хранилищу или просто недоступностью раздела /home в случае монтирования с параметром hard. Оглянувшись по сторонам на существующие решения можно заметить NBD. Для полноценной эксплуатации потребуется задействование кластерной файловой системы OCFS2 или GFS. И на выходе получится решение аналогичное NFS только вид сбоку. Подводя промежуточный итог, получаем, что нам необходимо хранение домашних директорий локальной на каждой машине. Только в этом раскладе удастся уйти от единой точки отказа в случае отказа мастер-узла. Приходим к проверенному решению с использованием rsync. Файлы по прежнему хранятся на мастер-ноде, но каждая машина с некоторым интервалом забирает их к себе в /home, обеспечивая единое пространство домашних директорий с необходимыми правами. Из неудобств для пользователей выделяются:
Friday, December 18. 2009CSS: pre + overflow
Очередной этап дневника пройден. Исправлен неприятный жук в CSS, из-за которого дневник разъезжался по швам в современных браузерах (firefox 3.x, konqueror, ...). Верстальщики советовали явно указать ширину элемента <pre> через CSS, что не применимо по соображениям масштабируемости на различные разрешения экранов. Пришлось потратить в общей сумме около трех часов, чтобы найти решение, включая размещение и просмотры отзывов на weblancer.net.
Решение было найдено в явном задании table-layout для центрального элемента. Более детально решение рассмотрено на stackoverflow.com, за что ему отдельное спасибо. Протестированные браузеры:
Feedback are welcome. Thursday, December 17. 2009Hardware RAID vs Linux Software RAID в схватке за симпатии PostgreSQL
Изначально предполагал, что оформлю статью в виде стандартного XHTML, однако в последний момент перемудрил с форматированием, написал все в OpenOffice и экспортировал в PDF.
На растерзание представляется новый опус Hardware RAID vs Linux Software RAID в схватке за симпатии PostgreSQL (PDF). Комментарии в ветке приветствуются. Wednesday, December 16. 2009Простенький скрипт настройки bonding
Скрипт ориентируется на расположение конфигурационных файлов принятых в ориентированных на RedHat дистрибутивах. Пример использования:
sh configure-bonding 10.10.10.10 255.255.0.0 eth0 eth2Запуск объединит два интерфейса eth0 и eth2 в интерфейс bond0, установит для интерфейса bond0 адрес 10.10.10.10 с сетевой маской 255.255.0.0, пропишет необходимые параметры в /etc/modprobe.conf. Сам скрипт выглядит тривиально: #!/bin/sh Friday, December 11. 2009Последствия комментирования макросов в .spec файлах
Иногда самая безобидная на первый взгляд операция - комментирование строки ,- может вылиться в целую последовательность мучительных поисков концов дальнейших проблем.
Углубимся в тематику и рассмотрим следующую вырезку из .spec файла: Как видно макрос %makeinstall закомментирован и все последующие параметры тоже. Данная конструкция успешно собирается rpmbuild. Однако на этапе выполнения mock-сборки вылезают артефакты в виде следующих ошибок: На каком основании скрипт полез в /usr/lib64, когда ему четко была задана переменная DESTDIR и вся установка должна была протекать в окрестности директории %{buildroot}, оставалось загадкой на протяжении нескольких часов исследования всего процесса сборки. В полном отчаянии начал просматривать весь листинг сборки rpmbuild. И заметил, что make install на выполняется дважды. Видно не вооруженным глазом, что второй вызов make потерял переменную DESTDIR. Более того, откуда второй вызов make install?! Оставшийся вариант, rpmbuild создает второй вызов с неверными параметрами. Заглянув в shell-скрипт Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.78776который создается на основе spec-файла при вызове rpmbuild, все стало на свои места. Первоначальный приведенный код с закомментированным макросом %makeinstall разворачивается в следующий псевдокод: Соответственно мы получаем два прогона make install. Причем второй вызов ошибочен. Итого: неиспользуемые макросы подлежат удалению из строчек spec-файла.
(Page 1 of 1, totaling 8 entries)
|
— ИТ аутсорсинг linux— Администрирование настройка серверов— системная интеграция — сетевое проектирование По вопросу сотрудничества: www.unixstyle.ru QuicksearchArchivesSyndicate This BlogBlog Administration |