пятница, 25 ноября 2011 г.

Cisco 7940G power via PoE Ubiquiti

Появился у меня цискофон Cisco 7940G.
Без блока питания. :)
Надо как-то подать 48 вольт, но не понятно как.
Покупать поделки на радиорынке совсем не хотелось и еще хотелось, чтобы меньше кабелей к телефону шло. И так комп от телефона подключен и сам телефон. Уже два кабеля!
Выход один: брать PoE адаптер и при помощи его подавать 48 вольт на телефон.

Купил Ubiquiti UBI-POE-48-5 адаптер. Вроде все по стандарту.

Подключил к этому адаптеру телефон циско и... нифига!
После всех моих мучений родился способ обжимки кабеля для того чтобы он смог питать с этого адаптера телефон. Вот он.
Сторона 1 (568-B):
  1. бел.оранжевый
  2. оранжевый
  3. бел.зеленый
  4. синий
  5. бел.синий
  6. зеленый
  7. бел.коричневый
  8. коричневый
Сторона 2 (вот тут все изменения):
  1. бел.оранжевый
  2. оранжевый
  3. бел.зеленый
  4. коричневый
  5. бел.коричневый
  6. зеленый
  7. синий
  8. бел.синий
Может кому пригодится! Пользуйтесь! :)

вторник, 25 октября 2011 г.

zfs: зеркало (mirror) или raidz* ?

Решил я разобраться в чем отличие зеркала из двух дисков mirror и raidz.
Оказывается отличие еще какое!!

RAIDZ -- это технология хранения данных ZFS, которая более дешевая, чем mirror в цене одинакового блока данных. mirror более дорогой, например в конфигурации 3 и более дисков. Представим хранилище из 4 дисков по 1тб. Рассмотрим два случая raidz и mirror. В случае raidz пользователю будет доступно 3Тб по цене 4Тб, а в случае с mirror пользователю будет доступно только 1Тб по цене 4Тб. Тут все просто.

Так, как каждый диск имеет статическое значение IOPS (кол-во операций ввода-вывода в секунду), то наиболее оптимальной по скорости будет пул из двух mirror по два диска в каждом. В случае mirror -- скорость пула будет 4 x IOPS, при этом емкость пула будет меньше. Зато RAIDZ дает выигрыш в емкости пула, в ущерб скорости. Скорость пула RAIDZ будет всего-лишь 1 x IOPS.

Таким образом, имея два диска не нужно создавать пул RAIDZ, мечтая, получить что-то невообразимое. Лучше создать MIRROR пул и получить при том же объеме лучшую производительность.

Когда нужна высокая скорость -- нужно выбирать MIRROR.


 Источник.

среда, 19 октября 2011 г.

nginx за 5 минут

Решил попробовать nginx.
Кругом читаю хвалебные отзывы о нем и грех не попробовать.
Нужно получить высокую скорость работы сайта.
До этого сайт обслуживался веб-сервером apache 2.2.21 на freebsd 8.2-stable.
Обновил порты при помощи
portsnap fetch update

Далее скомпилировал и установил порт:
cd /usr/ports/www/nginx
make install clean
Отредактировал /usr/local/etc/nginx/nginx.conf так -- добавил:
  proxy_set_header X-Forwarded-Host $host;
  proxy_set_header X-Forwarded-Server $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:8082;
В секцию location /.
Веб-сервер апач перенастроил на слушание хоста 127.0.0.1 и виртуальный хост перенастроил на порт 8082. Перечитал конфиг апача и запустил nginx.
Все работает.
Страничка вылетает на ура.
Спасибо Игорю Сысоеву за nginx! ;)

пятница, 16 сентября 2011 г.

ZFS и geli

Тесты показали, что лучше создавать шифрованные диски с заданным размером сектора. В моем случае размер сектора 4096 байт дал прирост скорости чтения в полтора раза. При этом скорость записи осталась прежней - на уровне 21-22МБ в секунду.

Используйте geli init ... -s 4096 ... - один ключик при создании позволит значительно изменить производительность шифрованного раздела.

четверг, 15 сентября 2011 г.

Создание шифрованного пула zfs в FreeBSD

Для шифрования в ядре FreeBSD есть GELI.
Достаточно быстрая и надежная штука.
Мне надо создать сервер, на котором будут хранится данные, доступ к которым не смогут получить нежелательные люди.

