Geom mirror: drive or slice

RAID-массивы не гарантируют 100%-ной надежности сохранности данных, но тем не менее, часто выручают и дают определенную надежность всей системе в целом. Так, при выходе из строя одного из дисков массива, систему можно поднять с живого диска или она сама продолжит работу, не заметив потери бойца.

Хороший домашний (и даже серверный) вариант рейда – GEOM MIRROR (gmirror). В RAID 1 (зеркале) может быть от 2-х жестких дисков, при нынешних ценах на накопители, два веника в рейде – то, что нужно для дома.

Если у вас уже установлена система FreeBSD, сделать рейд не составит большого труда:

# установите эту переменную, чтобы система разрешила работать с дисками
sysctl kern.geom.debugflags=16

# скопируйте MBR и таблицу разделов
dd if=/dev/ad4 of=/dev/ad6 bs=1M count=1

# создайте зеркальный массив
gmirror label -n -v -b round-robin gm0 /dev/ad4

# добавьте, чтобы загружался geom_mirror
# здесь стоит упомянуть, что у вас его может не быть вовсе,
# тогда придется пересобирать ядро =)
echo 'geom_mirror_load="YES"' >> /boot/loader.conf

# в /etc/fstab замените ad4 на mirror/gm0

# вставьте второй диск в массив
gmirror insert gm0 /dev/ad6

# запустите синхронизацию вручную
# если хотите, чтобы все происходило автоматически,
# не используйте ключ -n при создании зеркала
gmirror rebuild gm0 ad6

# любоваться на процесс сборки рейда можете командой
gmirror status
Читать остальную часть заметки »

Теги: , , , , , , , ,

Поиск в файлах

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

find . -name "*.*htm*" -exec grep -i "iframe" {} \; -print
find . -name "*.*htm*" -exec grep -i "iframe" '{}' \; -print
find /home -name '*.htm*' -exec grep -H 'fromCharCode' \{\} \;

Так можно удалить из очереди postfix письма с определенным текстом (спам-рассылку, например):

find /var/spool/postfix/deferred/ -name "*" -exec grep -i "SOMESPAM" {} \; |\
awk -F / '{print $7}' | awk '{print $1}' | postsuper -d -

А как найти файлы, в которых определенная строка не встречается?

Можно так:

find . -name "*.html" -print0 | xargs -0 grep -c "string" | grep ":0" | cut -d : -f 1

где “string” – строка, которой в файлах нет.

cut просто отрезает имя файла от количества нулевых вхождений подстроки “string”, если кому-то по душе awk, используйте в пайпе:

awk -F : '{print $1}'

Теги: , , , , , , , , ,

Интерактивное наблюдение

Все *nix’оиды знают команду top и аналоги – htop, mytop и т.д.  Аналогичны эти программы в своем принципе работы – постоянном (интерактивном) обновлении информации на экране.

А если нужно постоянно выводить на экран результат работы какой-то команлы или команд? Да еще и в удобном виде – с обновлением (очисткой) экрана. Как быть?

Способ #1

watch (для FreeBSD его родственник – gnu-watch)

Команда (gnu-)watch позволяет многократно запускать заданную команду или команды, выводя результат на экран. Примеры:

gnu-watch --differences=cumulative ls –la

Данная команда позволяет следить за файлами, при этом у измененных файлов будет подсвечен размер. Если не указывать cumulative, то изменение на экране будет подсвечено только один раз, при первом обнаруженном изменении во время обновления.
Я люблю наблюдать, как идет процесс сборки рейда:

gnu-watch -t gmirror status
Способ #2

работает везде при наличии bash

bash -c 'while true; do echo '^L'; gmirror status; echo; date; sleep 2; done'
# или так
bash -c 'while :; do clear; gmirror status; echo; date; sleep 2; done'

^L – в данном случае это !один! символ “Control-L”. Если вы просто нажмете эту комбинацию, то ничего не произойдет, точнее – вы очистите экран. Чтобы напечатался символ нужно прибегнуть к хитрости:

