Глава 4. Работа с файловой системой Ceph
В данной главе мы охватим:
-
Понимание файловой системы Ceph и MDS
-
Развёртывание MDS Ceph
-
Доступ к CephFS через драйвер ядра
-
Доступ к CephFS через клиента FUSE
-
Экспорт файловой системы Ceph в качестве NFS
-
ceph-dokan – CephFS для клиентов Windows
-
CephFS вклинивающаяся замена HDFS
Содержание
Файловая система Ceph, также называемая CephFS, является совместимой с POSIX файловой системой, которая применяет кластер хранения Ceph для хранения данных пользователя. CephFS пооддерживает внутренний драйвер ядра Linux, что делает CephFS высоко адаптивной для ОС Linux на любой вкус. В этой главе мы обсудим в деталях файловую систему Ceph, включая её развёртывание, понимание драйвера ядра и FUSE, а также клиентов CephFS для Windows.
Файловая система Ceph предлагает POSIX- совместимую распределённую файловую систему любого размера, которая применяет для хранения своих данных Ceph RADOS. Для реализации файловой системы Ceph вамнужен работающий кластер хранения Ceph и по крайней мере один сервер метаданных Ceph (MDS, Metadata Serer) для управления его метаданными и их хранения в отдельности от данных, что помогает уменьшить сложность и улучшить надёжность. Следующая схема изображает взгляд на архитектуру CephFS и ее интерфейсы
Библиотеки libcephfs
играют важную роль в поддержке её реализаций множественности клиентов.
Она имеет внутреннюю поддержку драйвера ядра Linux и таким образом клиенты могут использовать естественное монтирование файловой системы,
например, с помощью команды mount
. Она имеет тесную интеграцию с SAMBA и поддержку для CIFS и SMB.
CephFS расширяет свою поддержку на файловую систему в пространстве пользователя (FUSE,
Filesystem in USErspace) применяя модули cephfuse
. Она также делает возможной
прямой доступ из приложений в кластер RADOS с помощью библиотек libcephfs
. CephFS приобретает
популярность в качестве замены для Hadoop HDFS. Предыдущие версии HDFS поддерживали только единственный узел имён, что оказывало влияние
на масштабируемость и создавало единую точку отказа; однако, это было изменено в современной версией HDFS. В отличие от HDFS, CephFS может
быть реализована поверх множества MDS в состоянии активный-активный, предоставляя тем самым высочайшую масштабируемость, высокую
производительность и отсутствие единой точки отказа.
Ceph MDS ставится для сервера метаданных и нужна только для файловой системы Ceph (CephFS); прочие методы блочного и объектового хранения не нуждаются в службах MDS. MDS Ceph работает в качестве демона, что позволяет клиенту монтировать файловую систему любого размера. MDS не передаёт никакие данные вашему клиенту напрямую; предоставление данных выполняется только OSD. MDS предоставляет совместно используемую когерентную файловую систему с уровнем интеллектуального кэширования, следовательно радикально уменьшая чтения и записи. Он расширяет свои преимущества на динамичное разделение поддеревьев и отдельных MDS для частей метаданных. Он динамичен по своей природе; демоны могут присоединяться и уходить, а также быстро захватывать отказавшие узлы.
MDS не хранит локальные данные, что чрезвычайно полезно при определённых сценариях. Если демон MDS прекращает существование, мы можем запустить его вновь на любой имеющейся в кластере системе. Демоны серверов метаданных настраиваются в качестве активных или пассивных. Первичный MDS становится активным, а остальные переходят в "резерв" (standby). В случае отказа первичного MDS берётся второй узел и переводится в активное состояние. Для ещё более быстрого восстановления вы можете предписать, что резервный узел должен перемещаться на ваши активные узлы, что сохранит те же данные в памяти предварительно размещёнными в кэше.
CephFS на текущий момент не готов к промышленной эксплуатации, поскольку ему не хватает надёжных функций проверки/ восстановления
fsck
, множества активных MDS, а также снимков. Его развитие
идёт очень быстро и мы можем ожидать, что он будет готов для промышленной эксплуатации начиная с Ceph Jewel. {Прим.
пер.: на момент перевода (10 марта 2016) надёжный fsck пока недоступен, следите за CephFS for early adopters.}
Для ваших не очень критически важных рабочих нагрузок рассмотрите возможность применения CephFS с единственным MDS без каких- либо
снимков.
Чтобы настроить сервер метаданных для файловой системы Ceph вам следует иметь работающий кластер Ceph. В предыдущих главах мы изучили развёртывание кластера хранеия Ceph, для размещения MDS мы воспользуемся тем же самым кластером.
-
На
ceph-node1
применитеceph-deploy
для настройки MDS наceph-node2
:# ceph-deploy --overwrite-conf mds create ceph-node2 [root@ceph-node1 ceph]# ceph-deploy --overwrite-conf mds create ceph-node2 [ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf [ceph_deploy.cli][INFO ] Invoked (1.5.22): /usr/bin/ceph-deploy --overwrite-conf mds create ceph-node2 [ceph_deploy.mds][DEBUG ] Deploying mds, cluster ceph hosts ceph-node2:ceph-node2 [ceph-node2][DEBUG ] connected to host: ceph-node2 [ceph-node2][DEBUG ] detect platform information from remote host [ceph-node2][DEBUG ] detect machine type [ceph_deploy.mds][INFO ] Distro info: centOS Linux 7.0.1406 Core [ceph_deploy.mds][DEBUG ] remote host will use sysvinit [ceph_deploy.mds][DEBUG ] deploying mds bootstrap to ceph-node2 [ceph-node2][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf [ceph-node2][DEBUG ] create path if it doesn't exist [ceph-node2][INFO ] Running command: ceph --cluster ceph --name client.bootstrap-mds --keyring /var/lib/c eph/bootstrap-mds/ceph.keyring auth get-or-create mds.ceph-node2 osd allow rwx mds allow mon allow profile mds -o /var/lib/ceph/mds/ceph-ceph-node2/keyring [ceph-node2][INF0 ] Running command: service ceph start mds.ceph-node2 [ceph-node2][DEBUG ] === mds.ceph-node2 === [ceph-node2][DEBUG ] Starting Ceph mds.ceph-node2 on ceph-node2... [ceph-node2][WARNIN] Running as unit run-4697.service. [ceph-node2][INF0 ] Running command: systemctl enable ceph [ceph-node2][WARNIN] ceph.service is not a native service, redirecting to /sbin/chkconfig. [ceph-node2][WARNIN] Executing /sbin/chkconfig ceph on [ceph-node2][WARNIN] The unit files have no [Install] section. They are not meant to be enabled [root@ceph-node1 ceph]#
-
Эта команда должна развернуть ваш MDS и запустить его демон на
ceph-node2
; однако нам потребуется выполнить ещё несколько шагов чтобы сделать CephFS доступным:# ssh ceph-node2 service ceph status mds [root@ceph-node1 ceph]# ssh ceph-node2 service ceph status mds === mds.ceph-node2 === mds.ceph-node2: running {"version":"0.87.1"} [root@ceph-node1 ceph]#
-
Создайте пулы данных и метаданных для файловой системы Ceph:
# ceph osd pool create cephfs_data 64 64 # ceph osd pool create cephfs_metadata 64 64
-
Наконец, создайте файловую систему Ceph; после выполнения этой команды MDS должен получить активное состояние, а CephFS должна быть готова к применению:
# ceph fs new cephfs cephfs_metadata cephfs_data [root@ceph-node1 ceph]# ceph osd pool create cephfs_data 64 64 pool 'cephfs data' created [root@ceph-node1 ceph]# ceph osd pool create cephfs_metadata 64 64 pool 'cephfs_metadata' created [root@ceph-node1 ceph]# [root@ceph-node1 ceph]# ceph fs new cephfs cephfs_metadata cephfs_data new fs with metadata pool 44 and data pool 43 [root@ceph-node1 ceph]#
-
Чтобы проверить состояние CephFS и MDS примените следующие команды:
# ceph mds stat # ceph fs ls [root@ceph-node1 ceph]# ceph mds stat e10: 1/1/1 up {0=ceph-node2=up:active} [root@ceph-node1 ceph]# ceph fs ls name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ] [root@ceph-node1 ceph]#
-
Не рекомендуется использовать кольцо ключей пользователя
client.admin
совместно с клиентами Ceph, поэтому мы создадим пользователяclient.cephfs
в вашем кластере Ceph и позволим этому пользователю осуществлять доступ к пулу CephFS:# ceph auth get-or-create client.cephfs mon 'allow r' osd 'allow rwx pool=cephfs_metadata,allow rwx pool=cephfs_data' -o /etc/ceph/client.cephfs.keyring # ceph-authtool -p -n client.cephfs /etc/ceph/client.cephfs.keyring > /etc/ceph/client.cephfs # cat /etc/ceph/client.cephfs [root@ceph-node1 ~]# ceph auth get-or-create client.cephfs mon 'allow r' osd 'allow rwx pool=cephfs_metadata,allow rwx pool=cephfs_data' -o /etc/ceph/client.cephfs.keyring [root@ceph-node1 ~]# [root@ceph-node1 ~]# ceph-authtool -p -n client.cephfs /etc/ceph/client.cephfs.keyring > /etc/ceph/client.cephfs [root@ceph-node1 ~]# [root@ceph-node1 ~]# cat /etc/ceph/client.cephfs AQAGSF5VMIDWHhAAox9s/oHg/6FPzf4xRQV73Q== [root@ceph-node1 ~]#
В ядро Linux 2.6.34 и более поздние версии была добавлена внутренняя поддержка для Ceph. В данном рецепте мы продемонстрируем то, как
получить доступ к CephFS через драйвер ядра Linux на ceph-client1
-
Проверьте версию ядра Linux вашего клиента:
# uname -r
-
Создайте точку монтирования каталога:
# mkdir /mnt/cephfs
-
Получите ключи для пользователя
client-cephfs
, которого мы создали в предыдущем разделе. С вашего узла монитора Ceph выполните следующую команду для получения ключей пользователя:# ceph auth get-key client.cephfs
-
Смонтируйте CephFS применив внутренний вызов Linux mount со следующим синтаксисом::
# mount -t ceph ceph-node1:6789:/ /mnt/cephfs -o name=cephfs,secret=AQAGSF5VMIDWHhAAox9s/oHg/6FPzf4xRQV73Q== root@client-node1:/etc/ceph# mount -t ceph ceph-node1:6789:/ /mnt/cephfs -o name=cephfs,secret= AQAGSF5VMIDWHhAAox9s/oHg/6FPzf4xRQV73Q== root@client-node1:/etc/ceph# df -h /mnt/cephfs Filesystem Size Used Avail Use% Mounted on 192.168.1.101:6789:/ 135G 7.3G 128G 6% /mnt/cephfs root@client-node1:/etc/ceph#Синтаксис:
mount -t ceph <Monitor_IP>:<Monitor_port>:/ <mount_point_name> -o name=admin,secret=<admin_user_key>
-
Чтобы смонтировать CephFS более безопасно, избегайте видимости ключа администратора в вашей истории команд, сохраняйте свой ключ администратора как обычный текст в отдельном файле и используйте этот файл в качестве параметра монтирования для
secretkey
:# echo AQAGSF5VMIDWHhAAox9s/oHg/6FPzf4xRQV73Q== > /etc/ceph/cephfskey # mount -t ceph ceph-node1:6789:/ /mnt/cephfs -o name=cephfs,secretfile=/etc/ceph/cephfskey root@client-node1:/etc/ceph# echo AQAGSF5VMIDWHhAAox9s/oHg/6FPzf4xRQV73Q== > /etc/ceph/cephfskey root@client-node1:/etc/ceph# umount /mnt/cephfs root@client-node1:/etc/ceph# mount -t ceph ceph-node1:6789:/ /mnt/cephfs -o name=cephfs,secretfile= /etc/ceph/cephfskey rootgclient-node1:/etc/ceph# df -h /mnt/cephfs Filesystem Size Used Avail Use% Mounted on 192.168.1.101:6789:/ 135G 7.3G 128G 6% /mnt/cephfs root@client-node1:/etc/ceph#
-
Чтобы сделать возможным монтирование CephFS во время запуска ОС, добавьте следующие строки в ваш файл
/etc/fstab
наceph-client1
:Синтаксис:
<Mon_ipaddress>:<monitor_port>:/ <mount_point> <filesystem-name> [name=username,secret=secretkey|secretfile=/path/to/secretfile],[{mount.options}]
# echo "ceph-node1:6789:/ /mnt/cephfs cephname=cephfs,secretfile=/etc/ceph/cephfskey,noatime 02" >> /etc/fstab
-
Размонтируйте CephFS и смонтируйте заново:
# umount /mnt/cephfs # mount /mnt/cephfs root@client-node1:/etc/ceph# echo "ceph-node1:6789:/ /mnt/cephfs ceph name=cephfs,secretfile =/etc/ceph/cephfskey,noatime 02" >> /etc/fstab root@client-node1:/etc/ceph# cat /etc/fstab 1 grep cephfs ceph-node1:6789:/ /mnt/cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfskey,noatime 02 root@client-node1:/etc/ceph# umount /mnt/cephfs root@client-node1:/etc/ceph# mount /mnt/cephfs root@client-node1:/etc/ceph# df -h /mnt/cephfs Filesystem Size Used Avail Use% Mounted on 192.168.1.101:6789:/ 135G 7.3G 128G 6% /mnt/cephfs root@client-node1:/etc/ceph#
-
Выполните какие- нибудь операции ввода/ вывода в вашей файловой системе Ceph, а затем размонтируйте её:
# dd if=/dev/zero of=/mnt/cephfs/file1 bs=1M count=1024 # umount /mnt/cephfs root@client-node1:~# dd if=/dev/zero of=/mnt/cephfs/file1 bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 58.9853 s, 18.2 MB/s root@client-node1:~# root@client-node1:~# ls -1 /mnt/cephfs/file1 -rw-r--r-- 1 root root 1073741824 May 20 21:15 /mnt/cephfs/file1 root@client-node1:~#
Файловая система Ceph внутренне поддерживается ядром Linux; однако, если ваш хост работает с более ранними версиями ядра, или у вас существует зависимость от каких- то приложений, то вы всегда можете воспользоваться клиентом FUSE (Filesystem User Space) для Ceph чтобы смонтировать CephFS.
-
Установите пакет Ceph FUSE на своей машине
client-node1
:# uname -r
-
Создайте файл кольца ключей своей CephFS,
/etc/ceph/client.cephfs.keyring
со следующим содержимым:[client.cephfs] key = AQAGSF5VMIDWHhAAox9s/oHg/6FPzf4xRQV73Q==
-
Смонтируйте CephFS используя своего клиентаCeph FUSE :
# ceph-fuse --keyring /etc/ceph/client.cephfs.keyring --name client.cephfs -m ceph-node1:6789 /mnt/cephfs root@client-node1:/etc/ceph# ceph-fuse --keyring /etc/ceph/client.cephfs.keyring --name client.cephfs -m ceph-node1:6789 /mnt/cephfs ceph-fuse[3356]: starting ceph client 2015-05-21 21:46:05.599027 7fc80ea017c0 -1 init, newargv = 0x45663a0 newargc=11 ceph-fuse[3356]: starting fuse root@client-node1:/etc/ceph# root@client-node1:/etc/ceph# df -h /mnt/cephfs Filesystem Size Used Avail Use% Mounted on ceph-fuse 135G 7.3G 128G 6% /mnt/cephfs root@client-node1:/etc/ceph#
-
Чтобы монтировать CephFS при загрузке ОС, добавьте следующие строки в свой файл
/etc/fstab
наclient-node1
:id=cephfs,keyring=client.cephfs.keyring /mnt/cephfs fuse.ceph defaults 00
-
Размонтируйте CephFS и смонтируйте заново:
# umount /mnt/cephfs # mount /mnt/cephfs
Network Filesystem (NFS)
является одним из самых популярных
протоколов совместно используемых файловых систем, который может применяться в любой системе на базе Unix. Клиенты на основе Unix, которые не
понимают вашу CephFSмогут всё же получить доступ к файловой системе Ceph применяя NFS. Для этого нам понадобится сервер NFS в
месте, которое может реэкспортировать CephFS в качестве разделяемого ресурса NFS. NFS-Ganesha является сервером NFS, который
работает в пользовательском пространстве и поддерживает CephFS FSAL
(File System Abstraction Layer, уровень абстракции файловой системы
)
пр помощи libcephfs
.
В данном рецепте мы продемонстрируем создание ceph-node1
в качестве сервера NFS-Ganesha
и экспорт CephFS в виде NFS, а также её монтирование на client-node1
.
-
На
ceph-node1
установите необходимыеnfs-Ganesha
пакеты:# yum install -y nfs-utils nfs-ganesha nfs-ganesha-fsal-ceph
-
Поскольку это тестовая сборка, запретите межсетевой экран. Для ваших промышленных установок вы должны рассмотреть разрешение необходимых вам портов в межсетевом экране, обычно это
2049
:# systemctl stop firewalld; systemctl disable firewalld
-
Сделайте доступными необходимые NFS службы
rpc
:# systemctl start rpcbind; systemctl enable rpcbind # systemctl start rpc-statd.service
-
Создайте свой файл настроек NFS-Ganesha,
/etc/ganesha.conf
, со следующим содержимым:EXPORT { Export_ID = 1; Path = "/"; Pseudo = "/"; Access_Type = RW; NFS_Protocols = "3"; Squash = No_Root_Squash; Transport_Protocols = TCP; SecType = "none"; FSAL { Name = CEPH; } }
-
Наконец, запустите демон
ganesha nfs
снабдив его файломganesha.conf
, который мы создали на нашем последнем шаге. Вы можете проверить экспортированные совместные ресурсы NFS применив командуshowmount
:# ganesha.nfsd -f /etc/ganesha.conf -L /var/log/ganesha.log -N NIV_DEBUG -d # showmount -e [root@ceph-node1 ~]# ganesha.nfsd -f /etc/ganesha.conf -L /var/log/ganesha.log -N NIVDEBUG -d [root@ceph-node1 ~]# [root@ceph-node1 ~]# ps -ef | grep nfs root 7975 1 0 00:55 ? 00:00:00 ganesha.nfsd -f /etc/ganesha.conf -L /var/log/ganesha.log -N NIVJEBUG -d root 8023 5901 0 00:56 pts/O 00:00:00 grep --color=auto -i nfs [root@ceph-node1 ~]#
Давайте повторим те шаги, которые мы только что проделали: ceph-node2
был настроен в качестве
Ceph MDS, а ceph-node1
был настроен в качестве сервера NFS-Ganesha.
Далее, чтобы смонтировать совместно используемые ресурсы NFS на машинах клиентов, нам нужно просто установить пакеты клиентов NFS и
смонтировать наши разделяемые ресурсы экспортируемые ceph-node1
как показано далее:
Установите пакеты своего клиента nfs
на ceph-node1
и
выполните mount
:
# apt-get install nfs-common # mkdir /mnt/cephfs # mount -o rw,noatime 192.168.1.101:/ /mnt/cephfs root@client-node1:~# mount -o rw,noatime 192.168.1.101:/ /mnt/cephfs root@client-node1:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/sdal 40G 1.1G 37G 3% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 241M 12K 241M 1% /dev tmpfs 49M 356K 49M 1% /run none 5.0M 0 5.0M 0% /run/lock none 245M 0 245M 0% /run/shm none 100M 0 100M 0% /run/user 192.168.1.101:/ 135G 7.3G 128G 6% /mnt/cephfs root@client-node1:~#
До текущего момента мы изучали различные методы доступа к CephFS,такие как Ceph FUSE, драйвер Ceph ядра и NFS Ganesha; однако, эти методы могут применяться только в системах на базе Linux и их работа не поддерживается на машинах клиентов на основе Windows.
Проекты с открытым исходным кодом наподобие Ceph имеют свои собственные преимущества; Ceph развил вокруг себя благоденствующее
сообщество. ceph-dokan
является внутренним клиентом Windows Ceph, разработанным Менг Шенджи
(Meng Shengzhi), работающим главным инженером по системам хранения в UnitedStack. Помимо разработок OpenStack и Ceph, Менг управляет
проектом ceph-dokan
.
ceph-dokan
позволяет доступ к CephFS с платформы Windows. Для этого
ceph-dokan
применяет два ключевых компонента: libcephfs.dll
,
который является приложением для доступа к CephFS и ceph-dokan.exe
, который основан на проекте Dokan
по предоставлению службы файловой системы, подобной FUSE, на платформе Windows, что помогает в монтировании CephFS в качестве
локального диска в системах Windows. В своей основе ceph-dokan.exe
использует
dokan.dll
и libcephfs.dll
для реализации вашего
пользовательского пространства файловой системы win32. Как и Ceph, ceph-dokan
также является проектом
с открытым исходным кодом и доступен на GitHub по адресу https://github.com/ceph/ceph-dokan. Запросы на помощь для этого проекта могут посылаться в любое время. Вы можете
построить ceph-dokan
из исходного кода доступного на GiHub; однако для простоты вы можете
воспользоваться ceph-dokan.exe
, который может быть найден в каталоге
ceph-dokan
репозитория GitHub ceph-cookbook
, который вы
уже клонировали в предыдущей главе.
-
Настройте машину Windows 7 или 8 иподключите ее в своюсеть, ту же гда находится ваш кластер Ceph (
192.168.1.0/24
). -
Убедитесь, что вы можете связаться с узлами монитора Ceph проверив доступ с применением команды
telnet
из командной строки:telnet 192.168.1.101 6789
-
Когда вы убедились, что имеете возможность доступа к кластеру Ceph, загрузите
ceph-dokan.exe
иDokanInstall_0.6.0.exe
с https://github.com/ksingh7/cephcookbook/tree/master/ceph-dokan на свой клиент Windows. -
Установите
DokanInstall_0.6.0.exe
; если вы используете ОС Windows 8, вы должны установить его в режим совместимости.
-
Откройте командную строку Windows и смените каталог на абсолютный путь в каталог с установленным
ceph-dokan.exe
. -
В клиенте Windows cоздайте файл
ceph.conf
со следующим содержимым, которое известитceph-dokan
о ваших мониторах кластера Ceph:[global] auth client required = none log_file = dokan.log mon_initial_members = ceph-node1 mon_host = 192.168.1.101 [mon] [mon.ceph-node1] mon addr = 192.168.1.101:6789
Замечание Так как
ceph-dokan
может читатьceph.conf
только если он записан в формате Unix, вам следует преобразоватьceph.conf
в формат Unix с помощью утилитыdos2unix
. {Прим. пер.: Или воспользоваться в своём редакторе режимом Unix для сохранения файлов (символ конца строки #0A, вместо #0D#0A для Windows)}. За дополнительной информацией по утилите обратитесь к http://sourceforge.net/projects/dos2unix/. -
В настоящее время
ceph-dokan
не поддерживает аутентификациюcephx
. Поэтому, для примененияnfs-Ganesha
вам понадобится запретитьcephx
на всех ваших машинах монитора кластера Ceph. -
Чтобы запретить
cephx
в кластере Ceph измените свой файл/etc/ceph/ceph.conf
в элементах, связанных с аутентификацией наnone
:auth_cluster_required = none auth_service_required = none auth_client_required = none
-
После изменения
ceph.conf
, перезапустите службы ceph на всех своих узлах мониторов:# service ceph restart
-
Убедитесь, что
cephx
запрещён:# ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | grep -i auth | grep -i none [root@ceph-node1 ceph]# ceph --admin-daemon /var/run/ceph/ceph-osd.O.asok config show | grep auth | grep -i none "auth_cluster_required": "none", "auth_service_required": "none", "auth_client_required": "none", [root@ceph-node1 ceph]#
-
Наконец, в клиенте Windows выполните
ceph-dokan.exe
для монтирования CephFS в качестве диска. В командной строке выполните:ceph-dokan.exe -c ceph.conf -l m [root@ceph-node1 ~]# ganesha.nfsd -f /etc/ganesha.conf -L /var/log/ganesha.log -N NIV_DEBUG -d [root@ceph-node1 ~]# [root@ceph-node1 ~]# ps -ef | grep -i nfs root 7975 1 0 00:55 ? 00:00:00 ganesha.nfsd -f /etc/ganesha.conf -L /var/log/ganesha.log -N NIV_DEBUG -d root 8023 5901 0 00:56 pts/0 00:00:00 grep --color.auto nfs [root@ceph-node1 ~]#
Эта команда должна смонтировать CephFS как локальный диск в вашем клиенте Windows.
И CephFS, и ceph-dokan
требуют дополнительного участия и развития для достижения достаточной
зрелости в поддержке рабочих нагрузок с промышленным применением. Однако, они являются хорошими претендентами на тестирование и на
присутствие в роли концептуального прототипа (PoC).
Hadoop является программной инфраструктурой которая поддерживает обработку и хранение больших наборов данных в распределённых вычислительных средах. Ядро Hadoop содержит механизм аналитики Map-Reduce и распределённую файловую систему, называемую HDFS ((Hadoop Distributed File System), которая имеет ряд слабых мест, перечисленных здесь:
-
Она имеет единую точку отказа, за исключением только что вышедшей версии HDFS
-
Она не является POSIX совместимой
-
Она хранит по крайней мере 3 копии данных
-
Она имеет централизованный сервер имён, делающий проблематичным в результате её масштабирование
Проект Apache Hadoop и прочие производители программного обеспечения независимо работают над заполнением этих пробелов в HDFS.
Сообщество Ceph выполнило некоторые разработки в этом пространстве и оно имеет встраиваемый системный модуль (plugin) для Hadoop который возможно преодолеет ограничения HDFS и может быть использован как вклинивающаяся замена для этого проекта. Существуют три требования для использования CephFS с Hadoopж; это:
-
Работа вашего кластера Ceph
-
Работа кластера Hadoop
-
Установка встраиваемого модуля (plugin) CephFS Hadoop
Реализация Hadoop и HDFS выходят за рамки данной книги, однако в этом разделе мы поверхностно обсудим как CephFS может быть
использована совместно с HDFS. Клиенты Hadoop могут получать доступ к CephFS через встраиваемый модуль (plugin) на основе java
с именем hadoop-cephfs.jar
. Для поддержки связи Hadoop с CepfFS необходимы два приводимых
ниже класса java.
-
libcephfs.jar
: Этот файл должен быть помещён в/usr/share/java/
, а его путь должен быть добавлен вHADOOP_CLASSPATH
в файлеHadoop_env.sh
. -
libcephfs_jni.so
: Этот файл должен быть добавлен в ваш параметр окруженияLD_LIBRARY_PATH
и помещён в/usr/lib/hadoop/lib
. Вам следует также программно привязать (soft link) его в/usr/lib/hadoop/lib/native/Linux-amd64-64/libcephfs_jni.so
.
Кроме того, встроенный клиент CephFS должен быть установлен на каждом узле кластера Hadoop. Для дополнительной и самой последней информацмм использования CephFS для Hadoop, пожалуйста, обращайтесь к официальной документации Ceph на http://ceph.com/docs/master/cephfs/hadoop и к GitHub Ceph на странице https://github.com/ceph/cephfs-hadoop.