Построение архива файлов научных космических данных на основе 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узлового кластера Георепликация на удаленный узел Спасибо за внимание!