[root@new /]# geli init /dev/gpt/0disk2t
Enter new passphrase:
Reenter new passphrase:

Metadata backup can be found in /var/backups/gpt_0disk2t.eli and
can be restored with the following command:

        # geli restore /var/backups/gpt_0disk2t.eli /dev/gpt/0disk2t

[root@new /]# geli init /dev/gpt/1disk2t
Enter new passphrase:
Reenter new passphrase:

Metadata backup can be found in /var/backups/gpt_1disk2t.eli and
can be restored with the following command:

        # geli restore /var/backups/gpt_1disk2t.eli /dev/gpt/1disk2t

[root@new /]#

Далее надо подключить шифрованные диски в систему для создания пула:
[root@new /]# geli attach /dev/gpt/0disk2t
Enter passphrase:
[root@new /]# geli attach /dev/gpt/1disk2t
Enter passphrase:
[root@new /]#

Затем создать пул:
[root@new /]# zpool create data1 raidz /dev/gpt/0disk2t.eli /dev/gpt/1disk2t.eli

Сразу же решил проверить скорость записи, которая была на нешифрованном пуле в районе 32-34МБ в секунду, а скорость чтения была на уровне 86-95МБ в секунду.
Результаты такие:

[root@new /data1]# dd if=/dev/random of=5G bs=1024 count=5123600
5123600+0 records in
5123600+0 records out
5246566400 bytes transferred in 255.912170 secs (20501434 bytes/sec)
[root@new /data1]# dd if=5G of=/dev/null bs=1024
5123600+0 records in
5123600+0 records out
5246566400 bytes transferred in 147.344312 secs (35607526 bytes/sec)
[root@new /data1]#
Скорость стала заметно ниже и на чтении и на записи. Эх... что не сделаешь ради безопасности данных. :)

Запуск системы с zfs пулом из шифрованных дисков.
Я сомневался, что данные будут доступны в пуле raidz, если один из двух дисков будет недоступен. Поэтому до установки в бой решил провести тест.


Создал в пуле файл, сохранил его md5 сумму.
Перегрузил сервер с пулом data1 (см. выше).
После старта запустил команды:
[root@new ~]# geli attach /dev/gpt/0disk2t
[root@new ~]# zfs mount data1
и посмотрел на содержимое пула.
Файл с правильной суммой был на месте! Ура!
Однако zpool status ругался:
[root@new ~]# zpool status
  pool: data1
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-2Q
 scan: none requested
config:

        NAME                 STATE     READ WRITE CKSUM
        data1                DEGRADED     0     0     0
          raidz1-0           DEGRADED     0     0     0
            gpt/0disk2t.eli  ONLINE       0     0     0
            gpt/1disk2t.eli  UNAVAIL      0     0     0  cannot open

errors: No known data errors


Я ввел правильно пароль и подключил шифрованный диск 1disk2t.eli.
Дал команду:
[root@new ~]# zpool online  data1 gpt/1disk2t.eli
И пул у меня стал снова ONLINE!

Ура!
Можно не боятся потери бойцадиска даже с raidz!
Попробую сервер в тестовый бой поставить и посмотреть результаты.

Всем привет! :)

Привет!
Теперь и я в блоге. :)

Замерял скорость записи и чтения в zfs/mfs

Привет!
Довелось мне собрать сервер FreeBSD 8.2-STABLE за сентябрь 2011 года для одной организации. Было свободное время для теста.
Решил провести измерения скорости чтения и записи с дисков в разных вариантах создания пула zfs.

Диски, которые я использовал:
ad5: 1907729MB <Seagate ST32000641AS CC13> at ata2-slave UDMA100 SATA
ad7: 1907729MB <Seagate ST32000641AS CC13> at ata3-slave UDMA100 SATA

Материнка на этом сервере старая, поэтому и не включено и не используется ahci и поэтому диски adX, а не adaX.

Процессор и память на сервере:
Intel(R) Core(TM)2 Duo CPU     E4600  @ 2.40GHz (2402.36-MHz K8-class CPU)
real memory  = 4294967296 (4096 MB)
avail memory = 4093345792 (3903 MB)

Сперва я создал два диска в системе для простого пула zfs со всем доступным объемом и создаю пул:
[root@new /]# gpart create -s gpt ad5
ad5 created
[root@new /]# gpart create -s gpt ad7
ad7 created
[root@new /]# gpart add -t freebsd-zfs -l 0disk2t ad5

