Построение архива файлов научных космических данных на основе GlusterFS ИКИ РАН

advertisement
Построение архива файлов научных
космических данных на основе GlusterFS
Боярский М.Н., Назиров Р.Р., Шевченко М.И.
ИКИ РАН
"GlusterFS", the Gluster ant logo, "Red Hat" are trademarks or
registered trademarks of Red Hat, Inc.
Содержание

Постановка задачи

Обзор технологии GlusterFS

Масштабирование и отказоустойчивость

Доступ к данным

Администрирование

Опыт использования GlusterFS в ИКИ
Постановка задачи
Работа выполняется в рамках Программы 22
президиума РАН «Фундаментальные проблемы
исследований и освоения Солнечной системы»,
проект «Создание программно-аппаратного
комплекса архива научных космических данных».
Основные требования к архиву:
Надежность хранения данных
 Масштабируемость архива
 Экономичность построения
 Простота развертывания
 Простота доступа к данным
 Поддержка со стороны разработчиков

Производительность менее приоритетна
Архив научных космических данных
ИКИ РАН
1978-2000 гг: 200ГБ с
приборов на 7 КА
серии Прогноз
август 2011-ноябрь 2012
540ГБ от 2 приборов
плазменно-магнитного
комплекса «Плазма-Ф» на
КА «Спектр-Р»
эксперимента
«Радиоастрон»
Что такое GlusterFS?

POSIX-совместимая файловая система

Без сервера метаданных

Сетевая система хранения данных (NAS)




Позволяет использовать неоднородное
широкодоступное аппаратное обеспечение
Единое глобальное пространство имен
Основана на стандартах для сетевых
клиентов и протоколов
Гибкое и оперативное масштабирование

Объем – петабайты и далее

Производительность – тысячи клиентов
GlusterFS и традиционные решения




Обычные NAS имеют ограничения по
масштабируемости и избыточности
Распределенные файловые системы обычно
ограничены зависимостью от сервера
метаданных
Сети хранения данных (SAN) дороги и сложны
(но производительны и масштабируемы)
GlusterFS:

Линейно масштабируема

Произвольная степень избыточности

Минимальные «накладные расходы»

Простота и дешевизна развертывания
Терминология

Brick («кирпич»)



Translator (транслятор)



Реализация логики отношения битов хранения и
глобальным пространством имен
Многоуровневая реализация функциональности
Volume (том)


Единица хранения/строительный блок GlusterFS
Точка монтирования локальной файловой системы на узле
(сервере хранения)
«Кирпичи», объединенные и обработанные трансляторами
Node (узел)

Сервер, на котором выполняется glusterd
и хранится экспортируемый том
Диски, LVM и файловые системы

Непосредственно подсоединенные диски
(DAS/JBOD)

Аппаратный RAID

Тома LVM

Файловые системы: XFS, EXT3/4, BTRFS

Требуется поддержка расширенных атрибутов
(extended attributes)
Доступ к данным

Собственный («native») клиент









Файловая система в пользовательском пространстве
Клиент считывает информацию по томам с основного или
запасного сервера и далее непосредственно
взаимодействует с каждым сервером кластера
Лучшая производительность при записи файлов и при
массовом одновременном доступе
NFS
Встроенная служба для стандартных клиентов NFS v3
Лучшая производительность при чтении большого числа
мелких файлов
SMB/CIFS
Требуется сервер Samba
Сервер монтирует GlusterFS и экспортирует ее
Монтирование через /etc/fsab

Собственный («native») клиент
x2.c1.cosmos.ru:/gv2 /gv2.fuse glusterfs
defaults,backupvolfile-server=x3.c1.cosmos.ru,logfile=/var/log/gluster.log 0 0

NFS
x1.c1.cosmos.ru:/gv1 /gv1 nfs defaults,proto=tcp,vers=3 0 0
Программные компоненты


glusterd

Демон гибкого управления томами

Выполняется на всех серверах хранения

Интерфейс: командная строка gluster
glusterfsd



Демон, управляющий «кирпичами» GlusterFS
Один процесс на «кирпич»
Управляется glusterd
Программные компоненты


glusterfs

Демон-сервер NFS

Демон-клиент FUSE
mount.glusterfs


Обеспечивает монтирование FUSE
gluster

Консоль Gluster (интерфейс командной строки)
Гибкое хеширование


Расположение данных определяется хешем
имени файла и путем файловой системы
Нет центрального сервера метаданных

Нет узкого места производительности

Уменьшаются риски

Гибкость



Файлы назначаются виртуальным томам
Виртуальные тома распределяются по
«кирпичам»
Тома легко переназначаются «на лету»
Масштабируемость: распределение

Вертикальная:

Добавление дисков и файловых систем к серверу

