Posts Tagged ‘lock’

Протокол STP — как оно работает

Написал admin . Опубликовано в Network просмотров 11 426

Так себеПойдетХорошоПонравилосьОтличный пост (4 votes, average: 4,00 out of 5)
Загрузка...

Введение

Как известно, грамотный дизайн отказоустойчивой сети подразумевает использование резервирования каналов. Наиболее подходящей для этого является кольцевая топология. Однако, в случае построения сети по технологии Ethernet в чистом виде, множественные связи между узлами не предусмотрены и могут привести к полной неработоспособности всей конструкции. Например, в случае попадания в кольцо широковещательного пакета, он будет передаваться активным оборудованием по кругу бесконечно, обеспечивая предельную загрузку. Для предотвращения подобных ситуаций был создан специальный протокол Spanning Tree Protocol (STP).

Сборка модулей CPAN (gcc) под Solaris

Написал admin . Опубликовано в Solaris просмотров 137

Так себеПойдетХорошоПонравилосьОтличный пост (No Ratings Yet)
Загрузка...

Делаем ссылку на рабочий gcc

ln -s /usr/sfw/bin/gcc /usr/ccs/bin/ucbcc

Убираем лишние оптимизации — gcc их не понимает

vim /usr/perl5/5.8.4/lib/i86pc-solaris-64int/Config.pm

diff

164c164
< cccdlflags='-KPIC'
---
> cccdlflags=''
889c889
< optimize='-xO3 -xspace -xildoff'
---
> optimize='-O3'

Восстановление PostgreSQL после повреждения файлов XLOG

Написал admin . Опубликовано в Databases просмотров 10 181

Так себеПойдетХорошоПонравилосьОтличный пост (7 votes, average: 4,29 out of 5)
Загрузка...

Бывают случаи, когда файлы журнала транзакций (pg_xlog) могут быть повреждены или случайно удалены. В таком случае PGSQL не сможет работать и просто не запустится с подобной ошибкой:

Jul 4 11:30:18 database postgres[92997]: [1-1] LOG: database system was interrupted at 2009-07-04 11:24:30 MSD
Jul 4 11:30:18 database postgres[92997]: [2-1] LOG: could not open file "pg_xlog/000000010000031A00000027" (log file 794, segment 39): No such file or directory
Jul 4 11:30:18 database postgres[92997]: [3-1] LOG: invalid primary checkpoint record
Jul 4 11:30:18 database postgres[92997]: [4-1] LOG: could not open file "pg_xlog/000000010000031A00000026" (log file 794, segment 38): No such file or directory
Jul 4 11:30:18 database postgres[92997]: [5-1] LOG: invalid secondary checkpoint record
Jul 4 11:30:18 database postgres[92997]: [6-1] PANIC: could not locate a valid checkpoint record

Найти поврежденный xlog-файл вряд ли получится, поэтому выход один — очистить информацию в БД об используемых логах. Для этого есть штатная утилита pg_resetxlog

Отключаем сервисы в Zone

Написал admin . Опубликовано в Solaris просмотров 214

Так себеПойдетХорошоПонравилосьОтличный пост (No Ratings Yet)
Загрузка...

После инсталляции зоны, желательно отключить в ней следущие сервисы:

svcadm disable network/smtp
svcadm disable network/telnet
svcadm disable network/ftp
svcadm disable network/finger
svcadm disable network/login:rlogin
svcadm disable network/shell:default
svcadm disable application/x11/xfs
svcadm disable network/rpc/rstat
svcadm disable network/rpc/rusers
svcadm disable network/rpc/smserver
svcadm disable network/rpc/gss
svcadm disable network/rpc/rquota
svcadm disable network/rpc/cde-calendar-manager
svcadm disable network/rpc/cde-ttdbserver
svcadm disable network/nfs/client
svcadm disable network/nfs/cbd
svcadm disable network/nfs/mapid
svcadm disable network/nfs/status
svcadm disable network/nfs/nlockmgr
svcadm disable network/nfs/rquota
svcadm disable network/stdiscover
svcadm disable network/stlisten
svcadm disable network/cde-spc
svcadm disable network/rpc-100235_1/rpc_ticotsord
svcadm disable network/security/ktkt_warn

Расположение rpool на части диска

Написал admin . Опубликовано в Solaris просмотров 250

Так себеПойдетХорошоПонравилосьОтличный пост (1 votes, average: 5,00 out of 5)
Загрузка...

Задача установить систему, а именно rpool не на весь диск, а на часть, дабы оставшуюся часть использовать под доп.нужды.

И так, что мы имеем:

Диск #1 - c1t0d0s0
Диск #2 - c1t1d0s0

Что делаем далее…