ad5p1 added

[root@new /]# gpart add -t freebsd-zfs -l 1disk2t ad7

ad7p1 added

[root@new /]# zpool create data1 /dev/gpt/0disk2t /dev/gpt/1disk2t
[root@new /]# zpool status data1
  pool: data1
 state: ONLINE
 scan: none requested
config:

        NAME           STATE     READ WRITE CKSUM
        data1          ONLINE       0     0     0
          gpt/0disk2t  ONLINE       0     0     0
          gpt/1disk2t  ONLINE       0     0     0

errors: No known data errors
[root@new /]#

Далее в пул данных я решил записать и прочитать 5Гб данных из /dev/random (для полноты теста) одинаковыми блоками по 1024 байт:
[root@new /data1]# dd if=/dev/random of=5G bs=1024 count=5123600
5123600+0 records in
5123600+0 records out
5246566400 bytes transferred in 153.215957 secs (34242950 bytes/sec)
[root@new /data1]# dd if=/dev/random of=5G bs=1024 count=5123600
5123600+0 records in
5123600+0 records out
5246566400 bytes transferred in 154.269003 secs (34009207 bytes/sec)
[root@new /data1]# dd if=5G of=/dev/null bs=1024
5123600+0 records in
5123600+0 records out
5246566400 bytes transferred in 55.372681 secs (94750088 bytes/sec)
[root@new /data1]# dd if=5G of=/dev/null bs=1024
5123600+0 records in
5123600+0 records out
5246566400 bytes transferred in 51.155295 secs (102561551 bytes/sec)
[root@new /data1]#
Таким образом средняя скорость записи получилась 34126078.5 байт в секунду, а чтения 98655819.5 байт в секунду.

Далее я создал пул mirror с этих же дисков и провел точно такие же эксперименты. Средняя скорость за два запуска dd вышла для записи 33746148.5 байт в секунду, а для чтения 75503666.0 байт в секунду.

Я попробовал пул из одного диска, средние скорости записи и чтения вышли 33665851.5 и 97765927.0 байт в секунду.


Потом сделал пул с одним из дисков, а второй диск отдал под log. Опять провел два запуска для записи и для чтения. Средняя скорость в этот раз вышла для записи 34071757.5 байт в секунду, а для чтения
 96930171.0 байт в секунду.

Еще сделал пул с одним диском, а второй отдал под cache. Средняя скорость записи 33854437.5, а чтения - 49479337.0 байт в секунду.

Создал пул raidz из двух дисков. Средние скорости записи и чтения вышли: 33169249.0 и 84283989.0 байт в секунду.

Создал пул raidz с кэшем в RAM:
[root@new /]# mdconfig -a -t malloc -s 128M
md0
[root@new /]# zpool create data1  raidz /dev/gpt/0disk2t /dev/gpt/1disk2t cache /dev/md0

Cредняя скорость записи вышла 32541843.5 байт в секунду, а чтения 84148245.5 байт в секунду.

Попробовал еще 128М из памяти добавить для log. Итого, пул получился raidz с cache и log по 128М. Средняя скорость записи вышла 32503220.0, а чтения - 84458088.0 байт в секунду.

Попробовал создать пул raidz с кешем 1024М. Существенного отличия в скоростях не получил.

Примонтировал /dev/md0 в /mnt. Попробовал там на размере в 900М те же тесты. И получил среднюю скорость записи 50817911.0, а чтения - 531232665.5 байт в секунду. Вау! :)

Выводы, которые я сделал.
Скорость записи на диски SATA в режиме UDMA100 не будет выше 32-34МБ в секунду. Хоть тресни! А вот скорость чтения в режиме работы mirror оказалась не такой высокой, как ожидалось. Скорость чтения в обычном пуле из двух дисков вышла самая высокая. Но мне для работы нужен надежный пул, который бы смог пережить потерю бойца диска. Поэтому остается mirror или raidz. Я выбрал второй вариант - raidz. Тем, кому нужен пул без всякой надежности на случай выхода из строя диска(-ов), то лучше всего использовать простой пул из дисков, он дает полный объем всех дисков и высокую скорость. Тем, кто создает надежный пул лучше использовать raidz и несколько дисков. Для быстрых файловых систем остается только использовать memory disk из RAM, минус которой пока только один - не сохраняется ничего после перезагрузки.