воскресенье, 30 ноября 2008 г.

horde. login failed.

horde не пускает, хотя пароль верный... В системе установлен Plesk.
В horde.log
 HORDE [error] [imp] FAILED LOGIN x.x.x.x to localhost:143[imap/notls] as 'user' [on line 247 of
"/root/horde/imp/lib/Auth/imp.php"]
HORDE [info] [imp] x.x.x.x failed [on line 31 of "/root/horde/imp/login.php"]

1. проверить, что в /etc/hosts существует запись 127.0.0.1 localhost
2. выполнить /usr/local/psa/admin/bin/mchk -v

проверить работу. если нет - попробовать заменить в /etc/psa-horde/imp/servers.php
'server' => 'localhost', на 'server' => 'IP Address',

четверг, 20 ноября 2008 г.

Использование программного RAID-1 (gmirror) в FreeBSD

Оригинал: http://dreamcatcher.ru/docs/freebsd-raid.html
На английском: http://www.onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html
Мною взято с http://www.opennet.ru/base/sys/freebsd_gmirror_raid1.txt.html


Использование программного RAID-1 в FreeBSD

Dru Lavigne
Перевод: Сгибнев Михаил


Вы когда-нибудь нуждались в программном решении RAID на сервере
начального уровня? Возможно, вы хотели бы использовать избыточность,
предоставляемую зеркалированием, на своей рабочей станции не тратя
денег на RAID-контроллер? А может, у вас был уже опыт настройки
программного RAID на UNIX-системах и вы потерпели неудачу?
Начиная с 5.3-Release, в состав FreeBSD входит утилита gmirror(8),
которая позваляет вам более легко создавать решения RAID 1. Хотя
существует учебник по gmirror(8), все равно требуется много вычислений
размеров разделов с помощью bsdlabel или использование дискеты
восстановления имеющейся системы.

Мне кажется, что было бы более разумно настраивать RAID во время
установки системы. Так же, хотелось бы разработать методику, на
которую не влиял бы человеческий фактор, в виде ошибочных расчетов.
После нескольких проб и ошибок, была разработана данная методика,
которая была мною проверена на различных системах и хорошо себя
зарекомедовала. Так же, я получила ценные данные от Поэльа Джакаба
Доидека(Pawel Jakub Dawidek), автора gmirror, в добавок раскрывшего
мне некоторые недокументированные возможности gmirror.


Некоторая подготовка GEOM

Перед тем, как мы приступим к нашим экспериментам, сделаем краткий
экскурс в GEOM. GEOM является модульной дисковой структурой,
появившейся в FreeBSD 5.0. В результате модульной структуры,
появляется возможность создавать программы, способные управлять
дисками. Лучшие примеры - программные реализации RAID, появившиеся в
FreeBSD 5.3:

* gstripe(8) обеспечивает чередование или RAID 0
* mirror(8) обеспечиват зеркалирование/дуплекс или RAID 1
* graid3(8) обеспечивает чередование с контролем четности или RAID 3


Начальная g указывает на то, что эти утилиты пользуются возможностями,
которые предоставляет GEOM.

Обратите внимание, что если вы плохо знакомы с RAID, то Webopedia дает
хорошее определение каждого уровня RAID.

man 4 geom описывает используемые термины, которые включают в себя:

* Провайдер -- Этот объект GEOM появляется в /dev. В этой статье
рассматривается, как создать провайдер, известный как
/dev/mirror/gm0, представляющий mirror/duplex диск.


* Потребитель -- Этот объект получает запросы ввода - вывода. В
примере mirror/duplex, это - два физических диска. Я использую два
IDE диска на отдельных кабелях, обозначенных как /dev/ad0 и
/dev/ad2.


* Метаданные -- При обращении к любому уровню RAID, метаданные
описывают членов массива, их размеры и местоположение, содержат
описания логических дисков и разделов, и текущее состояния
дискового массива.


