Организация хранения данных при построении IT-инфраструктуры у IaaS-провайдера всегда связана с обеспечением приемлемого уровня отказоустойчивости и доступности. Традиционный вариант использования выделенных серверов предполагает, что надежность хранения данных можно обеспечить при помощи RAID-массивов, аппаратных или программных.
Тем не менее, вариант с зеркалированием всегда означает, что вы не сможете использовать все дисковое пространство на сервере. Если это обычный RAID1, то вы в любом случае получаете в 2 раза меньше доступного места на диске — это неизбежная плата за обеспечение надежности хранения данных. Как только данных становится больше, приходится сталкиваться с проблемой масштабирования и зачастую переноса данных.
Чтобы значительно упростить процесс организации хранения данных, мы в Selectel создали новую услугу «Файловое хранилище», позволяющую получить дисковое пространство любого объема и использовать его в различных сценариях работы с прочими услугами. Под катом рассказываем о преимуществах такого хранения и показываем, как его настроить в Ubuntu, Proxmox, VMware ESXi и FreeNAS.
Несколько простых сценариев, с которыми сталкиваются системные администраторы:
- выделение места для бэкапов;
- организация переноса данных;
- обеспечение резервного дискового пространства (если на хосте заканчивается место, то можно временно подключить хранилище и обеспечить дополнительное место для хранения данных).
Те, кто уже пользуется нашими услугами знает, что у нас уже давным-давно существует услуга объектного хранилища данных с поддержкой S3 API, которое отлично подходит для хранения бэкапов, но требует использования дополнительного ПО.
Любое хранилище проще всего использовать штатными методами, например, примонтировав его к файловой системе. Это дает возможность софту обращаться с дополнительным хранилищем так, словно оно локально расположено на сервере. Достигается это организацией связности по L3, о чем мы рассказывали в одной из предыдущих статей, а также использованием одного из двух протоколов — NFS или CIFS.
При заказе услуги пользователь сам выбирает любую удобную для него локальную подсеть, шлюз которой будет шлюзом до хранилища. Далее все просто:
- Прописать сетевые настройки на интерфейсе локальной сети из выбранной подсети.
- Создать статический маршрут через шлюз.
- Создать директорию в качестве точки монтирования.
- Примонтировать хранилище в созданную директорию.
Попробуем проделать это в Ubuntu 16.04 LTS.
Настройка в Ubuntu 16.04
Предположим, что в качестве маршрутизируемой локальной сети мы выбрали 192.168.10.0/24. Хранилище нам доступно через NFS по адресу 10.130.9.103:/efd47034-24a1-4701-8058-ce6e36587b0f.
Открываем сетевые интерфейсы на редактирование:
sudo nano /etc/network/interfaces
Конфигурируем сетевую карту, подключенную к маршрутизатору локальной сети (в нашем примере это enp3s0):
iface enp3s0 inet static
address 192.168.10.10
netmask 255.255.255.0
up route add -net 10.130.9.0/24 gw 192.168.10.254
IP-адрес прописывается любой удобный из этой подсети. Теперь создаем директорию, куда будем монтировать хранилище:
sudo mkdir /mnt/nfs
Устанавливаем утилиту mount.nfs4, если она не была инсталлирована раньше:
sudo apt install nfs-common
Осталось лишь настроить автоматическое монтирование хранилища при старте системы:
sudo nano /etc/fstab
Дополним файл следующими строками:
# Selectel NFS
10.130.9.103:/efd47034-24a1-4701-8058-ce6e36587b0f /mnt/nfs nfs defaults 0 0
Теперь можно смело перезагружать операционную систему и файловое хранилище будет автоматически примонтировано при запуске.
Проверяем, что хранилище смонтировалось:
user@test:~$ df -h
Файл.система Размер Использовано Дост Использовано% Cмонтировано в
udev 12G 0 12G 0% /dev
tmpfs 2,4G 9,0M 2,4G 1% /run
/dev/sda5 913G 2,3G 911G 1% /
tmpfs 12G 0 12G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 12G 0 12G 0% /sys/fs/cgroup
/dev/sda1 922M 71M 805M 9% /boot
tmpfs 2,4G 0 2,4G 0% /run/user/1000
10.130.9.103:/efd47034-24a1-4701-8058-ce6e36587b0f 1,1T 7,7G 1,1T 1% /mnt/nfs
Таким образом, мы можем записывать любые данные в /mnt/nfs, и они будут записаны в «Файловое хранилище». А дальше немного магии, которая обеспечит надежное хранение. Любые, попавшие в хранилище данные, троекратно реплицируются на разные диски в разных серверах, находящихся в разных серверных стойках.
Скорость чтения/записи — 120/100 IOPS. Риск потери данных при этом серьезно снижается: даже выход из строя двух разных дисков в двух разных серверах не вызовет каких-либо проблем. Кроме того, если заказанное пространство закончилось, его можно без проблем увеличивать до любого необходимого значения.
Действия для свежих версий Ubuntu имеют похожую логику с тем отличием, что сетевые настройки задаются через netplan. Актуальная инструкция для этого есть в нашей Базе знаний.
Настройка в VMware ESXi
Услуга «Файловое хранилище» достаточно универсальна, чтобы использовать ее для расширения возможностей хостов виртуализации, таких как VMware ESXi. Этот гипервизор позволяет смонтировать NFS-шару как Datastore, что даст возможность, к примеру, хранить там ISO-образы или редко запрашиваемые данные. Обратите внимание, что услуга не подойдет для хранения дисков виртуальных машин.
Чтобы выполнить монтирование, потребуется выполнить несколько дополнительных действий. Не станем останавливаться на вопросах настройки сети, главное — присвоить IP-адрес сетевому адаптеру из подсети 192.168.10.0/24. Единственным нетривиальным действием станет прописывание статического маршрута в гипервизор. Это выполняется через консоль:
esxcli network ip route ipv4 add --gateway 192.168.10.254 --network 10.130.9.0/24
Проверяем, что новый маршрут появился в Web-интерфейсе.
Теперь можно спокойно добавлять Datastore. Выбираем пункт Mount NFS datastore.
Задаем любое имя, в поле NFS server указываем адрес хранилища, а в поле NFS share — идентификатор. Выбираем версию протокола NFS4, при этом не задавая имя пользователя и пароль.
Новый Datastore появится в списке доступных.
Теперь место в файловом хранилище можно использовать в любой момент, когда оно потребуется.
Настройка в Proxmox
Не только VMware ESXi поддерживает возможность работы с NFS, но и другие гипервизоры, такие как Proxmox. Поскольку Proxmox актуальной версии (на момент написания статьи это версия 11) базируется на Debian, то штатная команда по добавлению статического маршрута route add не сработает без дополнительных действий. Чтобы продолжать пользоваться привычными командами вначале установите пакет net-tools:
apt update
apt install net-tools
Теперь можно добавить маршрут:
route add -net 10.130.9.0/24 gw 192.168.10.254
Новый статический маршрут отобразится в таблице маршрутизации:
10.130.9.0/24 via 192.168.10.254 dev enp3s0
К сожалению, штатные функции по монтированию NFS- и CIFS-хранилищ не всегда работают правильно, так что авторам системы явно есть куда развиваться. При попытке смонтировать хранилище через Web-интерфейс вы скорее всего столкнетесь с ошибкой вида «storage is not online», даже несмотря на полную доступность:
Придется использовать workaround-решение по монтированию NFS-хранилищ, как в случае Ubuntu. Затем добавим хранилище как обычную директорию.
После добавления директории, куда смонтировано хранилище, можно будет использовать его как для хранения ISO-образов, так и для бэкапов.
Наличие такого хранилища дает дополнительные возможности. В первую очередь это позволяет использовать общее дисковое пространство для нескольких одиночных серверов или хостов виртуализации. Второй вариант более интересен, а именно — миграция с одной системы виртуализации на другую. Например, с того же Proxmox на VMware ESXi, используя утилиту конвертирования образов дисков qemu-img:
qemu-img convert -f qcow2 test.qcow2 -O vmdk test.vmdk
Теперь полученный образ test.vmdk можно положить в хранилище и забрать его из VMware ESXi. NFS максимально абстрагирован от файловой системы сервера, поэтому такой трюк будет успешно работать.
Настройка в FreeNAS
Сетевые хранилища часто реализуют на базе специализированных ОС, таких как OpenMediaVault (основана на Debian) и FreeNAS (основана на FreeBSD). Последняя давно заслужила всеобщее признание и часто используется как в «быту», так и в ЦОД. Посмотрим, как услуга работает в случае использования FreeNAS.
Первоначальные сетевые настройки задаются сразу в главном консольном меню, что значительно упрощает процесс настройки. Задаем IP-адреса для сетевых адаптеров, маршрут по умолчанию и сразу же статический маршрут до хранилища (пункт Configure Static Routes).
Заходим в web-интерфейс. Теперь наша задача — включить NFS-клиент, который изначально отключен, поэтому потребуется внести изменения в конфигурацию:
vi /conf/base/etc/rc.conf
Нажимаем клавишу I и вносим строку:
nfs_client_enable="YES"
Нажимаем ESC и вводим команду сохранения и выхода из vi:
:wq!
Перезагружаемся и приступаем к монтированию. В любой доступной директории создаем новую папку, которая послужит точкой монтирования:
mkdir /mnt/Test/nfs
Монтируем наше хранилище, команда слегка отличается от привычной в Linux:
mount -t nfs 10.130.9.103:/efd47034-24a1-4701-8058-ce6e36587b0f /mnt/Test/nfs
Проверяем, что наше хранилище смонтировалось:
Теперь мы можем использовать дисковое пространство в файловом хранилище по необходимости — к примеру, чтобы перенести какие-либо данные.
Вместо заключения
Единая точка хранения данных, зарезервированная троекратно и доступная по NFS/CIFS, — хороший способ объединить разные элементы внутри единой IT-инфраструктуры. Она позволит значительно улучшить гибкость работы с данными, как на постоянной, так и временной основе: миграция, перенос бэкапов, необходимость в дополнительном дисковом пространстве.
Мы надеемся, что «Файловое хранилище» придется по вкусу нашим клиентам, которые уже арендуют у нас выделенные или облачные серверы, а также упростит процесс создания собственной IT-инфраструктуры для новых пользователей. Будем рады узнать ваше мнение и готовы ответить на вопросы в комментариях.
Спасибо, что дочитали текст до конца! Если он вам понравился, не забудьте подписаться на блог облачного провайдера Selectel, чтобы не пропустить другие интересные статьи. В блоге мы пишем не только про разработку облачных сервисов в компании, но и делаем обзоры уникального «железа», дискутируем на актуальные темы из мира IT и балуем читателей интересным научпопом по выходным.