25 февр. 2012 г.

Файловая система Ceph

Важные отличия от других распределенных файловых систем

  1. Поддерживает автоматическую репликацию данных между серверами.
  2. Поддерживает моментальные снимки пользовательских папок
  3. Находится в стадии разработки, не рекомендована для промышленного применения, тем не менее уже входит в стандартные пакеты Ubuntu и ядро Linux.

Настройка сервера, Ubuntu

Изначально имеет: Ubuntu Server в минимальном варианте внутри VMWare, на жестком диске файловая система / – Ext4, /data – btrfs

Всё выполняем от имени root (oneiric – название дистрибутива, на сайте есть список поддерживаемых)

wget -q -O- https://raw.github.com/NewDreamNetwork/ceph/master/keys/release.asc \
| apt-key add -
tee /etc/apt/sources.list.d/ceph.list <<EOF
deb http://ceph.newdream.net/debian/ oneiric main
deb-src http://ceph.newdream.net/debian/ oneiric main
EOF
apt-get update

apt-get install ceph

Прописать в hosts IP-адреса ваши сервера s0, s2, s3

Создать файл cluster.conf

[global]
	auth supported = cephx
	keyring = /etc/ceph/$name.keyring

[mon]
	mon data = /data/mon.$id

[mds]

[osd]
	osd data = /data/osd.$id
	osd journal = /data/osd.$id.journal
	osd journal size = 1000

[mon.a]
	host = s1
	mon addr = 192.168.59.10:6789

[mon.b]
	host = s2	mon addr = 192.168.59.12:6789

[mon.c]
	host = s3
	mon addr = 192.168.59.13:6789

[osd.0]
	host = s1
[osd.1]
	host = s2

[osd.2]
	host = s3

[mds.a]
	host = s1
Создать на каждом сервере папку с данными, например для s0 mkdir /data/osd.0
Сделать безпарольную авторищацию по ssh между серверами.
На каждом сервере создаем свою папку для данных, например на c1 это выглядит так:
mkdir /data/osd.0
На каждом сервере:
mkdir /var/run/ceph
Затем на главном
mkcephfs -a -c cluster.conf -k cluster.keyring
Скопировать на каждый сервер cluster.conf в /etc/ceph/ceph.conf и выполнить /etc/init.d/ceph start
Подождать, пока кластер войдет в рабочее состояние, проверить это можно командой
ceph -k cluster.keyring -c cluster.conf health
Должна появиться надпись:
2011-09-06 12:33:51.561012 mon <- [health]
2011-09-06 12:33:51.562164 mon2 -> 'HEALTH_OK' (0)
На главном сервере:
ceph -k cluster.keyring -c cluster.conf auth list


client.admin
        key: AQCBJUlPuIarKRAA1dP4J+Kq+8P0fyZK6MqENg==
        caps: [mds] allow
        caps: [mon] allow *
        caps: [osd] allow *
Отсюда нужна строка key, её вставим в клиента.

Настройка клиента, Ubuntu 11.10

Изначально имеет: Ubuntu Server в минимальном варианте внутри VMWare, на жестком диске файловая система / – Ext4, /data – btrfs

Всё выполняем от имени root (oneiric – название дистрибутива, на сайте есть список поддерживаемых)

wget -q -O- https://raw.github.com/NewDreamNetwork/ceph/master/keys/release.asc \
| sudo apt-key add -
tee /etc/apt/sources.list.d/ceph.list <<EOF
deb http://ceph.newdream.net/debian/ oneiric main
deb-src http://ceph.newdream.net/debian/ oneiric main
EOF
apt-get update

apt-get install ceph

mkdir /ceph

mount -t ceph 192.168.59.10:6789:/ /ceph/ -vv -o name=admin,secret=AQCBJUlPuIarKRAA1dP4J+Kq+8P0fyZK6MqENg==

secret – строка, полученная при настройке сервера

Тест внутри VMWare на домашнем ноутбуке

На домашнем ноутбуке настроил кластер из 3-х серверов, по 512МБ памяти на каждом, подключил к ним 3-х клиентов. На положить-отдать файл всё работает, изменения показываются.

Запустил на одном из клиентов bonnie++. Некоторое время всё работало, потом подвисло на стадии “Delete files in random order...”, два сервера хранения из 3-х заняты на 100% процессами (на одном cosd, на втором cmon). Запустил ls /ceph на одном из клиентов – завис намертво.

Из-за чего завис непонятно – может просто ресурсов нехватило – на каждом сервере было 512МБ памяти, а рекомендуется несколько гигабайтов. Надо пробовать на более мощном железе.

Тест внутри Hyper-V

В кластере 3 серверные машины, на каждой 4 ядра процессора и 4Гб памяти,  Linux s2 3.0.0-12-generic-pae #20-Ubuntu SMP Fri Oct 7 16:37:17 UTC 2011 i686 i686 i386 GNU/Linux

1 Сервер метаданных, 3 сервера с данными, 2 клиента, нагрузка с одного клиента, вторым наблюдаю изменения визуально

Провожу нагрузочный тест bonnie++.

Эталон bonnie++ на локальной файловой системе выполнялся 7 минут, на распределенной выполняется уже больше 5 часов, думаю конкретных цифр можно уже не дожидаться. Попробовал перенести файлы журналов в память (tmpfs) кардинальных изменений не увидел – за 40 минут выполнились только первые 2 теста.

При выключении кластера обращения к нему с клиентских машин просто зависают, вместо того чтобы отвалиться.

