Sunday, February 26, 2012

Установка CentOS на программный RAID1

mmПериодчески на форумах возникают вопросы о том как при установке Linux создать зеркало из двух жестких дисков и, собственно, на него установить систему. Обычно на такие вопросы даются или краткие неполные ответы или отправляют читать документацию, которая впрочем, достаточно обширна и массивна. Поэтому здесь описан небольшой пошаговый HOW-TO по данному вопросу.

1. Установка системы и создание разделов 

mmИтак, приступим. 

mmЧто мы имеем? Мы имеем компьютер с двумя одинаковыми жесткими дисками, на который требуется установить CentOS Linux 5.5. 

mmЧего мы хотим добиться от Linux и этого компьютера?
  • На этапе установки ОС, средствами Linux объеденить два жестких диска в зеркальный массив RAID1;
  • Произвести установку "пингвина" на уже готовый раздел программного массива;
  • Сделать так чтобы в случае отказа одного из жестких дисков, массив позволял загрузить систему с оставшегося в массиве диска.

mmПоскольку последний попавшийся мне на глаза топик по этому вопросу был про CentOS, то ставить будем CentOS 5.5 (в текстовом режиме). 
mmИтак, грузимся с компакт-диска, поехали: 

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmНа первых шагах установки параметры выбирайте по своему усмотрению, до тех пор пока не дойдете до экрана "Partitioning type":

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmУбедитесь что внизу, в вопросе "Which drive(s) do you want to use...?" отмечены оба жестких диска, если нет, то соответственно их нужно отметить. Дальше выбираем вариант "Create custom layout" и жмем "OK", видим два пустых диска: 

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmВот отсюда и начнется интересное. Жмем "NEW" и создаем раздел под систему, тип раздела указываем "software RAID", размер раздела можете указать по своему усмотрению (я решил все разместить на / и сделать его загрузочным, соответственно, размер раздела у меня равен размеру жесткого диска за вычетом 1Гб под swap): 

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmСледом за основным разделом, в оставшемся 1Гб свободного пространства создаем еще один раздел такого же типа:

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmТеперь мы имеем разделы на первом жестком диске, далее по аналогии создайте точно такие же разделы на втором винчестере (важно чтобы совпадали размеры разделов и чтоб тип у них был "software RAID"). После того как на втором диске разделы будут созданы, можно нажимать кнопку "RAID" и приступать к созданию зеркал. 

mmПервое зеркало создаем, соответственно из разделов sda1 и sdb1, точку монтирования указываем /, файловая система ext3: 

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmВторое зеркало создаем соответственно из sda2 и sdb2, без точки монтирования и в файловой системе указываем что это будет swap: 

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmВ итоге должно получиться следующее:

Уменьшено на 70% (720 x 400) - Нажмите для увеличенияИзображение

mmДалее продолжайте установку, когда инсталлятор спросит Вас куда устанавливать загрузчик grub, то у Вас будет два варианта - /dev/sda1 или /dev/md1. По умолчанию будет выбран второй вариант, хотя это пока без разницы, продолжайте далее настройку как обычно.. 

2. Первичная настройка 

mmИтак, Ваша система установилась и после первой загрузки Вы зашли в консоль под root и видите приглашение системы?
mmЗамечательно! Теперь Вы можете проверить состояние наших райдов: 

Уменьшено на 70% (720 x 190) - Нажмите для увеличенияИзображение

mmЗдесь мы видим что с обоими райдами у нас все в порядке. Теперь давайте посмотрим что у нас в настройках grub.conf: 

Уменьшено на 70% (720 x 208) - Нажмите для увеличенияИзображение

mmВ этом конфиге мы видим что системе указано выполнять загрузку с /dev/md1 (если при установке Вы указывали устанавливать загрузчик на /dev/sdaX, то соответственно конфиг будет другой), т.е. при старте система попытается загрузиться с зеркального массива. Однако, строка "root (hd0,0)" означает что из зеркала будет взят первый диск и загрузка будет произведена именно с него. Разумеется, нас это совершенно не устраивает, т.к. если первый жесткий диск выйдет из строя, система не загрузится.. Поэтому открываем в текстовом редакторе (кому как нравится, а я юзаю mc->F4, ( yum install mc)), файл grub.conf и приводим к следующему виду:

