Четыре года назад мы опубликовали статью Воспоминания об Xsan 5 или назад в будущее. Новая версия кластерной файловой системы от Apple, которая шла в комплекте с macOS Sierra (10.12) и являлась актуальной на тот момент, принесла с собой немалое количество изменений и нововведений.
В следующей версии операционной системы от Apple, macOS High Sierra (10.13), Xsan была обновлена до номера 5.0.1 и содержала в себе лишь небольшие исправления и улучшения.
В последующих релизах macOS версия Xsan оставалась неизменной, и даже клиент на macOS Catalina (10.15) без проблем подключается к Xsan 5.0.1 под управлением контроллера на macOS High Sierra (10.13).
И только с выходом macOS Big Sur в 2020 году возникла некоторая интрига: новая система вышла, а таблица совместимости Xsan на сайте Apple, по прежнему, не обновлена.
Осенью того же года вышла новая версия кластерной файловой системы Quantum Stornext 7, в документации к которой фигурирует Xsan 20. Дело в том, что Xsan с самой первой версии основан на файловой системе StorNext от Quantum, а клиенты macOS имеют в себе встроенный клиент для подключения к StorNext.
От Xsan 5 в Catalina до Xsan 20 в Big Sur
Давайте же вместе с Apple “перепрыгнем” к последней версии Xsan и посмотрим, что нового в этой файловой системе.
Итак, раздел на сайте Apple, содержащий информацию о версиях Xsan в составе macOS и совместимости с клиентами Mac и StorNext FX, на момент написания этой статьи по прежнему не обновлен и содержит лишь упоминания о версии Xsan 5.0.1.
А судя по таблицам совместимости, в ее основе лежит как раз StorNext 7, презентованная осенью 2020 года. Напомним, что предыдущая версия Xsan была основана на StorNext 5. Это любопытно, так как получается, что 6 версию Apple и вовсе проигнорировала.
На происхождение от 7 версии указывает и встроенная утилита cvversions, вывод которой в macOS Big Sur демонстрирует следующее:
% cvversions
File System Server:
Server Revision 7.0.0 Build 589[94125]
Branch Head BuildId D
Built for Darwin 20.0 x86_64
Created on Thu Jan 21 00:06:43 PST 2021
Built in /AppleInternal/BuildRoot/Library/Caches
/com.apple.xbs/Sources/XsanFS/XsanFS-678.80.3/buildinfo
File System Client:
Client Revision 7.0.0 Build 589[94125]
Branch Head BuildId D
Built for Darwin 20.0 x86_64
Created on Thu Jan 21 00:06:43 PST 2021
Built in /AppleInternal/BuildRoot/Library/Caches
/com.apple.xbs/Sources/XsanFS/XsanFS-678.80.3/buildinfo
Host OS Version:
Darwin 20.3.0 Darwin Kernel
Version 20.3.0: Thu Jan 21 00:07:06 PST 2021;
root:xnu-7195.81.3~1/RELEASE_X86_64 x86_64
В отличие от предыдущей версии в macOS Catalina:
$ cvversions
File System Server:
Server Revision 5.3.1 Build 589[63493]
Branch Head BuildId D
Built for Darwin 19.0 x86_64
Created on Fri Oct 30 00:39:41 PDT 2020
Built in /AppleInternal/BuildRoot/Library/Caches
/com.apple.xbs/Sources/XsanFS/XsanFS-630.120.1/buildinfo
File System Client:
Client Revision 5.3.1 Build 589[63493]
Branch Head BuildId D
Built for Darwin 19.0 x86_64
Created on Fri Oct 30 00:39:41 PDT 2020
Built in /AppleInternal/BuildRoot/Library/Caches
/com.apple.xbs/Sources/XsanFS/XsanFS-630.120.1/buildinfo
Host OS Version:
Darwin 19.6.0 Darwin Kernel
Version 19.6.0: Thu Oct 29 22:56:45 PDT 2020;
root:xnu-6153.141.2.2~1/RELEASE_X86_64 x86_64
Что же нового в Xsan 20?
Чтобы ответить на этот вопрос, мы, как и в прошлый раз, сперва создадим том Xsan на предыдущей версии Xsan 5.0.1, затем обновим его до Xsan 20 и опишем нюансы процесса обновления. А потом поговорим про все фишки и особенности новой версии и сравним изменения в инструментах управления новой кластерной файловой системы.
По просьбе клиента желающего продлить жизнь своего немолодого комплекса, в качестве тестового стенда мы использовали старый верный Xserve 3,1 с оригинальной картой LSI 4GB/s FibreChannel и двумя массивами 4GB/s Fibre Channel. Потребовались некоторые ухищрения, чтобы поставить на этот сервер последнюю версию macOS, однако подробности этого выходят за рамки этой статьи.
В macOS Catalina (10.15.7) мы использовали приложение Server.app 5.10, с помощью которого запустили службы Open Directory и Xsan, а также создали том Xsan, который назвали в соответствии с его версией, “Xsan501”.
После этого мы запустили установку macOS Big Sur (11.2.3) поверх macOS Catalina (10.15.7), без форматирования диска.
Далее, заменили Server.app на новую версию 5.11 и в процессе запуска, при обновлении служб, получили ошибку Error Domain: migrate_ds.py Code:78
Служба Open Directory оказалась недоступна. При попытке ее запуска предполагалось лишь создать новый Open Directory Master или Join as replica. К сожалению, перед обновлением мы не сделали резервную копию Open Directory в виде sparseimage, так как сервер не находился в продакшене. Поэтому нам пришлось погрузиться во внутренности OpenLDAP на macOS.
Всегда делайте резервную копию перед обновлением!
Нам удалось решить проблему, найдя файл:
/var/db/openldap/migration/oldsystem.tar
И заменив файлы из этого архива в следующих папках:
/etc/openldap/
/var/db/openldap/
Благо в архиве была сохранена структура папок и файлов.
В результате служба Open Directory стартовала и отобразилась в Server.app.
На вкладке Xsan мы активировали службу и выбрали Restore a previous SAN configuration.
Через пару секунд мы увидим привычный интерфейс службы и запущенный том Xsan.
Никакого обновления формата метаданных, как в случае перехода на Xsan 5, на этот раз не потребовалось.
Для наглядности мы переименуем наш тестовый том Xsan из “Xsan501” в “Xsan20”.
Анализ файла конфигурации тома Xsan не показал никаких отличий в размерах буферов или синтаксисе.
В целом конфигурационные файлы практически не изменились. Заметили лишь то, что если ранее универсальный уникальный идентификатор клиента Xsan хранился в файле:
/Library/Preferences/Xsan/uuid
То теперь он хранится в:
/Library/Preferences/Xsan/snfs_uuid
Вероятно, самые большие изменения Xsan претерпел в инструментарии управления.
В первую очередь они коснулись утилиты cvadmin, что неудивительно, поскольку это, пожалуй, наиболее часто используемый инструмент для повседневного управления Xsan.
# cvadmin
Password:
Xsan Administrator
Enter command(s)
For command help, enter "help" or "?".
List FSS
File System Services
(* indicates service is in control of FS):
Selected Cluster: _cluster0/_addom0
Cluster: _cluster0/_addom0
1>*Xsan20[0] located on 127.0.0.1:49230 (pid 598)
Select FSM "Xsan20"
Created : Mon Mar 15 13:27:39 2021
Active Connections: 1
Fs Block Size : 4K
Msg Buffer Size : 8K
Disk Devices : 2
Stripe Groups : 2
Fs Blocks : 11962884352 (44.57 TB)
Fs Blocks Free : 11959957858 (44.55 TB) (99%)
Можно заметить новую строчку Cluster. Соответствующий ключ должен позволить настраивать управление файловыми системами с контроллерами метаданных Xsan (MDC), объединенными в кластеры и поддомены разного размера, и потенциально добавлять клиентские машины в несколько разных SAN одновременно (при выполнении ряда условий).
Пока трудно оценить, насколько это масштабное нововведение и говорить о его практической стороне рано, но потенциально оно выглядит многообещающим.
Новый ключ -mdarchive, существенно расширивший возможности бывшего -metadump для создания резервных копий.
Убрали и -multipath, -down, up.
В то время как появились –coord, –discon, –qbm, –repblocked.
И некоторые другие ключи, добавляющие для cvadmin очень интересные возможности.
Кроме появления для всех утилит cv/sn поддержки архитектуры arm64e, были существенно переработан и функционал самих команд.
Помимо cvadmin, качественно обновились все ключевые инструменты управления:
cvaffinity
cvfsck
cvmkfile
cvmkfs
cvupdatefs
fsm
fsmpm
fsnameservers
mount_acfs
sncfgtransform
snfsdefrag
snfs_config
snlicense
xsanctl
Подробнее о нововведениях можно узнать во встроенной справке к этим командам.
Постоянные читатели могут помнить, как в прошлой статье цикла мы починили утилиту редактирование файла конфигурации Xsan sncfgedit, которая содержала ошибку, препятствующую его работе еще со времен Mac OS XLion (10.7).
В новой версии Xsan ошибка была исправлена Apple и утилита работает “из коробки”!
Кроме того, что Apple вдохнула новую жизнь в привычные утилиты, в Xsan 20.0 добавили и новые инструменты, направленные на поиск узких мест (bottlenecks), тестирование производительности и оптимизацию файловой системы для работы с видео. Их еще предстоит изучить более внимательно, что опять же несколько выходит за рамки данной статьи, однако вот краткий обзор их работы:
mdt — Тест производительности метаданных
# ./mdt -a /Volumes/Xsan20
mdt 1.0: Timing metadata ops/second on 8 streams of 16384 files
on 1 file system(s)
mount point #files creates stats chmods moves removes
/Volumes/Xsan20 131072 1181 7283 2672 971 2296
mdt: Aggregate: 131072 1181 7283 2672 971 2296
Mio — Многопоточный тест I/O
% ./Mio -cw /Volumes/Xsan20/file1 /Volumes/Xsan20/file2
Mio: Timing 2 stream(s) of 1024 x 1M direct writes queued 2 deep
stream[0]: file1: write 1073.74 MBytes @ 307.64 MBytes/Second
stream[1]: file2: write 1073.74 MBytes @ 306.46 MBytes/Second
vidio — Тест производительности кадров видео
% ./vidio -cw -F 30 -f hdtv /Volumes/Xsan20
vidio: Timing 1 stream of 60 frames of 8294400 byte
direct writes queued 1 deep
stream[0] {
Seconds 1.97
Number of frames 60
Frame time (ms) 33.33
Dropped frames 0
Frames/sec 30.47
MBytes 497.66
MBytes/sec 252.71
} /Volumes/Xsan20
vidiomap — Инспектор расположения кадров видео и релокатор (Video frame allocation inspector and resequencer)
# ./vidiomap -vr /Volumes/Xsan20
Password:
/Volumes/Xsan20 {
gap sg start end nblks MBytes
.DS_Store +0 0 0x8e90d 0x8e90e 2 0.01
30-282812.mp4 +254 0 0x8ea0d 0x9733f 35123 137.20
File system block size 4096
Total files 2
Total MBytes 137
Total extents 2
Total gaps 1 -0 +1
Average gap in fsblocks 254 -0 +254
Percent contiguous 50%
}
./vidiomap: Info: 0.002577: Resequencing files in /Volumes/Xsan20
/Volumes/Xsan20 {
gap sg start end nblks MBytes
.DS_Store +0 1 0x8f4a 0x8f4b 2 0.01
30-282812.mp4 +0 0 0x97540 0x9fe72 35123 137.20
File system block size 4096
Total files 2
Total MBytes 137
Total extents 2
Total gaps 0 -0 +0
Average gap in fsblocks 0 -0 +0
Percent contiguous 100%
}
В целом, проделанная в Купертино работа вселяет оптимизм в развитие Xsan.
После того как в версии Server.app 5.7.1 Apple избавилась от львиной доли популярных сервисов, мы увидели, что Xsan не только остаются в портфолио компании, но и получает дальнейшее развитие.
Сегодня Apple предлагает свою кластерную файловую систему Xsan, основанную на самой актуальной версии Enterprise файловой системы от Quantum Corporation, для всех пользователей и профессионалов на Mac.