При использовании 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. Тогда внешний вид ярлыков никогда не изменится и никуда не пропадет