Глава 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 и MDS

Файловая система Ceph предлагает POSIX- совместимую распределённую файловую систему любого размера, которая применяет для хранения своих данных Ceph RADOS. Для реализации файловой системы Ceph вамнужен работающий кластер хранения Ceph и по крайней мере один сервер метаданных Ceph (MDS, Metadata Serer) для управления его метаданными и их хранения в отдельности от данных, что помогает уменьшить сложность и улучшить надёжность. Следующая схема изображает взгляд на архитектуру CephFS и ее интерфейсы

 

Рисунок 4.1. Архитектура 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 без каких- либо снимков.

 Развёртывание MDS Ceph

Чтобы настроить сервер метаданных для файловой системы Ceph вам следует иметь работающий кластер Ceph. В предыдущих главах мы изучили развёртывание кластера хранеия Ceph, для размещения MDS мы воспользуемся тем же самым кластером.

  Как это сделать...

  1. На 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]# 
     	   
  2. Эта команда должна развернуть ваш 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]# 
     	   
  3. Создайте пулы данных и метаданных для файловой системы Ceph:

    # ceph osd pool create cephfs_data 64 64
    # ceph osd pool create cephfs_metadata 64 64
     	   
  4. Наконец, создайте файловую систему 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]# 
     	   
  5. Чтобы проверить состояние 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]# 
     	   
  6. Не рекомендуется использовать кольцо ключей пользователя 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 ~]# 
     	   

 Доступ к CephFS через драйвер ядра

В ядро Linux 2.6.34 и более поздние версии была добавлена внутренняя поддержка для Ceph. В данном рецепте мы продемонстрируем то, как получить доступ к CephFS через драйвер ядра Linux на ceph-client1

  Как это сделать...

  1. Проверьте версию ядра Linux вашего клиента:

    # uname -r
     	   
  2. Создайте точку монтирования каталога:

    # mkdir /mnt/cephfs
     	   
  3. Получите ключи для пользователя client-cephfs, которого мы создали в предыдущем разделе. С вашего узла монитора Ceph выполните следующую команду для получения ключей пользователя:

    # ceph auth get-key client.cephfs
     	   
  4.      

    Смонтируйте CephFS применив внутренний вызов Linux mount со следующим синтаксисом::

    Синтаксис: mount -t ceph <Monitor_IP>:<Monitor_port>:/ <mount_point_name> -o name=admin,secret=<admin_user_key>

    # 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#
  5. Чтобы смонтировать 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# 
     	   
  6. Чтобы сделать возможным монтирование 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
     	   
  7. Размонтируйте 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# 
     	   
  8. Выполните какие- нибудь операции ввода/ вывода в вашей файловой системе 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:~# 
     	   

 Доступ к CephFS через клиента FUSE

Файловая система Ceph внутренне поддерживается ядром Linux; однако, если ваш хост работает с более ранними версиями ядра, или у вас существует зависимость от каких- то приложений, то вы всегда можете воспользоваться клиентом FUSE (Filesystem User Space) для Ceph чтобы смонтировать CephFS.

  Как это сделать...

  1. Установите пакет Ceph FUSE на своей машине client-node1:

    # uname -r
     	   
  2. Создайте файл кольца ключей своей CephFS, /etc/ceph/client.cephfs.keyring со следующим содержимым:

    [client.cephfs]
    key = AQAGSF5VMIDWHhAAox9s/oHg/6FPzf4xRQV73Q==
     	   
  3. Смонтируйте 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# 
     	   
  4. Чтобы монтировать CephFS при загрузке ОС, добавьте следующие строки в свой файл /etc/fstab на client-node1:

    id=cephfs,keyring=client.cephfs.keyring        /mnt/cephfs fuse.ceph defaults 00
     	   
  5. Размонтируйте CephFS и смонтируйте заново:

    # umount /mnt/cephfs
    # mount /mnt/cephfs
    	 

 Экспорт файловой системы Ceph в качестве NFS

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.

  Как это сделать...

  1. На ceph-node1 установите необходимые nfs-Ganesha пакеты:

    # yum install -y nfs-utils nfs-ganesha nfs-ganesha-fsal-ceph
     	   
  2. Поскольку это тестовая сборка, запретите межсетевой экран. Для ваших промышленных установок вы должны рассмотреть разрешение необходимых вам портов в межсетевом экране, обычно это 2049:

    # systemctl stop firewalld; systemctl disable firewalld
     	   
  3. Сделайте доступными необходимые NFS службы rpc:

    # systemctl start rpcbind; systemctl enable rpcbind
    # systemctl start rpc-statd.service
     	   
  4. Создайте свой файл настроек 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;
    	}
    }
     	   
  5. Наконец, запустите демон 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:~#
 	   

 ceph-dokan – CephFS для клиентов Windows

До текущего момента мы изучали различные методы доступа к 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, который вы уже клонировали в предыдущей главе.

  Как это сделать...

  1. Настройте машину Windows 7 или 8 иподключите ее в своюсеть, ту же гда находится ваш кластер Ceph (192.168.1.0/24).

  2. Убедитесь, что вы можете связаться с узлами монитора Ceph проверив доступ с применением команды telnet из командной строки:

    telnet 192.168.1.101 6789
     	   
  3. Когда вы убедились, что имеете возможность доступа к кластеру Ceph, загрузите ceph-dokan.exe и DokanInstall_0.6.0.exe с https://github.com/ksingh7/cephcookbook/tree/master/ceph-dokan на свой клиент Windows.

  4. Установите DokanInstall_0.6.0.exe; если вы используете ОС Windows 8, вы должны установить его в режим совместимости.

     

    Рисунок 4.2. Установка библиотеки Dokan



  5. Откройте командную строку Windows и смените каталог на абсолютный путь в каталог с установленным ceph-dokan.exe.

  6. В клиенте 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/.

  7. В настоящее время ceph-dokan не поддерживает аутентификацию cephx. Поэтому, для применения nfs-Ganesha вам понадобится запретить cephx на всех ваших машинах монитора кластера Ceph.

  8. Чтобы запретить cephx в кластере Ceph измените свой файл /etc/ceph/ceph.conf в элементах, связанных с аутентификацией на none:

    auth_cluster_required = none
    auth_service_required = none
    auth_client_required = none
     	   
  9. После изменения ceph.conf, перезапустите службы ceph на всех своих узлах мониторов:

    # service ceph restart
     	   
  10. Убедитесь, что 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]# 
     	   
  11. Наконец, в клиенте 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.

     

    Рисунок 4.3. CephFS в качестве локального диска



И CephFS, и ceph-dokan требуют дополнительного участия и развития для достижения достаточной зрелости в поддержке рабочих нагрузок с промышленным применением. Однако, они являются хорошими претендентами на тестирование и на присутствие в роли концептуального прототипа (PoC).

 CephFS вклинивающаяся замена HDFS

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.