понедельник, 21 ноября 2011 г.

phpMyAdmin и Call to undefined function PMA_sanitize


Вылезла в логах веб-сервера вот такая замечательная ошибка. Буквально на ровном месте, ну почти :)
Fatal error: Call to undefined function PMA_sanitize() in /var/www/html/phpMyAdmin-3.X.X-all-languages/libraries/Message.class.php on line 601

Один из быстрых вариантов решения - поскольку я добавил функцию phpversion в список запрещенных функций - убрать из disable_functions.

Проверка, что функция действительно используется:

[user@host phpMyAdmin]$ grep -R phpversion *

libraries/export/latex.php:           .  '% ' . __('PHP Version') . ': ' . phpversion() . $crlf;
libraries/export/xml.php:           .  '- ' . __('PHP Version') . ': ' . phpversion() . $crlf
****


Проверка, что функция в списке запрещенных:
[user@host ~]$ grep disable_func /etc/php.ini
disable_functions = *** phpversion ***


Убираем из списка, рестартуем apache или php-fpm. смотря что у вас используется.
[user@host ~]$ sudo service httpd restart
или
[user@host ~]$ sudo service php-fpm restart

понедельник, 7 ноября 2011 г.

Как уменьшить размер LVM-тома

Собственно, небольшая напоминалка для себя. Руководств на эту тему полным полно в интернете, поэтому приведу только последовательность действий и несколько комментариев.
Итак, задача - уменьшить размер LVM-тома. Сразу скажу, что том НЕ системный. Посмотрим на список групп разделов. vgdb02 - группа разделов, myvol01 - единственный раздел в группе vgdb02. его и будем уменьшать на 45 Гигов.

$ sudo vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  vg01     1   2   0 wz--n-  59,80g     0 
  vgdb02   1   1   0 wz--n- 300,00g  0

Выполнять действия будем от пользователя root:

[user@vDB02 ~]$ sudo su -
Смотрим куда смонтирован раздел:
[root@vDB02 ~]# mount | grep db
/dev/mapper/vgdb02-myvol01 on /var/lib/mysql type ext4 (rw,nobarrier,commit=15)

Данный раздел используется под БД mysql, поэтому необходимо остановить сервис mysql:

[root@vDB02 ~]# service mysqld stop
Stopping mysqld:                                           [  OK  ]

Отмонтируем раздел под БД, поскольку его надо будет проверить на ошибки с помощью e2fsck. Если вылезут ошибки при отмонтировании - посмотреть lsof или kuser, кто еще использует данный раздел.
[root@vDB02 ~]# umount /var/lib/mysql/

Проверка файловой системы:
[root@vDB02 ~]# e2fsck -f /dev/mapper/vgdb02-myvol01
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vgdb02-myvol01: 1531/19660800 files (9.4% non-contiguous), 1527657/78642176 blocks
В первую очередь уменьшаем размер файловой системы! Это важно не перепутать - сначала размер ФС, потом размер раздела. На всякий случай, уменьшаем размер файловой системы чуть больше, нежели размер раздела, потом увеличим до упора.
[root@vDB02 ~]# resize2fs /dev/mapper/vgdb02-myvol01 250G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vgdb02-myvol01 to 65536000 (4k) blocks.
The filesystem on /dev/mapper/vgdb02-myvol01 is now 65536000 blocks long.
Уменьшаем размер раздела:
[root@vDB02 ~]# lvreduce -L 255G /dev/mapper/vgdb02-myvol01 
  WARNING: Reducing active logical volume to 255.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvol01? [y/n]: y
  Reducing logical volume myvol01 to 255.00 GiB
  Logical volume myvol01 successfully resized
Расширяем размер файловой системы до размера раздела:
[root@vDB02 ~]# resize2fs /dev/mapper/vgdb02-myvol01
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vgdb02-myvol01 to 66846720 (4k) blocks.
The filesystem on /dev/mapper/vgdb02-myvol01 is now 66846720 blocks long.
Монтируем все файловые системы из /etc/fstab, проверяем, что измененный раздел имеет нужный размер:
[root@vDB02 ~]# mount -a
[root@vDB02 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  vg01     1   2   0 wz--n-  59,80g     0 
  vgdb02   1   1   0 wz--n- 300,00g 45,00g

Запуск сервиса mysql:
[root@vDB02 ~]# service mysqld start

Собственно, все.