CTRL+V+L – о таком способе ввода непечатаемых символов я уже упоминал в этой статье.

Может пригодится ;)


Теги: , , , , , , , ,

Make and Enter

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

bash:

echo 'mkcd() { mkdir -p "$@" && cd "$_"; }' >> ~/.bashrc

csh (tcsh):

alias mkcd 'mkdir -p \!*; cd \!*'
(добавьте эту же строку в .cshrc)

ksh

alias mkcd='_(){ mkdir -p $1; cd $1; }; _'

Теперь пользуйтесь:

mkcd foo/bar

Enjoy!


Теги: , , , , , , , ,

Пограничные войны

Не секрет, что настоящую сильную DDoS-атаку может отбить (отфильтровать) только серьезная железка [магистрального] провайдера. Бороться своими силами (силами серверной ОСи) можно только с небольшими атаками и с разными другими мелкими неприятностями, как то подбор паролей (брутфорс), наплыв нецелевого траффика (китайцев на русский сайт :) ), взлом сайтов и т.п.

От наплыва посетителей из нежелательных стран можно бороться путем блокирования IP-адреса по коду страны, для этого понядобится установленный GeoIP и следующий  код в файле .htaccess:

SetEnvIf GEOIP_COUNTRY_CODE CN BadCountry
SetEnvIf GEOIP_COUNTRY_CODE TW BadCountry
Order Deny,Allow
Deny from env=BadCountry

Allow from 1.2.3.4 # разрешенный адрес заблокированнй страны
Allow from 2.3.4.5 # разрешенный адрес заблокированнй страны

Можно открыть доступ только определенным странам:

SetEnvIf GEOIP_COUNTRY_CODE UA GoodCountry
SetEnvIf GEOIP_COUNTRY_CODE RU GoodCountry
Order Allow,Deny
Allow from env=GoodCountry
Under Attack: рубим с плеча

Если сайт подвергается DDoS-атаке и вы определили, что все запросы идут из какой-то определенной страны, будет лучше, если заблокировать страну в фаерволе, чтобы не было большой нагрузки на Apache.

 

Читать остальную часть заметки »

Теги: , , , , , , , , , , , , , , , , ,

csh in single mode on FreeBSD

Если вы любите оболочку csh и редактор ee (Easy Editor), возможно вы сталкивались со следующей проблемой. При загрузке в однопользовательском режиме (4 – single mode), требуется ввести путь к оболочке, по умолчанию это /bin/sh. Если вы вводите /bin/csh – он ругается на невозможность открыть /etc/termcap. Когда вы пытаетесь редактировать в редакторе ee какой-нибудь файл, текст на консоли выглядит как сплошное месиво.

Красная таблетка

Лечится это очень легко. Достаточно указать правильный тип терминала:

setenv TERM cons25

Все, теперь, даже несмотря на то, что терминал не подхватил настройки и украшательства из файла .cshrc, csh жив и вполне юзабелен.


Теги: , , , , , , , , , , , ,

Цветик-семицветик

Маленькое дополнение к статье о раскраске tcsh.

Если, после настроек цветов, нажать TAB, то файлы и каталоги выведутся раскрашенными, согласно наших настроек, и будут раскрашены определенные типы файлов (по названиям расширений). Но если просто набрать ls, ничего подобного не произойдет. Почему?

Все потому, что tcsh использует цвета из переменной LSCOLORS, а не LS_COLORS. Вместо ls можно использовать ls-F, встроенный в tcsh:

ls-F [-Option(s)] [file ...]
	       This built-in is just like `ls -F', but much faster.


Если ls-F вызывать с параметрами, он передаст их обычному ls:

ls-F passes its arguments to ls if it is given any switches,
so `alias ls ls-F' generally does the right thing.


Итак, добавляем алиас:

alias ls ls-F


и радуемся цветам :)


Теги: , , , , , , ,