1. Ставим систему на первый диск на fdisk-партицию ~30гб (размечаем прямо в исталяторе, создаем fdisk-партицию не на весь диск, а только необходимое для системы место)

Чистая fdisk-партиция без разбивки на слайсы выглядит так:

Current partition table (original):
Total disk cylinders available: 60797 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 unassigned wm 0 0 (0/0/0) 0
2 backup wu 0 — 60796 931.46GB (60797/0/0) 1953407610
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 — 0 15.69MB (1/0/0) 32130
9 unassigned wm 0 0 (0/0/0) 0

Отрезаем от нее 30гб под s0 (rpool может находиться только на s0). Получаем:

Current partition table (original):
Total disk cylinders available: 60797 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 root wm 1 — 1821 27.90GB (1821/0/0) 58508730
1 unassigned wm 0 0 (0/0/0) 0
2 backup wu 0 — 60796 931.46GB (60797/0/0) 1953407610
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 — 0 15.69MB (1/0/0) 32130
9 unassigned wm 0 0 (0/0/0) 0

2. На втором диске делаем fdisk-партицию на весь диск и в нем s0 аналогичный первому диску и s1 на все оставшееся место (потом это будет часть пула для базы или еще чего полезного).

Current partition table (original):
Total disk cylinders available: 60797 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 root wm 1 — 1821 27.90GB (1821/0/0) 58508730
1 usr wm 1822 — 60796 903.54GB (58975/0/0) 1894866750
2 backup wu 0 — 60796 931.46GB (60797/0/0) 1953407610
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 — 0 15.69MB (1/0/0) 32130
9 unassigned wm 0 0 (0/0/0) 0

3. Подключаем s0 второго диска как зеркало к rpool и ждем полной синхронизации

zpool attach rpool c1t0d0s0 c1t1d0s0

4. С помощью скрипта или ручками проставляем grub на новый диск (все половинки зеркала должны иметь grub для возможности дальнейшей загрузки с любой из них)

5. Отключаем первый диск от rpool и пробуем загрузиться со второго диска. Если Вы не забыли проставить grub на второй диск, то система загрузится.

6. Разбиваем первый диск так же как и второй диск

#zpool detach rpool c1t0d0s0

# format
Searching for disks…done

AVAILABLE DISK SELECTIONS:
0. c1t0d0
/[email protected],0/pci15d9,[email protected],2/[email protected],0
1. c1t1d0
/[email protected],0/pci15d9,[email protected],2/[email protected],0
Specify disk (enter its number): 0
selecting c1t0d0
[disk formatted]

FORMAT MENU:
disk — select a disk
type — select (define) a disk type
partition — select (define) a partition table
current — describe the current disk
format — format and analyze the disk
fdisk — run the fdisk program
repair — repair a defective sector
label — write label to the disk
analyze — surface analysis
defect — defect list management
backup — search for backup labels
verify — read and display labels
save — save new disk/partition definitions
inquiry — show vendor, product and revision
volname — set 8-character volume name
! — execute , then return
quit
format> fdisk
Total disk size is 60800 cylinders
Cylinder size is 32130 (512 byte) blocks

Cylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Active Solaris2 1 60799 60799 100

SELECT ONE OF THE FOLLOWING:
1. Create a partition
2. Specify the active partition
3. Delete a partition
4. Change between Solaris and Solaris2 Partition IDs
5. Exit (update disk configuration and exit)
6. Cancel (exit without updating disk configuration)
Enter Selection: 6

format> p

PARTITION MENU:
0 — change `0′ partition
1 — change `1′ partition
2 — change `2′ partition
3 — change `3′ partition
4 — change `4′ partition
5 — change `5′ partition
6 — change `6′ partition
7 — change `7′ partition
select — select a predefined table
modify — modify a predefined partition table
name — name the current table
print — display the current table
label — write partition map and label to the disk
! — execute , then return
quit
partition> p
Current partition table (original):
Total disk cylinders available: 60797 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 root wm 1 — 1821 27.90GB (1821/0/0) 58508730
1 usr wm 1822 — 60796 903.54GB (58975/0/0) 1894866750
2 backup wu 0 — 60796 931.46GB (60797/0/0) 1953407610
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 — 0 15.69MB (1/0/0) 32130
9 unassigned wm 0 0 (0/0/0) 0

partition> q

FORMAT MENU:
disk — select a disk
type — select (define) a disk type
partition — select (define) a partition table
current — describe the current disk
format — format and analyze the disk
fdisk — run the fdisk program
repair — repair a defective sector
label — write label to the disk
analyze — surface analysis
defect — defect list management
backup — search for backup labels
verify — read and display labels
save — save new disk/partition definitions
inquiry — show vendor, product and revision
volname — set 8-character volume name
! — execute , then return
quit
format> q