При удалении через rm –rf папок внутри ceph на 32-битных клиентах возникает ошибка, что папка ресурсивно зациклена, в багрепортах отмечено что это из-за 32-битности – inode 64-битные и 32-битная уникальность не соблюдается.

В общем для использования на данный момент не подходит.

14 февр. 2012 г.

Настройка OpenVPN в Windows по шагам

Настройка OpenVPN с авторизацией по ключам. Клиенты могут общаться с сервером и использовать его как шлюз в интернет (тут не описано), но не могут общаться между собой.

Действия на сервере:

  1. Скачайте и установите OpenVPN на сервер. Скачать можно с официального сервера или у меня.
  2. Создать папку c:\keys
  3. Открыть командную строку для папки c:\Program Files (x86)\OpenVPN\easy-rsa\
  4. запустить init-config.bat
  5. Поправить vars.bat
    • set KEY_DIR=c:\keys
  6. Выполнить build-dh.bat
  7. Выполнить build-ca.bat
  8. Выполнить build-key-server.bat <имя сервера>
  9. Для каждого клиента выполнить build-key.bat <имя клиента>
    • Для каждого клиента указывать уникальные значения Common Name и Name

Конфиг сервера:

ifconfig 192.168.8.1 255.255.255.0
dev tap
port 35900
proto tcp-server
mode server
tls-server
dh c:/keys/dh1024.pem
ca c:/keys/ca.crt
cert c:/keys/<имя сервера>.crt
key c:/keys/<имя сервера>.key

Действия на клиенте

  1. Скачайте и установите OpenVPN.
  2. Создайте папку c:\keys
  3. С сервера скопируйте в неё файлы: ca.crt, <имя пользователя>.crt, <имя пользователя>.key

Конфиг клиента:

ifconfig 192.168.8.2 255.255.255.0
dev tap
remote <Доменное имя или IP-адрес сервера>
rport 35900
proto tcp-client
connect-retry 1
connect-retry-max 605000 # about 1 week
resolv-retry 10
nobind
tls-client
ca c:/keys/ca.crt
cert c:/keys/<имя клиента>.crt
key c:/keys/<имя клиента>.key

У каждого клиента должен быть свой ключ и свой IP-адрес.

8 февр. 2012 г.

Samsung Galaxy S2 Hard reset

  1. Вытащить аккумулятор
  2. Подождать минимум 10 секунд
  3. Нажать кнопку прибавления громкости и не отпускать
  4. Нажать кнопку Home (аппаратная на передней панели телефона) и не отпускать
  5. Нажать внопку Вкл и не отпускать
  6. При появлении первой надписи отпустить все кнопки
  7. В появившемся меню кнопками громкости выбрать wipe data/factory reset и нажать Home
  8. Выбрать reboot system now и нажать Home
UPDATE: при полном сбросе могут сброситься точки доступа к GPRS/3G. Подробнее.

2 февр. 2012 г.

Качественный голосовой набор для Android

Программа Cyberon Voice Commander.

https://market.android.com/details?id=com.cyberon.cvc.RUS

Хорошо работает с русским языком в уличных условиях при нормальной речи с естественной четкостью речи.

Когда то давно я пользовался нокиями, там была замечательная функция – голосовой набор, который просто работал. На Android я тоже давно искал такую программу, чтобы можно было звонить по телефону прямо с ганитуры, не вынимая его. Сегодня я такую программу нашел. Она неимоверна проста и удобна в использовании. На её изучение потребовалось несколько секунд чтобы начать пользоваться и еще пара минут для того чтобы понять что и где можно поднастроить (например количество цифр для цифрового набора номера и тренировка под цифры).

Умеет:

  1. Звонить по имени в записной книжке (называть сначала имя, потом фамилию).
  2. Цифровой набор (набирает диктуемый номер)
  3. Повторный набор последнего номера
  4. Перезвонить тому, кто звонил последним
  5. Показать на экране журнал звонков
  6. Показать контакт по имени
  7. Запустить программу
  8. Сказать текущее время

Запуск программы из коробки работает плохо – распознает в основном русские названия программ. Однако для любой программы/контакта можно добавить голосовой тег и снять отметки с программ/контактов которые распознаваться не должны.

Для контактов желания добавлять теги пока нет – всё и так хорошо распознается, а на некоторые программы пожалуй назначу – голосом получается запускать очень быстро.

 

При звонке диалог с программой выглядит примерно так П – программа:

Я – Позвонить папа

П – Позвонить папа. Дом, сотовый или отменить?

Я – сотовый

П – сотовый, набор

 

или так:

Я – позвонить папа на сотовый

П – позвонить папа на сотовый, правильно?

Я – да

П – набор

 

или так:

Я – цифровой набор

П – назовите номер

Я – ноль шеть один один

П – ноль шесть один один. Подтверждение, отмена или перенабор?

Я – подтверждение (или просто да)

П - набор

1 февр. 2012 г.

CygWin как легковесная виртуальная среда

Решил попробовать CigWin, чтобы пользоваться для себя некоторыми удобными возможностями Linux в домашних условиях, например mc, ssh, цепочки команд, bash и т.п.

Оказалось, что это действительно работает, только медленно. У меня получается, что подключаться по SSH к удаленному серверу и работать там быстрее, чем CigWin работает локально. Локально даже переключение по Tab в mc подтормаживает.

В итоге поставил Ubuntu в виртуальную машину, к ней же средствами VMWare подключил папки основного компьютера, чтобы с ним можно было работать и подключаюсь туда по SSH.