Использование tmpfs

20 03 2012

Очень часто встречаются задачи когда нужно заюзать быстрый кеш непонятного вида. Файловая система подходит для этого как ни что другое, но винчестер слишком медленный. На помощь приходит tmpfs, файловая система в памяти, взаимодействие с которой ОЧЕНЬ быстрое. На одном проекте я использую tmpfs для отдачи популярного видео-контента. Конструкция видимо выдержит гигабит при почти нулевой загрузке системы.

Как правило один раздел tmpfs у вас уже есть (/dev/shm). Желательно организовывать кеш отдельно, чтобы не препятствовать работе системы в случае его переполнения. Но если вам нужен большой кеш (как мне) – два кеша в памяти не уместятся, приходится юзать /dev/shm. В этом случае сразу переходим к разделу о ресайзе уже смонтированноо раздела. Также не забываем проверять какие разделы и какого размера примонтированы используя “mount -l” или “df -h”.

Итак, монтируем раздел (помним что не надо монтировать два раздела в одну точку (например 2 /dev/shm ):

mount -t tmpfs -o size=1G,mode=0777 tmpfs /space

Важной особенностью tmpfs является возможность ресайза “налету”, примерно вот так:

mount -o remount,size=2G /space

Это всё пригодится при краткосрочных задачах. Но теперь вспомним про ещё одну, не менее важную особенность tmpfs – после перезагрузки все созданные разделы уничтожатся. По этому если вам постоянно нужен раздел – пропишите его в /etc/fstab. Примерно так:

tmpfs      /space      tmpfs   defaults   0   0

Ресайзить tmpfs раздел непосредственно в консоли не рекомендую, после перезагрузки сервак опять примонтирует первоначальный размер и ваш контент не уместится. Потому если вам нужно изменить размер указанного в /etc/fstab раздела – открываем /etc/fstab и находим там строчку tmpfs (вашего, если у вас два раздела – не трогайте системный :) ) и указываем нужный размер:

tmpfs      /space      tmpfs   defaults,size=512m   0   0

(размеры могут быть записаны следующим образом: 512k, 512m, 512g)
А затем:

mount -o remount /space

Реанимация файловой системы Linux

10 01 2011

В винде это делают ndd и chkdisk, но что делать если у вас Linux (Centos)? Не переживайте, тут тоже есть штатное средство для проверки и исправления ошибок файловой системы.

Итак:

  1. При загрузке переходим в однопользовательский режим
  2. umount /, дабы не повредить чего полезного
  3. fsck -y -f -c /dev/hda1
  4. fsck -y -f -c /dev/sdaN

Параметры:

  • /dev/hda1 – ваш первый раздел,
  • /dev/hdaN – ваш последний раздел,
  • -y – отвечать Да на все вопросы,
  • -f – проверять диск даже если он “хороший”,
  • -с – искать и помечать bad blocks, если винт начал сыпаться – это нужно.

Рекомендую проверить все разделы. Мне помогло отсрочить покупку нового винта (авось надолго).


Сброс пароля root в Linux (Centos)

10 01 2011

Итак, исходные данные: вы забыли root пароль. ОС: Centos. Что делать… надо перейти в однопользовательский (single) режим. Если есть grub – пляшите. Если нет… не будем об этом…

Итак:

  1. При загрузке останавливаем загрузчик на GRUB нажатием любой кнопки.
  2. Выбираем нужную строчку и нажимаем e.
  3. Выбираем строчку с kernel (kernel  /vmlinuz-2.6.18-92.el5  ro  root=LABEL=/)
  4. Дописываем в конец строки single и нажимаем Enter
  5. Нажимаем b для загрузки системы
  6. После загрузки меняем пароль (passwd)

В том или ином виде это работает для всех Linux систем.

Что делать если у вас нет GRUB? Ставить GRUB.


Whereis

11 03 2010