Не забываем после разбивки партишенов их сохранить с помощью label!

7. Подключаем s0 первого диска как зеркало к rpool и ждем полной синхронизации и ставим grub

zpool attach rpool c1t1d0s0 c1t0d0s0

8. Смотрим что получилось

# zpool status
pool: rpool
state: ONLINE
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror ONLINE 0 0 0
c1t1d0s0 ONLINE 0 0 0
c1t0d0s0 ONLINE 0 0 0

errors: No known data errors

В итоге мы имеем первые два диска с одной fdisk-партицией на весь диск, на которой есть s0 для rpool + s1 для базы.

9. Теперь можно оставшиеся слайсы s1 обоих дисков включить в какой нибудь новый пул. К примеру я добавил еще два диска и сделал двойное зеркало.

# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
rpool 27,8G 2,68G 25,1G 9% ONLINE -
tank 1,78T 97K 1,78T 0% ONLINE -

# zpool status
pool: rpool
state: ONLINE
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror ONLINE 0 0 0
c1t1d0s0 ONLINE 0 0 0
c1t0d0s0 ONLINE 0 0 0

errors: No known data errors

pool: tank
state: ONLINE
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror ONLINE 0 0 0
c1t2d0s1 ONLINE 0 0 0
c1t3d0s1 ONLINE 0 0 0
mirror ONLINE 0 0 0
c1t0d0s1 ONLINE 0 0 0
c1t1d0s1 ONLINE 0 0 0

errors: No known data errors

Поднимаем NFS на Solaris 10

Написал admin . Опубликовано в Solaris, Storage просмотров 2 119

Так себеПойдетХорошоПонравилосьОтличный пост (No Ratings Yet)
Загрузка...

1. Включаем NFS сервер:

svcadm -v enable -r network/nfs/server

2. Расшариваем шару через NFS

share -F nfs -o rw /disk

Шара будет активна только до перезагрузки. Чтобы после перезагрузки шара автоматом шарилась, надо добавить в /etc/dfs/dfstab

share -F nfs -o rw /disk

3. На клиенте для подключения к нашей NFS шаре:

mount -F nfs server:/disk /mount_point

Шара будет подключена только до перезагрузки. Чтобы после перезагрузки шара автоматом цеплялась, надо добавить в /etc/vfstab:

server:/disk - /mount_point nfs - yes rw,soft

Блокировки в репозитории CVS

Написал admin . Опубликовано в Unix просмотров 152

Так себеПойдетХорошоПонравилосьОтличный пост (No Ratings Yet)
Загрузка...

Видимое пользователем поведение блокировок CVS описано в section Совместный доступ нескольких разработчиков к CVS. Эта глава ориентирована на людей, пишущих утилиты, обращающиеся к репозиторию CVS, не конфликтуя при этом с другими программами, обращающимися к тому же репозиторию. Если вы запутаетесь в описываемых здесь концепциях, как то блокировка чтения, блокировка записи и мертвая блокировка, то обратитесь к литературе по операционным системам или базам данных.

Файлы в репозитории, чьи имена начинаются с `#cvs.rfl’ — это блокировки чтения. Файлы, чьи имена начинаются с `#cvs.wfl’ — это блокировки записи. Старые версии CVS (до @cvsver{1.5}) создавали также файлы с именами, начинающимися с `#cvs.tfl’, но такие файлы здесь не обсуждаются. Каталог `#cvs.lock’ служит основной блокировкой, то есть перед тем, как создавать какую-либо еще блокировку, сначала необходимо создать основную блокировку.

Чтобы создать блокировку чтения, сначала создайте каталог `#cvs.lock’. В большинстве операционных систем операция создания каталога является атомарной. Если попытка создания завершилась неудачно, значит, основная блокировка уже существует, поэтому подождите немного и попробуйте еще. После получения блокировки `#cvs.lock’ создайте файл, чье имя состоит из `#cvs.rfl’, и информацией по вашему выбору, например, имя машины и номер процесса. Потом удалите каталог `#cvs.lock’, чтобы снять основную блокировку. Теперь можно читать репозиторий. Когда чтение окончено, удалите файл `#cvs.rfl’, чтобы снять блокировку чтения.

