IT-консалтинг Jamf Pro Блог Контакты

Xsan 20 – новый SAN от Apple

Максим Рязанов 31.03.2021

Четыре года назад мы опубликовали статью Воспоминания об 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.