Горизонтальная

Добавление серверов в доверенный пул
Масштабируемость и
отказоустойчивость
Распределенный том:

Файлы равномерно распределяются между
серверами

RAID 0 файлового уровня

Потеря данных при аппаратных сбоях
Масштабируемость и
отказоустойчивость
Реплицируемый том:

Копирование файлов на несколько «кирпичей»

RAID 1 файлового уровня

Отсутствие горизонтальной масштабируемости
Масштабируемость и
отказоустойчивость
Распределенно-реплицируемый том:



Распределение файлов по реплицируемым
«кирпичам»
RAID 1 / улучшение производительности чтения
Горизонтальная масштабируемость
Производительность
Чередуемо-реплицируемый том (stripedreplicated):


Распределение частей файла по дискам с
зеркалированием «кирпичей»
Максимальная производительность при работе с
большими файлов с защищенностью от сбоев
Георепликация




Асинхронная репликация через ЛВС или Интернет
Модель «ведущий-ведомый» (master-slave) с
каскадированием
Инкрементальное реплицирование
Важна синхронизация времени на всех ведущих узлах
Репликация томов и георепликация
Реплицируемые тома
Георепликация
Зеркалирование данных
между узлами кластера
Зеркалирование данных
между географически
разнесенными кластерами
Обеспечивает высокую
доступность
Обеспечивает резервирование
данных для восстановления
после аварии
Синхронная репликация
(каждая файловая операция
выполняется на всех
«кирпичах»)
Асинхронная репликация
(периодическая проверка
изменений файлов и
синхронизация изменений)
Примеры использования
PANDORA INTERNET RADIO Private Cloud: Media Serving


Challenge

Explosive user & title growth

As many as 12 file formats for each song

‘Hot’ content and long tail
Solution


1.2 PB of audio served
per week


13 million files

Replication for high availability

250+ TB total capacity
Benefits


Over 50 GB/sec peak
traffic
Three data centers, each with a six-node GlusterFS
cluster

Easily scale capacity
Centralized management; one administrator to manage
day-to-day operations

No changes to application

Higher reliability
BRIGHTCOVE - Private Cloud: Media Serving


Challenge

Explosive customer & title growth

Massive video in multiple locations

Costs rising, esp. with HD formats
Solution

• Over 1 PB currently in
Gluster
• Separate 4 PB project
in the works

Complete scale-out based on commodity DAS/JBOD
and GlusterFS

Replication for high availability

1PB total capacity
Benefits


Easily scale capacity
Centralized management; one administrator to
manage day-to-day operations

Higher reliability