Чтобы получить блокировку записи, сначала создайте каталог `#cvs.lock’, как и в случае с блокировкой чтения. Затем убедитесь, что в репозитории нет файлов, чьи имена начинаются с `#cvs.rfl’. Если они имеются, удалите `#cvs.lock’, подождите немного и попробуйте снова. Если блокировок чтения нет, создайте файл с именем, состоящим из `#cvs.wfl’ и какой-нибудь информации по вашему выбору, например, имени машины и номера процесса. Не удаляйте блокировку `#cvs.lock’. Теперь вы можете писать в репозиторий. Когда запись окончена, сначала удалите файл `#cvs.wfl’, а затем каталог `#cvs.lock’. Заметьте, что в отличие от файла `#cvs.rfl’, файл `#cvs.wfl’ имеет чисто информационное значение; он не оказывает блокирующего эффекта, который в данном случае достигается использованием главной блокировки (`#cvs.lock’).

Заметьте, что каждая блокировка (чтения или записи) блокирует единственный каталог в репозитории, включая `Attic’ и `CVS’, но не включая подкаталоги, которые представляют собой другие каталоги, находящиеся под контролем версий. Чтобы заблокировать целое дерево, вам следует заблокировать каждый каталог (заметьте, что если вы не сможете получить хотя бы одну блокировку в этом процессе, то следует отменить все уже полученные блокировки, затем подождать и попробовать снова, во избежание мертвых блокировок.)

Заметьте также, что CVS ожидает, что доступ к отдельным файлам `foo,v’ контролируется блокировками записи. RCS использует в качестве блокировок файлы `,foo,’, но CVS не поддерживает такую схему, поэтому рекомендуется использование блокировки записи. Смотри комментарии к rcs_internal_lockfile в исходном коде CVS, где находится дополнительное обсуждение и мотивация.

Защита от легкой flood и ddos атаки по HTTP-протоколу используя mod_dosevasive

Написал admin . Опубликовано в Unix просмотров 547

Так себеПойдетХорошоПонравилосьОтличный пост (No Ratings Yet)
Загрузка...

Защита от ddos
mod_evasive — (mod_dosevasive) HTTP DoS or DDoS attack or brute force attack
Apache модуль для организации защиты от DDoS атак.

Преамбула
Не стоит думать что слабый ddos не сможет нанести ущерба вашему серверу. Например атакующих зомби-машин всего 50-150, все они с толстыми каналами, а вы уехали в командировку или у вас 10-ки серверов и вы не успеваете физически мониторить все.

В таком случае даже не большое количество машин смогут зафлудить канал, или заставить выйти из строя веб сервер apache, mysql, etc. Другое дело когда администратор 24 часа в сутку мониторит сервер, и с легкостью обнаруживает атаки, далее с легкостью и в считанные секунды заносит несколько правил в таблицу фаервола при этом спокойно попивая кофе, продолжает заниматься своими делами. Но такое бывает редко, смотреть сутками и мониторить вывод комманд netstat, top, mtop убийственно для вашего мозга, и глаза устанут, не будет весело это точно, поэтому нужно автоматизировать процесс блокировки атакующих зомби-машин.

Один из методов как защитить свой сервер от флуд атак и слабого ddos-a по http протоколу это установить модуль для веб-сервера Apache — mod_dosevasive.

Меняем ленточку

Написал admin . Опубликовано в Unix просмотров 80

Так себеПойдетХорошоПонравилосьОтличный пост (No Ratings Yet)
Загрузка...

Перематываем и переводим в офлайн загруженную ленточку

mt -f /dev/tape rewoffl

Вынимаем и загружаем другую

mtx unload
mtx load

Похожие статьи:

PostgreSQL: аналитика для DBA

Написал admin . Опубликовано в Databases просмотров 634

Так себеПойдетХорошоПонравилосьОтличный пост (No Ratings Yet)
Загрузка...

Многие пользователи СУБД PostgreSQL знают, что сервер во время своей работы собирает разнообразную статистику, но не все знают, что ее полезно анализировать и как ее извлекать для этого. В этом небольшом тулките собраны несколько полезных запросов, дающих некоторое представление о том, как использовать это «скрытое знание», которое постоянно копится. Эти запросы можно использовать для мониторинга состояния PostgreSQL (ручного или с помощью плагинов для систем мониторинга вроде Nagios, Cacti или Zabbix), для поиска узких мест в работе сервера и многих других подобных задач. Помните, что это лишь верхушка айсберга; в документации можно найти описания нескольких десятков системных представлений, которые также могут быть полезны администратору PostgreSQL.

Для корректной работы тулкита необходимо включить опции stats_block_level и stats_row_level в postgresql.conf, а также настроить параметр stats_reset_on_server_start по своему усмотрению. Если при каждом перезапуске сервера PostgreSQL вы меняете какие-то существенные параметры его конфигурации, имеет смысл обнулять статистику, чтобы отслеживать эффект внесенных изменений. Если же вас интересует долгосрочная перспектива и рестарт производится не вследствие изменения конфигурации PostgreSQL, ставьте параметр stats_reset_on_server_start в значение off.