На днях надо было добавить пользователя на сервер для теста скриптов набираю useradd и чуток в ступор погружаюсь:
[user@localhost home]$ useradd
-bash: useradd: команда не найдена

Гавно вопрос, как грится, счас засетапим! :)
[root@localhost backlinker]# yum install useradd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: mirror.yandex.ru
* base: mirror.yandex.ru
* centosplus: mirror.yandex.ru
* epel: mirror.yandex.ru
* extras: mirror.yandex.ru
* rpmforge: ftp-stud.fht-esslingen.de
* updates: mirror.yandex.ru
Reducing CentOS-5 Testing to included packages only
Finished
Setting up Install Process
No package useradd available.
Nothing to do

уже хуже… Может она называется по другому?… Вряд – ли, скорее всего входит в состав какого – нить пакета, а какого – х.з…. Что делать?

Уже хотел гуглить, но вспомнил что есть замечательная команда whereis! Набираем:
[user@localhost home]$ whereis useradd
useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz

Ура! Занавес :)


Установка модуля geoip в апач, centos

29 01 2010

Эта – же инструкция подойдёт для RHEL и Fedora.

При скачке всех файлов проверяйте чтобы они были последних версий. На момент произведения действий считается что апач уже установлен и работает (проверьте).

Итак, первое:
bash# yum install GeoIP GeoIP-devel httpd-devel
затем
bash# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
bash# gunzip GeoIP.dat.gz
bash# mv GeoIP.dat /var/lib/GeoIP/GeoIP.dat
bash# wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
bash# tar xzf mod_geoip2_1.2.5.tar.gz
bash# cd mod_geoip2_1.2.5

Если у вас стоит 64 битная OS – меняем /usr/lib -> /usr/lib64
bash# apxs -i -a -L/usr/lib -I/usr/include -lGeoIP -c mod_geoip.c

Открываем конфиг апача
bash# nano /etc/httpd/conf/httpd.conf
и проверяем наличие загрузки модуля и указания местоположения базы, если чего – то не хватает – добавляем.
LoadModule geoip_module /usr/lib64/httpd/modules/mod_geoip.so
GeoIPEnable On
GeoIPDBFile /var/lib/GeoIP/GeoIP.dat

Рестарт апача:
bash# /sbin/service httpd restart
В вашей системе это может быть service или /bin/service, проверяйте командой whereis service.

Должно показать [OK], если что – то другое – читаем ошибку и правим конфиг апача.


Добавляем юзера

16 02 2009

Взяли сервак, получили рута. Но работать под рутом нельзя, он только для настройки, нужно создать юзера. Сделать это просто:

useradd LOGIN

Создастся папка /home/LOGIN/ с правами этого юзера. Далее, чтобы присвоить ему пароль делаем:

passwd LOGIN

Вводим новый пароль и подтверждаем его. Затем:

su LOGIN

passwd

Меняем пароль, подтверждаем изменения. (Не спрашивайте зачем это надо).

Пользователь готов. Он имеет ssh вход (если установлен ssh) и ftp, если установлен ftp и т.д.


Создаём базу mysql

9 02 2009

Итак, пароль рутовый восстановили, переходим к созданию БД…

  1. Логинимся рутом к базе в шелле: mysql -uroot -pВАШ_ПАРОЛЬ mysql
  2. Создаём базу данных: create database ИМЯ_БАЗЫ_ДАННЫХ;
  3. Даём привилегии (доступ и право управления) пользователю, если его нет – он создастся:
    grant all on ИМЯ_БАЗЫ_ДАННЫХ.* to ИМЯ_ПОЛЬЗОВАТЕЛЯ identified by ‘ПАРОЛЬ’;
    Тут есть подводные камни: один и тот – же пользователь не может получить разные пароли для доступа к разным БД. Если такой пользователь уже есть – ему пропишется новый пароль
  4. Сбрасываем во внутенний кеш mysql данные по юзеру и доступу: flush privileges;

Вроде всё, если есть вопросы или что – то не пашет – пишите в комменты :)