Path to multi-site
Администрирование
Установка Glusterfs: http://www.gluster.org/
Сервер на Ubuntu 12.04
#
#
#
#
#
add-apt-repository ppa:semiosis/ubuntu-glusterfs-3.3
apt-get update
apt-get install glusterfs-server
service glusterfs-server start
tail /var/log/gluster.log
Клиент на CentOS 5.5:
# wget http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/CentOS/glusterfsepel.repo
# yum --enablerepo=glusterfs-epel install glusterfs glusterfs-fuse
#
# tail /var/log/gluster.log
Создаем «кирпичи»:
#
#
#
#
#
lvcreate -L32G -n lvBrick4 vg1x1
mkfs -t xfs -i size=512 /dev/vg1x1/lvBrick4
mkdir /bricks/4
echo '/dev/vg1x1/lvBrick4 /bricks/4
xfs
mount /bricks/4
defaults 1 2' >> /etc/fstab
Администрирование
Добавляем узлы к доверенному пулу:
gluster> peer probe x2
gluster> peer probe x3
gluster> peer status
Number of Peers: 2
Hostname: x2
Uuid: bb9c73df-62c7-47d8-b81f-8d7a0c2085ab
State: Peer in Cluster (Connected)
Hostname: x3
Uuid: 2091f5a5-2c09-44c8-b53e-0b38abf8fd16
State: Peer in Cluster (Connected)
и создаем реплицируемый том:
gluster> volume create gv3 replica 3 transport tcp x1:/bricks/4 x2:/bricks/4
x3:/bricks/4
Creation of volume gv3 has been successful. Please start the volume to access data.
gluster> volume start gv3
Starting volume gv3 has been successful
gluster> volume info gv3
Volume Name: gv3
Type: Replicate
Volume ID: 86f12bed-3a9e-493b-ba32-b9b2d6287d76
Status: Started
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: x1:/bricks/4
Brick2: x2:/bricks/4
Brick3: x3:/bricks/4
Администрирование
Монтируем:
# echo 'x3:/gv3
/gv3
glusterfs defaults,backupvolfile-server=x2,logfile=/var/log/gluster2.log 0 0' >> /etc/fstab
# mount /gv3
# df -m /gv3
Filesystem
1M-blocks Used Available Use% Mounted on
x3:/gv3
32752
33
32720
1% /gv3
# cp -a /data4/bsp/2010_* /gv3/bsp
# df -m
/dev/mapper/vg1x1-lvBrick4
32752
581
32172
2% /bricks/4
x3:/gv3
32752
581
32172
2% /gv3
Расширяем и преобразуем в распределеннореплицируемый:
# df -m
/dev/mapper/vg1x1-lvBrick4
32752
581
32172
/dev/mapper/vg1x1-lvBrick6
32752
33
32720
x3:/gv3
32752
581
32172
2% /gv3
2% /bricks/4
1% /bricks/6
gluster> volume add-brick gv3 replica 3 x1:/bricks/6 x2:/bricks/6 x3:/bricks/6
Add Brick successful
gluster> volume rebalance gv3 start
Starting rebalance on volume gv3 has been successful
gluster> volume rebalance gv3 status
Node Rebalanced-files
size
scanned
failures
status
62.61.17.3
343
204.0MB
1258
122
completed
Администрирование
gluster> volume info gv3
Volume Name: gv3
Type: Distributed-Replicate
Volume ID: 86f12bed-3a9e-493b-ba32-b9b2d6287d76
Status: Started
Number of Bricks: 2 x 3 = 6
Transport-type: tcp
Bricks:
Brick1: x1:/bricks/4
Brick2: x2:/bricks/4
Brick3: x3:/bricks/4
Brick4: x1:/bricks/6
Brick5: x2:/bricks/6
Brick6: x3:/bricks/6
# df -m
/dev/mapper/vg1x1-lvBrick4
/dev/mapper/vg1x1-lvBrick6
x3:/gv3
…
# df -m
/dev/mapper/vg1x1-lvBrick4
/dev/mapper/vg1x1-lvBrick6
x3:/gv3
32752
32752
32752
376
238
376
32377
32515
32377
2% /bricks/4
1% /bricks/6
2% /gv3
32752
32752
65504
376
238
613
32377
32515
64892
2% /bricks/4
1% /bricks/6
1% /gv3
Контроль доступа
gluster> volume set gv1 nfs.rpc-auth-allow 192.168.1.*
Gluster> volume set gv1 auth.allow 192.168.1.*
Архив файлов научных космических
данных ИКИ РАН на основе GlusterFS
# gluster volume info gv1
Volume Name: gv1
Type: Distributed-Replicate
Volume ID: 5a54adc2-cfeb-4f41-9d4b-1141eff2e1ea
Status: Started
Number of Bricks: 3 x 3 = 9
Transport-type: tcp
Bricks:
Brick1: x1:/bricks/c
Brick2: x2:/bricks/c
Brick3: x3:/bricks/c
Brick4: x1:/bricks/b
Brick5: x2:/bricks/b
Brick6: x3:/bricks/b
Brick7: x1:/bricks/a
Brick8: x2:/bricks/a
Brick9: x3:/bricks/a
Options Reconfigured:
nfs.enable-ino32: on
auth.allow: xxx.xxx.xxx.*,xxx.xxx.xxx.xxx
nfs.rpc-auth-allow: xxx.xxx.xxx.*,xxx.xxx.xxx.xxx
# df -m /gv1
Filesystem
x3:/gv1
1M-blocks
Used Available Use% Mounted on
2047000 1101539
945462 54% /gv1
Архив файлов научных космических
данных ИКИ РАН на основе GlusterFS
x1.c1.cosmos.ru
x2.c1.cosmos.ru
Репликация
Репликация
/bricks/a
/bricks/a
/bricks/b
/bricks/a
Репликация
Репликация
/bricks/b
/bricks/b
Репликация
Репликация
/bricks/c
x3.c1.cosmos.ru
/bricks/c
/bricks/c
Распределение
Распределенно-реплицируемый
том GlusterFS gv1
rsync
Gluster, NFS,
CIFS/SMB
ЛВС ИКИ РАН
ftp, scp, http
ИНТЕРНЕТ
Производительность
[root@stor1 i386]# ls -l CentOS-6.2-i386-bin-DVD1.iso
-rw-r--r-- 1 root root 3816622080 Dec 17 2011 CentOS-6.2-i386-bin-DVD1.iso
[root@stor1 i386]# time /bin/cp CentOS-6.2-i386-bin-DVD1.iso /data4/tmp/
real
user
sys
1m28.247s
0m0.384s
0m4.644s
x1.c1.cosmos.ru:/gv1
2047000
1101478
945523
54% /gv1
[root@stor1 i386]# time /bin/cp CentOS-6.2-i386-bin-DVD1.iso /gv1/tmp/
real
user
sys
1m21.448s
0m0.308s
0m3.928s
[root@stor1 ~]# echo 81.44|awk '{print 3816622080/$1/1E6}'
46.8642
[root@stor1 PDS]# du -ms starbase/
949
starbase/
[root@stor1 PDS]# find starbase/ -type f|wc
23824
23824 2693095
[root@stor1 PDS]# time /bin/cp -a starbase/ /data4/tmp/
real
user
sys
23m7.649s
0m0.160s
0m1.324s
[root@stor1 PDS]# time /bin/cp -a starbase/ /gv1/tmp
real
user
sys
31m17.075s
0m0.164s
0m1.744s
Производительность
x2.c1.cosmos.ru:/gv2
65504
33940
31565
52% /gv2.nfs
[root@stor1 i386]# time dd if=/dev/zero of=/gv2.nfs/tmp/24GB bs=1M
count=24000
24000+0 records in
24000+0 records out
25165824000 bytes (25 GB) copied, 265.092 seconds, 94.9 MB/s
real
user
sys
4m25.300s
0m0.044s
0m51.403s
[root@stor1 i386]# time dd of=/dev/zero if=/gv2.nfs/tmp/24GB bs=1M
24000+0 records in
24000+0 records out
25165824000 bytes (25 GB) copied, 238.861 seconds, 105 MB/s
real
user
sys
3m58.943s
0m0.084s
0m15.677s
Производительность
[root@stor1 ~]#
/gv3.fuse/
mount -t glusterfs x1.c1.cosmos.ru:/gv3 -o log-file=/var/log/gluster.log
[root@stor1 ~]# time cp /gv3.fuse/tmp/CentOS-6.2-i386-bin-DVD1.iso /raid1a/tmp/
real
user
sys
0m42.206s
0m0.836s
0m12.057s
[root@stor1 ~]# time dd if=/gv3.fuse/tmp/CentOS-6.2-i386-bin-DVD1.iso of=/dev/null bs=1M
3639+1 records in
3639+1 records out
3816622080 bytes (3.8 GB) copied, 37.2029 seconds, 103 MB/s
real
user
sys
0m37.221s
0m0.000s
0m0.252s
[root@stor1 i386]# time dd if=/dev/zero of=/gv3.fuse/tmp/24GB bs=1M count=24000
24000+0 records in
24000+0 records out
25165824000 bytes (25 GB) copied, 773.961 seconds, 32.5 MB/s
[root@stor1 i386]# dd if=/dev/zero of=/gv2.fuse/tmp/24GB bs=1M count=24000
24000+0 records in
24000+0 records out
25165824000 bytes (25 GB) copied, 524.375 seconds, 48.0 MB/s
Практика: заполнение
[root@stor1 plasma-f]# time rsync -avz --delete --password-file=/etc/rsync.s
attitude orbit bemm bmsw doc mep mboyarsk@lxc3.c1.cosmos.ru::plasma-f
building file list ... done
...
bmsw/orbit/descrip/sumplot.htm
bmsw/orbit/descrip/symbtab.gif
bmsw/orbit/descrip/symbtabn.gif
sent 76509458396 bytes received 515222 bytes
total size is 554412751274 speedup is 7.25
real
user
sys
2158463.42 bytes/sec
590m50.814s
462m32.286s
8m53.365s
[root@stor1 plasma-f]# time rsync -avz --delete --password-file=/etc/rsync.s
attitude orbit bemm bmsw doc mep mboyarsk@lxc3.c1.cosmos.ru::plasma-f
building file list ... done
...
sent 575131029 bytes received 97744 bytes 1582472.55 bytes/sec
total size is 563016780036 speedup is 978.77
real
user
sys
6m3.105s
3m40.974s
0m4.220s
Архив файлов научных космических
данных ИКИ РАН на основе GlusterFS
Название проекта
Объем данных, МБайт Количество файлов
Аркад
9580
1668
ИнтеркосмосБолгария 1300
5431
1498
Прогноз 7-10
2698
193
Вега 1,2
456
11779
Интербол
155192
220258
Плазма-Ф
537662
47302
Итого на 11.11.2012
711019
282698
# df -m /gv1
Filesystem
x3:/gv1
1M-blocks
Used Available Use% Mounted on
2047000 1101539
945462 54% /gv1
# find /gv1 -type f | wc –l
450327
Результаты и планы





Опыт работы с GlusterFS показал в целом ее
соответствие поставленной задаче
Необходимо дальнейшее тестирование и
мониторинг состояния данных
GlusterFS Unified File and Object (UFO) –
OpenStack/Swift API-совместимый сервер GlusterFS
Планируется расширение Архива добавлением 3узлового кластера
Георепликация на удаленный узел
Спасибо за внимание!
Download