Nfs і cifs що вибрати, about netapp
Перш за все вибір NAS-протоколу визначається приналежністю IT-інфраструктури, що використовує NAS-пристрій, до одного з двох «царств» - «Windows» або «UNIX».
«Рідний» (native) протокол для Windows - CIFS, для UNIX (Linux, Solaris, AIX, FreeBSD і т.п.) - NFS. Звичайно, в більшості OS існує підтримка протоколів сусіднього «царства». Так, наприклад, NFS для Windows поставляється в безкоштовному нині продукті MS Services for UNIX 3.5 (SFU, безкоштовно скачується з веб Microsoft) або SAMBA (www.samba.org. Включений нині в більшість дистрибутивів UNIX) для підтримки CIFS на UNIX. Але, зрозуміло, рідний протокол для системи майже завжди краще, хоча б просто з міркувань мінімізації налаштувань і інсталяцій, а значить помилок адміністраторів і несподіваних проблем з продуктивністю.
Stateless і Stateful протоколи. Що це і чим загрожує.
Протоколи файлового доступу NFS і CIFS, крім приналежності до двох «таборів» UNIX і Windows, розрізняються також принциповою різницею способів звернення до даних: т.зв. stateless і stateful.
NFS це протокол stateless. Це означає, перш за все те, що він за своєю природою не зберігає стан з'єднання, і кожне звернення до файлу починається «як з чистого аркуша». Причиною цього було те, що NFS спочатку створювався як протокол доступу до даних по апріорі ненадійним, «глобальним» мереж. Між зверненням до файлу міг статися обрив і відновлення з'єднання, маршрут до файлу, з точки зору мережі, міг помінятися (що нормальна ситуація для TCP-мережі). Все це не повинно було впливати на процес доступу до даних.
Для правильної обробки таких ситуацій була обрана так звана «stateless» модель з'єднання. При цьому кожне звернення робиться припускаючи, що стан з'єднання не зберігається або не відомо. Операція зміни байта у файлі проводиться як «звернутися до файлу - перевірити його існування - відкрити файл на запис - записати байт - закрити файл». При цьому між операціями файл може зникнути, бути знову створений, переміститися на інший пристрій і так далі. З точки зору протоколу NFS це зовсім неважливо. Стан з'єднання між додатком і його файлом не зберігається, і кожне з'єднання створюється заново. Здавалося б зайві зусилля і накладні витрати? Однак при загальній аскетичности NFS як протоколу (а створювався він ще за часів, коли модем на 2400 бод був цілком прийнятним засобом доступу до даних), у багатьох випадках ці додаткові операції з файлами не дуже обтяжують процес.
CIFS - Common Internet File System - Узагальнена інтернетні Файлова Система (також раніше відомий як SMB - Server Message Blocks - Блоки Повідомлень Сервера) народжений вже в наш час. Спочатку він розроблявся як мережевий протокол, що застосовувався в середовищі системи Microsoft LAN Manager, спершу для DOS, а потім для Windows, як спільна розробка MS і IBM. Успадкувавши технології LAN Manager і його протокол SMB з часів DOS, увійшовши в нову OS Microsoft Windows і пройшовши довгий шлях розвитку, протокол був стандартизований в 1987 році в IETF (RFC1001, RFC1002, IETF STD 19) під назвою CIFS.
Це більш складний, ніж NFS, протокол. Його область застосування це вже набагато більш надійна LAN. Вона дозволила вибрати для нього багато в чому більш вигідну модель «stateful», при цьому з'єднання будучи відкрито, наприклад, мається на увазі відкритим, його стан зберігається в OS, і воно не вимагає для кожного запису проходити всі операції з самого початку: «перевірили існування - відкрили - записали байт - закрили ». Однак внаслідок того, що NFS протокол простіший, і в багатьох місцях навіть примітивний (не забудьте, для якого середовища він спочатку проектувався), найчастіше в ряді випадків він, незважаючи на всі додаткові «накладні витрати», виявляється більш швидкодіючим. А для операцій, пов'язаних, наприклад, з перепідключеннями сховища даних в кластерної чи іншої відмовостійкої конфігурації, ще й кращим, за рахунок того, що спочатку передбачає з'єднання між споживачем даних і його джерелом ненадійним і здатним зникнути або змінитися в будь-яку мить.
Для використання NFS в середовищі Windows можна використовувати безкоштовно розповсюджуваний нині Microsoft продукт MS Services for UNIX (SFU). до якого включено клієнт для NFS. Підтримка протоколу NFS для середовища UNIX ж зазвичай включена за замовчуванням в усі дистрибутиви.
Підтримка ж CIFS в середовищі UNIX здійснюється через продукт під назвою SAMBA, це результат reverse engineering-а мережевого обміну протоколу і відтворення засобів використання протоколу в незалежному вільно розповсюджується продукті. Таке непросте і чревате майбутніми проблемами сумісності рішення було вибрано тому, що, не дивлячись на свою стандартизацію в IETF, протокол CIFS закритий і є власністю Microsoft, що обмежує його іспользваніе в ряді випадків в продуктах т.зв. «Вільного програмного забезпечення» (GNU). Офіційно ліцензією на його використання володіють зараз два найбільші виробники NAS, такі як Network Appliance і EMC. Лише тільки вони використовують повнофункціональний протокол CIFS в своїх незалежних від MS продуктах. Решта змушені або використовувати SAMBA, або застосовувати для нього версію Windows Storage Server, що несе в собі CIFS за замовчуванням.