Найти тему

Наступить на все грабли NAS

Оглавление

При использовании Mac OS встал вопрос о подключении сетевого диска. Запросы были простые...

Хочется сэкономить при покупке яблочной техники и было принято решение экономить на объёме дискового хранилища. Больно сладкие были рассказы проплаченных обзоров на сетевые хранилища, в том числе Synology, на примере которого и будет рассматриваться ситуация.

Что требовалось?

  • Скорость стабильного подключения
  • Скорость чтения и записи файлов
  • Стабильность подключения
  • Целостность итоговых файлов после передачи

Варианты реализации и ошибки возникшие на пути

Методом проб и ошибок были отметены стандартные для систем протоколы передачи файлов: SMB (Windows), AFP (Mac OS) и iSCSI.

Первый - потому что самый распространённый и самый медленный.

Второй хоть и был сделан яблоком для яблока, но был реализован аж в 1998 году, что накладывает тогдашние ограничения в скорости.

iSCSI хоть и считается самым быстрым и стабильным из всех, но не поддерживается в рамках разумного на процессорах Apple M1. Есть стабильно работающие реализации за 800$ за лицензию.

На условном моменте наличия у меня макбука на Intel - статья бы закончилась через пару абзацев с рассказом о поддержке iSCSI, но она еще не закончилась, потому что у меня ноут на M1?

NFS как Network file system или все таки Need for speed?

Почему он? Потому что его реализовывали ребята, которые работали над корпоративным сегментом передачи данных изначально, а уже потом сообщество Linux.

Наплодили ребята версий прилично, но вот в суперпродвинутых яблоках поддерживается версия от 2000го года, хотя последняя на текущий момент была выпущена в 2016.

Добавить поддержку новых версий невозможно, по крайней мере в рамках моих знаний.

Ближе к сути и пути решения.

Чтобы автоматически монтировать сетевой диск каждый раз при входе в систему достаточно перетащить иконку подключённого диска в окно «Пользователи и объекты входа» в настройках системы

Чтобы автоматически монтировать после «отвалов» есть Auto Mounter

Чтобы управлять параметрами подключения к NFS серверу есть NFS Manager от Bresink. Вот здесь я показал как его настроить.

Действительно много полезных настроек реализовано через приятный интерфейс.

К путям реализации

NFSv4 работает только на TCP, который конечно прилично хуже чем v4.2, но воз и ныне там.

Значит асинхронное подключение очень круто работает и отправляет файлы на сервер даже без подтверждения сервером, что файлы записаны до конца и целые.

Как делать не надо

UDP протокол тоже в существе своем не обязан никому подтверждать итоговую целостность переданных пакетов, а еще и многопоточность пристреливает всю схему - сервер отваливается. Туда сюда гоняет и никому ничего не подтверждает - тут любой бы отвалился.

юдп работает в синхронном режиме даже с миллионом потоков, но медленней в полтора раза чем тсп с асинхронным режими, смысла нет соответственно

Как надо делать

  • Асинхронность нужно оставить
  • TCP и не обсуждается
  • Потоков 16, потому что хранилище не дает больше
  • MTU без Jumbo Frames максимальное значение 1500
  • ! В NAS размеры пакетов чтения записи NFS 4КБ
  • Разрешения UNIX отключить
  • Привязать MAC к IP адресу в роутере для безопасности

Что я понял спустя пару месяцев

Удалять папки и файлы лучше переносом папок сразу в папку «#recycle», а не в корзину Mac. Папку «#recycle» можно вынести ссылкой в боковое меню Finder. Лучше переносить папку целиком, а не файлы поштучно.

Кешировать фото лучше сразу в каталог Capture One.

Папки вынесенные из сетевого хранилища в боковое меню Finder иногда отваливаются с концами, а в Dock становятся «?». Советую создать ярлыки (псевдонимы) нужных папок на Mac и уже их вынести в боковое меню Finder и Dock. Тогда внешний вид ярлыков никогда не изменится и никуда не пропадет