Автор: Юрий Ревич
Простой юзер, этакий условный Голубицкий, сидящий за личным ноутбуком в глухой индийской деревне, может и не подозревать, что он использует самую распространенную технологию хранения данных под названием DAS. Ну, как герой Мольера не подозревал, что он говорит прозой. На самом деле такое знание имеет смысл лишь при наличии некоей альтернативы - кроме прозы, бывает еще поэзия. А кроме DAS?
DAS расшифровывается как Direct Attached Storage (Козловский бы, несомненно, перевел это как "Прямовоткнутое хранилище"). В простейшем случае это жесткий диск в персональном компьютере или на сервере. Или несколько дисков, может быть, соединенных в RAID. А истые технофилы обзаводятся внешними дисками, подключающимися по USB или FireWire, или мобильными рэками.
Подобные DAS-системы устраивают нас лишь до поры до времени. Меня, к примеру, уже почти не устраивают - хотя я не качаю фильмов, музыки или пиратских ISO-образов, а второй компьютер в домашней сети по большей части используется для, как выражается жена, "маркетинговых исследований" в Интернете. Поэтому мне не нужно общее хранилище данных, вполне достаточно одной общей папочки на главном компьютере да общего доступа к принтеру.
Почему я начал испытывать нехватку отдельного хранилища данных? А вот почему. База писем у меня давно превысила 3 гигабайта; основная рабочая папка с документами, которую приходится архивировать на второй жесткий диск ежедневно (а то и чаще) - 4 гигабайта; основной архив фотографий и прочих изображений - 25 гигабайт (и это при том, что я регулярно избавляюсь от мусора). К тому же есть много мелких тематических папочек, которые используются редко, но потеря данных в которых означала бы катастрофу даже больших масштабов, чем потеря основной папки с документами.
Конечно, существует множество простых решений по архивированию данных в рамках DAS. RAID-1 для надежности или второй жесткий диск, периодический сброс на оптические носители (ага, на данный момент число DVD со сжатым архивом у меня лично составляет 16 штук. Попробуйте одни только инкрементные архивы, что создает Acronis, регулярно туда записывать - гарантирую стойкое отвращение к оптике всерьез и надолго). То есть нужно внешнее хранилище данных, желательно с быстрым доступом, максимальной надежностью, и такое, чтобы надолго забыть про ограничения по объему.
Когда-то самым распространенным решением был файл-сервер в домашней сети. Умельцы приспосабливали под него старые компьютеры, от файл-сервера ведь требуется только одно: быстро читать и писать данные, а производительность системы по большому счету не важна. Но обеспечение надежности в такой системе заставит и репу как следует почесать, и кошелек перетряхнуть: для старого компьютера потребуется как минимум RAID-контроллер, что всегда обходилось недешево - и по деньгам, и по затраченным усилиям. Да и сочетание RAID + Windows (даже XP) звучит не слишком обнадеживающе.
Тут-то и всплывают NAS - Network Attached Storage, сетевые хранилища данных. Собственно, NAS - это в основе своей тот же файл-сервер, только лишенный наворотов, характерных для современных ОС, в первую очередь - привычного оконного интерфейса, поддержки видеоускорителей, мышей-клавиатур, системы управления запуском приложений и прочего, и оптимизированный для дисковых операций. NAS подсоединяется к домашней или офисной сети (даже если она состоит из одного-единственного компьютера) по интерфейсу Ethernet. Причем любой NAS одинаково доступен в любой ОС, включая и Windows, и Mac OS, и даже экзотические версии Unix, ибо управляется через браузер, а как он там устроен внутри - никого не волнует (см. врезку).
NAS хороши еще и тем, что предлагают кучу дополнительных приятностей: кто, например, мешает ввести в его состав FTP и торрент-клиентов? В результате практически все сегодняшние NAS являются "мечтой пирата": они могут в режиме 24х7, без привязки к главному компьютеру, качать заданные файлы. Причем заодно решается главная проблема файлообменных сетей: доминирование личеров - тех, кто только скачивает, но не раздает. Обычно личерами становятся не из принципа, а из нежелания загружать свой канал "лишними" соединениями; если же сетевой накопитель все равно работает сам по себе, то какая вам разница, скачается файл через два дня или через два с половиной?
Кроме того, большинство современных NAS поддерживает функции медиа-сервера, принт-сервера и, что особенно интересно, веб-сервера - то есть круглосуточно включенное хранилище данных может еще и поддерживать вашу личную страничку в Сети (правда, домашним пользователям такую роскошь придется согласовывать с провайдером). NAS позволяют настраивать в широких пределах права доступа к папкам, имеют встроенные функции автоматического бэкапа. Кроме того, сетевой накопитель, благодаря своей специализированной ОС, гораздо лучше защищен от атак злоумышленников, нежели обычный файл-сервер. Есть модели NAS, позволяющие засекретить данные от любого неавторизованного пользователя, который при входе в сеть может даже и не подозревать о существовании такого хранилища.
Пожалуй, пора отправляться в магазин. О том, что из этого может получиться, расскажу обязательно.
Обеспечение сетевого доступа к файлам - задача далеко не простая, даже если на всех подключенных устройствах используется одна и та же операционная система. Если же их несколько, вопрос удаленного да еще и совместного доступа к файлам приходится решать принципиально.
Обычная схема чтения файлов с диска, как, например, в системе FAT, когда подпрограмма чтения файла один раз читает в каталоге запись начального кластера, а затем путешествует по цепочке связанных ссылок, пока не дойдет до конца файла, здесь не подходит. Во-первых, потому, что эти операции в разных файловых системах протекают по-разному и предусмотреть все возможные сочетания файловых систем и ОС, разумеется, невозможно. Во-вторых, потому, что во время чтения сеть может сбоить, а файл между операциями может быть изменен, перенесен (весь или его часть) или даже удален, а потом вновь создан - на то и совместный доступ. Значит, надо придумать механизм, который был бы полностью независимым и от ОС, и от файловой системы, и, к примеру, от уровней RAID, и вообще от того, как там внутри чего устроено. Такой подход, в частности, позволяет производителям NAS создавать свои собственные файловые системы, оптимизированные под удаленное хранение данных[Примером может случить WAFL - файловая система от Network Appliance, в которой данные не стираются при их изменении, а изменения записываются на свободное место, при этом лишь переносится указатель со старого блока на новый. Это повышает скорость записи, облегчает архивирование и откат к старому состоянию.].
Таких механизмов существует несколько. Один из них создан компанией Sun в 1984 году, еще во времена, когда модемы на 600 бод были вершиной инженерной мысли, - это NFS (Network File System), которая, несмотря на название, по сути представляет собой не какую-то специальную файловую систему, а протокол обмена файлами, абстрагирующийся от типов файловых систем как сервера, так и клиента. NFS ориентируется, естественно, на Unix, и в ее основе лежит простая идея: каждое обращение к серверу выполняется как бы с чистого листа, без сохранения предыдущего состояния (stateless). То есть в NFS каждая операция, даже изменение одного-единственного байта, начинается с проверки существования файла, открытия его на запись/чтение и т. д. Если учесть, что NFS в Ethernet-сетях, как правило, еще и использует протокол TCP/IP с его пакетами, то накладные расходы получаются довольно значительными. Конечно, Windows тоже совместима с NFS (через MS Services for Unix - SFU).
Microsoft, конечно же, не могла удержаться, чтобы не придумать свой протокол, который поначалу (во времена DOS и Windows NT) назывался SMB, а теперь известен как CIFS (Common Internet File System - единая файловая система для Интернета). В CIFS состояние после запроса сохраняется (stateful), что в принципе должно ускорить последовательное обращение к системе, но на практике ускорение невелико, а в ряде случаев CIFS работает даже медленнее. В Unix доступ к CIFS обеспечивается через сервис Samba.
Есть и другие подобные протоколы (например, AFP для Mac OS), и все они, как правило, поддерживаются современными NAS.