Уменьшено на 70% (720 x 298) - Нажмите для увеличенияИзображение

mmКак Вы уже наверное догадались, вторым пунктом добавлена настройка, указывающая загружать систему с того же зеркала /dev/md1, но уже со второго диска ("root (hd1,0)"). Так вот, если вдруг, не дай бог конечно, первый диск выйдет из строя, то как раз на этот случай вставлена опция "fallback=1" - в случае неудачной загрузки пункта #0 (hd0) система предпримет попытку загрузиться со следующего пункта #1 (hd1). 

mmТеперь у нас grub знает что в случае чего он может пытаться грузиться с обоих жестких дисков, однако сам загрузчик grub у нас установлен в данный момент только на первый диск (hd0). Поэтому мы должны установить загрузчик на оба жестких диска (жирным шрифтом отмечены сами команды, остальное вывод): 

Уменьшено на 70% (720 x 396) - Нажмите для увеличенияИзображение

mmТеперь проверим установлен ли пакет mdadm, и если да (у меня он установился вместе с базовой системой), то посмотрим mdadm.conf: 

Уменьшено на 70% (720 x 156) - Нажмите для увеличенияИзображение

mmДумаю с утилитой mdadm Вы сможете сами разобраться ;), впрочем, если Вы новичек в Linux, то советую с ней быть поосторожней.
На этом пока все. Если желаете проверить как система загрузится при отключенном первом диске, но, опять же, если Вы новичек то я не советую Вам этого делать самостоятельно! А здесь этот процесс я описывать не буду, пока не буду - чуть позже опишу..

3. Проверка 

mmВпрочем, если Вы таки взялись попробовать то помните: после того как Вы снова сервер выключите и подцепите диск обратно, то загрузив сервер обязательно посмотрите состояние массивов командой "cat /proc/mdstat"! Скорее всего массивы уже будут в состоянии синхронизации, это означает что данные с "уцелевшего" диска будут копироваться на вновь подцепленный диск.
mmЕсли в массивах разделы только что подцепленного диска будут отсутствовать, то их можно передобавить в массив сделующим образом:

Уменьшено на 70% (720 x 418) - Нажмите для увеличенияИзображение

Friday, February 24, 2012

PHP Json extension

http://pecl.php.net/package/json

download json-1.2.1.tgz FROM PECL

enter code heretar zxvf json-1.2.1.tgz
cd json-1.2.1
vi JSON_parser.c
Find ZVAL_DELREF replace to Z_DELREF_P (You can Find in 3 place) And Save file
Then
phpize
./configure
make
make install
extension=json.so in php.ini

Thursday, February 23, 2012

php memcache

Install PHP Extension.



Download and install latest stable memcache version from PECL.
cd /usr/src
wget http://pecl.php.net/get/memcache-2.2.5.tgz
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure
make
make install



If you have problem with phpize install php-devel



memcache.so will be install in php modules directory, now enable memcache.so extension in php.ini
To find out your php.ini location, execute following command
php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini
vi /usr/local/lib/php.ini
extension = “memcache.so”
save the file and restart httpd server.
/etc/init.d/httpd restart
To check is memcache extension loaded in php, execute following command.
php -i | grep memcache
memcache
memcache support => enabled
memcache.allow_failover => 1 => 1
memcache.chunk_size => 8192 => 8192
memcache.default_port => 11211 => 11211
memcache.default_timeout_ms => 1000 => 1000
memcache.hash_function => crc32 => crc32
memcache.hash_strategy => standard => standard
memcache.max_failover_attempts => 20 => 20
Registered save handlers => files user sqlite memcache
PWD => /usr/src/memcache-2.2.5
_SERVER["PWD"] => /usr/src/memcache-2.2.5
_ENV["PWD"] => /usr/src/memcache-2.2.5
This information can also be seen using phpinfo().
If you have question please comment.

Tuesday, February 7, 2012

mount NTFS

 You can use this mount command to make the partition writeable for all users:
mount -t ntfs-3g   /dev/sdb1   /path_to/mount_point
When you execute the mount, the mount point automagically assumes these properties: user = root, group = root and permissions = drwxrwxrwx. This give write access to everyone.