* mirror/duplex -- RAID 1 содержит одинаковые данные на двух
различных дисках. Другими словами, происходит зеркалирование
данных одного диска на другой. Если оба диска подключены к одному
каналу, то они зеркалированы. Если к разным каналам - то они
работают в дуплексном режиме. Поскольку в режиме зеркалирования
отказ канала приведет к отказу системы, большинство серверов
работают в режиме дуплеска.



Конфигурирование зеркалирования/дуплекса

Если вы собираетесь сделать RAID 1, то не ищите лишних сложностей, а
купите два идентичных (одного производителя и емкости) жестких диска.
Вы можете и не последовать этому совету, но тогда столкнетесь с
некоторыми сложностями и впустую потратите излишек свободного места на
большем диске. Подключите диски как primary master и secondary master.
Перед установкой операционной системы проверьте, что ваш CMOS
распознает оба диска.

Используя ваш любимый инсталляционный метод, запустите установку
FreeBSD любой версии (5.3 или выше). Когда Вы принимаетесь за меню
Select Drives, то должны увидеть ad0 и ad2. Выберите ad0, поскольку вы
будете устанавливать операционную систему на primary master.
С помощью утилиты fdisk удалите любые существующие разделы и выберите
"Use entire disk". На вопрос о меню загрузки, ответьте "Standard MBR".

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

Когда установка завершится, установите ваш часовой пояс, создайте
учетную запись пользователя, установите пароль root, и так далее.
После настройки этих параметров не стоит перезагружаться. Нажмите
Alt-F4 для перехода в режим командной строки. Первой командой, которую
я ввожу, обычно бывает csh, для того, чтобы у меня была оболочка с
историей команд (по умолчанию устанавливается оболочка Bourne).
Создание зеркалирования/дублекса осуществляется вводом следующей
команды:

# gmirror label -v -b round-robin gm0 /dev/ad0


Где gmirror label создает зеркало, функция -v включает режим отладки,
-b round-robin выбирает алгоритм балансировки (в настоящее время это
наиболее быстродействующий алгоритм), gm0 - имя первого зеркала GEOM и
/dev/ad0 указывает на диск, содержащий данные для зеркалирования.

Однако, если вы попробуете выполнить эту команду сейчас, то будете
разочарованы:

# gmirror label -v -b round-robin gm0 /dev/ad0
Can't store metadata on /dev/ad0: Operation not permitted


Это особенность защиты, которая указывает, что диск в настоящее время
установлен для записи и поэтому недоступен. Однако, вы можете обойти
эту проблему цыпленка-и-яйца и временно вынудить
gmirror обойти эту меру, чтобы создать зеркалирование/дуплекс,
устанавливая sysctl MIB:

# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16


Не волнуйтесь, после перезагрузки этот параметр снова примет значение
"0". А теперь выполним:

# gmirror label -v -b round-robin gm0 /dev/ad0
Metadata value stored on /dev/ad0


Все, теперь у нас есть RAID 1.
Так же теперь нам необходимо отредактировать два файла. Первый из них
в настоящее время пуст, используем утилиту echo для того, чтобы внести
в него необходимый параметр:

# echo geom_mirror_load="YES" > /boot/loader.conf


Поскольку в файле /etc/fstab у нас уже содержатся некие данные, то
лучше сделать его резервную копию.

# cp /etc/fstab /etc/fstab.orig
# vi /etc/fstab


Измените каждый ad на gm и вставьте mirror после /dev. Для примера,
/dev/ad0s1a трансформируется в /dev/mirror/gm0s1a. Если вы не делали
дополнительные разделы, то у вас будут устройства ad0s1,
оканчивающиеся на a, b, d, e и f. Необходимо отредактировать каждую
строку.

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

Обратите внимание, что в некоторых руководствах указано требование к
наличию опции swapoff в /etc/rc.conf. Теперь это не является
необходимым, так же как и использование shutdown -r now вместо reboot.
Теперь, когда вы уверены, что все в порядке, нажмите Alt-F1, извлеките
установочный диск и выйдите из утилиты установки.



Загрузка в режиме зеркалирования/дуплекса

Если вы внимательно смотрите на экран во время начальной загрузки, то
должны увидеть следущие строки:

GEOM_MIRROR: Device gm0 created (id=2125638583).
GEOM_MIRROR: Device gm0: provider ad0 detected.
GEOM_MIRROR: Device gm0: provider ad0 activated.
GEOM_MIRROR: Device gm0: provider mirror/gm0 launched.
GEOM_MIRROR: Device gm0 already configured.
Mounting root from ufs:/dev/mirror/gm0s1a


После монтирования /dev/mirror/gm0s1a система продолжит загрузку. Если
вы допустили опечатку в /etc/fstab, то загрузка остановится и система
будет ждать от вас каких-либо действий. Я забыла вставить mirror,
когда редактировала /etc/fstab:

Mounting root from ufs:/dev/gm0s1a
setrootbyname failed
ffs_mountroot: can't find rootvp
Root mount failed: 6

Manual root filesystem specification:
: Mount using filesystem
e.g. ufs:da0s1a
? List valid disk boot devices
Abort manual input

mountroot>


К счастью, все не так страшно, как выглядит. Сперва просмотрим
доступные дисковые устройства:

mountroot> ?

List of GEOM managed disk devices:
mirror/gm0s1f mirror/gm0s1e mirror/gm0s1d mirror/gm0s1c mirror/gm0s1b
mirror/gm0s1a mirror/gm0s1 ad2s1 mirror/gm0 ad0s1 ad2 acd0 ad0 fd0


Если вы укажете правильное расположение корневой файловой системы, то
система продолжит загружаться:

mountroot> ufs:/dev/mirror/gm0s1a
Mounting root from /dev/mirror/gm0s1a


После входа в систему, исправьте /etc/fstab и перезагрузитесь, после
чего снова войдите в систему и удостоверьтесь, что все файловые
системы примонтированы правильно:

% df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 248M 35M 193M 15% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/mirror/gm0s1e 248M 12K 228M 0% /tmp
/dev/mirror/gm0s1f 7.3G 99M 6.7G 1% /usr
/dev/mirror/gm0s1d 248M 196K 228M 0% /var


Утилита df не покажет состояние раздела подкачки, воспользуемся другой:

% swapinfo
Device 1K-blocks Used Avail Capacity
/dev/mirror/gm0s1b 629544 0 629544 0%


Синхронизация дисков

Единственное, что мы еще не сделали, так это не синхронизировали
диски. Это случится автоматически, как только вы вставите второй диск
в зеркало:

# gmirror insert gm0 /dev/ad2
GEOM_MIRROR: Device gm0: provider ad2 detected.
GEOM_MIRROR: Device gm0: rebuilding provider ad2.


Смотрите, что случится:

# gmirror list | more
Geom name: gm0
State: DEGRADED
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 2125638583
Providers:
1. Name: mirror/gm0
Mediasize: 10262568448 (9.6G)
Sectorsize: 512
Mode: r6w5e2
Consumers:
1. Name: ad0
Mediasize: 10262568448 (9.6G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: DIRTY
GenID: 0
SyncID: 1
ID: 3986018406
2. Name: ad2
Mediasize: 10262568448 (9.6G)
Sectorsize: 512
Mode: r1w1e1
State: SYNCHRONIZING
Priority: 0
Flags: DIRTY, SYNCHRONIZING
GenID: 0
SyncID: 1
Synchronized: 1%
ID: 1946262342


Обратите на SYNCHRONIZING в строке Flags. Для синхронизации дисков
потребуется некоторое время, в настоящее время синхронизировано 1%
данных. Приблизительно, время синхронизации составляет от 30 минут для
10Гб и 2.5 часа для 75Гб дисков. Если вам интересно, то вы можете
понаблюдать за процессом:

# gmirror status
Name Status Components
mirror/gm0 DEGRADED ad0
ad2 (2%)


Когда синхронизация закончится, вы увидите следующее сообщение:

GEOM_MIRROR: Device gm0: rebuilding provider ad2 finished.
GEOM_MIRROR: Device gm0: provider ad2 activated.


Если вы повторно выполните команду gmirror list, то увидите, что в
строке State значение DEGRADED изменилось на COMPLETE. Не волнуйтесь,
увидев в строке Flags состояние DIRTY, это означает, что система
сделала запись на диск, но еще не синхронизировала данные между
дисками, если потождать несколько секунд, не производя никаких
дисковых операций, то можно увидеть, как состояние изменится на NONE.

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

GEOM_MIRROR: Device gm0 created (id=2125638583).
GEOM_MIRROR: Device gm0: provider ad0 detected.
GEOM_MIRROR: Device gm0: provider ad2 detected.
GEOM_MIRROR: Device gm0: provider ad0 activated.
GEOM_MIRROR: Device gm0: provider ad2 activated.
GEOM_MIRROR: Device gm0: provider mirror/gm0 launched.
Mounting root from ufs:/dev/mirror/gm0s1a


Заключение

Утилиты GEOM находятся в постоянном развитии, разработчики вовсю
добавляют новые возможности и постоянно вносят изменения в страницы
руководства man.

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

понедельник, 17 ноября 2008 г.

Change and Reset MySQL root Password

Other then the ways specified here to reset and change the root password for mySQL database in the case that the password is forgotten or lost, the following instructions explain in details the alternative way at the last part of the guide, where no additional file needs to be created:

  1. Login as root to the Windows or Unix-like (Unix, Linux or BSD) machine with the MySQL server.
  2. Stop the MySQL server by using either of the following command:

    Linux: /etc/rc.d/init.d/mysql stop
    FreeBSD: /usr/local/etc/rc.d/mysql-server.sh stop

  3. Open the mysql server startup script (i.e. mysql-server.sh - the file executed to start or stop MySQL server.
  4. Add –skip-grant-tables to the end of the line that contains the mysqld_safe command as its parameter.
  5. Start MySQL server with the following command:

    Linux: /etc/rc.d/init.d/mysql start
    FreeBSD: /usr/local/etc/rc.d/mysql-server.sh start

  6. Alternatively, start the MySQL server directly and skip the editing with the following command:

    mysqld_safe –skip-grant-tables &

    Depending on your path environment, you may need to point to the correct directory where mysqld_safe is instead.

  7. Run the following commands to login as the mysql user and connect to mysql user/permission database:

    # mysql -u root mysql

  8. Run the update queries to change the MySQL password:

    mysql> UPDATE user SET Password=PASSWORD(’newrootpassword’) WHERE User=’root’;
    mysql> FLUSH PRIVILEGES;

    Note: Replace newrootpassword with the new root password for MySQL server. Flush Privileges is needed to making the password change effect immediately.

  9. Exit mysql database client by typing exit.
  10. Stop MySQL server with commands listed at step 2.
  11. Open the mysql server startup script edit in step 3 again and remove the –skip-grant-tables parameter that has been added.
  12. Start MySQL server by using command from step 5 or 6.

For Redhat Linux users, use the following instructions as the root user of Redhat Linux machine:

  1. Stop MySQL process by using command:

    # killall mysqld

  2. Start the MySQL server with following options:

    # /usr/libexec/mysqld -Sg –user=root &

  3. Start the MySQL client:

    # mysql

    You should see the following message:

    Welcome to the MySQL monitor. Commands end with ; or g.
    Your MySQL connection id is 1 to server version: 3.xx.xx

    Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.

    mysql>

  4. Use mysql database:

    mysql> USE mysql

    You should see the following message:

    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed

  5. Then, update the password for the root user with the following command:

    UPDATE user SET password=password(”newpassword”) WHERE user=”root”;

    Replace newpassword with your desired password. You should see the following message:

    Query OK, 2 rows affected (0.03 sec)
    Rows matched: 2 Changed: 2 Warnings: 0

    Rows affected may be different, but the Query OK should be there.

  6. Flush the database privileges to reload it in order to make the changes effective:

    mysql> flush privileges;

    You should get the following result:

    Query OK, 0 rows affected (0.02 sec)

  7. Exit the MySQL client by typing exit.
  8. Kill the MySQL server process by typing killall mysqld.
  9. Then start MySQL again:

    /etc/init.d/mysqld start

original