Заметки инженера.
вторник, 24 апреля 2012 г.
Установка DropBox как сервиса в Windows
1) Заходим на сервер с административными правами, можно через удаленный раб. стол.
2) Скачиваем Dropbox с сайта и устанавливаем для всех пользователей в папку C:\Program Files. Для этого запускаем инсталлятор с ключем /D=C:\Program Files. Например:
3) После установки необходимо выйти из Dropbox. В system tray делаем exit.
4) Далее скачиваем с сайта Microsoft программы instsrv.exe и srvany.exe. Это необходимо для установки программы, как сервиса. Программы входят в пакет Windows Server 2003 Resource Kit Tools. После установки пакета эти программы можно найти в c:\Program Files\Windows Resource Kits.
5) Далее необходимо скопировать файлы instsrv.exe и srvany.exe в C:\Program Files\Dropbox\bin.
6) Теперь в командной строке «C:\Program Files\Dropbox\bin\instsrv.exe» Dropbox «C:\Program Files\Dropbox\bin\srvany.exe». Для 2008 сервера команда:
sc create Dropbox binPath= «C:\Program Files\Dropbox\bin\srvany.exe» DisplayName= «Dropbox»
7) Далее изменения в реестр
reg ADD HKLM\SYSTEM\CurrentControlSet\Services\Dropbox\Parameters /v Application /d «C:\Program Files\Dropbox\Bin\Dropbox.exe».
8) И еще
reg ADD HKLM\SYSTEM\CurrentControlSet\Services\Dropbox\Parameters /v AppDirectory /d «C:\Program Files\Bin\Dropbox».
9) Удаляем ярлык из автозапуска.
del «C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Dropbox.lnk»
10) Заходим в службы. В настройках запуска Dropbox устанавливаем запуск от имени того пользователя, от которого производили установку и настройку. Этот пользователь должен обладать административными правами
11) В завершении стартуем службу:
net start Dropbox.
12) Устанавливаем полные права на папку с Dropbox для всех пользователей.
Dropbox как служба windows server 2016
Специфика работы Windows-серверов за исключением терминальных — будь то домашний сервер, или корпоративный — такова, что наличие на них открытых пользовательских сессий скорее исключение, чем правило. С другой стороны, все общедоступные сервисы облачного хранения данных позиционируют свои десктопные клиенты, исключительно как пользовательские (per-user), а не системные (per-machine) приложения. Надо заметить, при этом они не могут устанавливаться на компьютер пользователем без административных прав, что было бы вполне логично. Тот же Skype вполне себе такое умеет.
В сети есть описание запуска десктопного клиента сервиса Dropbox.com как службы на сервере Windows. Аналогичный рецепт есть и на русском. Чем такой вариант мне не нравится: запуск сервиса осуществляется из-под учётной записи Administrator, пароль которой в этом случае может быть легко получен злоумышленником с помощью широко известных инструментов типа SAPD.exe или его скриптовых реализаций. И если для домашнего сервера ещё можно на это не обращать внимания, то использование такого способа в многопользовательских сетях несёт неприемлемый риск.
Другим решением задачи автоматической синхронизации файлов между сервером и облачными сервисами может быть установка и запуск клиентов из-под системной учётной записи. К сожалению, не для всех сервисов это возможно. Например, родной для Windows клиент Skydrive прямо запрещает установку с административными правами. А вот с Dropbox такое сделать можно.
Всё ниже описанное делалось на Windows 7 SP1.
- PStools от SysInternals (из которых нужен только Psexec.exe).
- Дистрибутив Dropbox (Версия клиента 1.4.17 – актуальная на 18/09/2012)
- Нужны регистрационные данные учётной записи сервиса Dropbox.com (e-mail и пароль) и путь к нашей синхронизируемой папки. Она, к сожалению, не может называться иначе, чем Dropbox.
- Заранее создадим для неё родительскую папку.
- Лучше сразу собрать всё необходимое в одной папке,
- … и сразу открыть текстовый файл с логином, паролем и путём. В момент, когда они нам понадобятся, сделать это будет чуть сложнее.
Выполняем установку из-под системной учётной записи. Для этого запускаем консоль с административными правами:
Выполняем PSexec -i -s « \Dropbox 1.4.17.exe» (благо, создатели Windows нам это пока ещё позволяют сделать).
Получем обычное окно установщика.
В этот момент исчезает с экрана Windows Explorer, запущенный из-под пользовательской учётки. Неожиданно, но если у нас есть открытое окно Notepad‘а с параметрами установки, то это нам не помешает. Задаём все запрашиваемые программой параметры:
Отказываемся от платных вариантов (согласиться никогда не поздно), выбираем тип установки Advanced:
Это даёт возможность минимальной настройки параметров клиента.
Изменяем путь к синхронизируемой папке. Кнопка Make New Folder нам не поможет. И выбрать расположение папки из привычного диалогового окна нам тоже не дадут. Поэтому вводим имя директории вручную или копируем из открытого Notepad’ом файла. Установщик принимает расположение, добавляет к нему поддиректорию \Dropbox.
Выбираем, нужена ли нам Selective Sync (выборочная синхронизация). Обычно в этом сценарии применения сервиса она нам не нужна.
Пропускаем ознакомительный тур (кнопка Skip Tour) или ещё раз смотрим рекламу сервиса (Next-Next-…), и заканчиваем процесс установки.
Нажав кнопку Finish, видим, как в нашей папке появляются файлы, подгруженные из облачного хранилища. Как видим, сервис установлен и работает. Кто не верит, может сходить браузером на www.dropbox.com и проверить, как там появляется созданный на сервере файл.
Чтобы убедиться, что Dropbox запущен под системной учёткой, разрешим Windows Task Manager’у просматривать процессы всех пользователей, нажав Show processes from all users — и видим, что это действительно так.
Заодно перезапустим свой Windows Explorer, чтобы было удобно работать дальше. Кстати, можно это сделать и из консоли, не заходя в Task Manager.
После перезапуска в области уведомлений отображается иконка состояния сервиса. Кликнув по ней правой кнопкой мыши, откроем окно предпочтений и увидим установленным признак Start Dropbox on system startup.
А вот здесь нам просто врут. Правильно было бы писать не «on system startup», а «on user logon», так как на самом деле лишь создаётся запись в меню автозапуска пользователя. Если на любой системе с уже установленным сервисом выполнить msconfig.exe, то в этом можно будет убедиться.
Но с системной учётной записью такое назначение не работает, поэтому можно снимать эту галку и применять другие пути старта программы в режиме службы Windows — наиболее приемлемые описаны ниже.
Кстати, в этот момент можно откорректировать и положение директории синхронизации, и задать Selective Sync, кому надо. Русского языка в доступных System Languages, естественно, нет.
На этом можно считать установку и начальную настройку законченной. Теперь рассмотрим варианты запуска.
Запуск Dropbox как службы Widows с помощью NSSM
Со времён Windows Server 2003 известно, что практически любой исполняемый файл можно сделать службой Windows с помощью связки программ srvany и instsrv из Windows Server 2003 Resource Kit. Менее известна утилита nssm.exe, которую уже более 10 лет поддерживает и разрабатывает Iain Patterson. Она имеет определённые преимущества, но параноики могут обойтись неоднократно описанной классикой от Microsoft.
Хотя, настоящий параноик никогда не поставит к себе в продакшн сервер клиент Dropbox, не посмотрев Process Monitor’ом на тестовой системе, куда тот лезет и чем интересуется. А посмотрев, не поставит уже точно (и возможно будет прав).
Такой способ установки даст возможность рулить службой через оснастку Services со всеми вытекающими плюсами (логирование, возможность извещения об ошибках, автоматический перезапуск в случае сбоя и пр.)
Итак, копируем версию nssm.exe, соответствующую архитектуре компьютера, в директорию C:\windows\. Открываем административную консоль:
Вводим там команду nssm install для вызова интерфейса nssm.exe. Нашу службу назовём, например, DropBoxSvc. Задаём расположение исполняемого файла Dropbox.exe.
В случае x86 систем путь будет:
C:\Windows\System32\config\systemprofile\AppData\Roaming\Dropbox\bin\Dropbox.exe
В случае x64 систем немного по-другому:
C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\Dropbox\bin\Dropbox.exe
Нажимаем Install Service – и всё, служба создана. Проверяем её наличие через оснастку Services:
Далее настраиваем параметры службы. Рекомендуется установить задержанный старт, чтобы дать машине время на поднятие сетевых соединений:
Хотелось бы сделать службу интерактивной, вроде бы и галку такую («Allow service to interact with desktop«) на второй закладке поставить можно, но начиная с Vista этой возможности нет, так что все красивовсти родного интерфейса Dropbox останутся для нас недоступными. Остальные параметры – по вкусу, дефолтные тоже работают.
Если нужно автоматизировать управление службой для использования в командных файлах – можно использовать для запуска синхронизации команду sc stop DropBoxSvc, для остановки, соответственно, sc start DropBoxSvc.
Всё, перезагружаем машину и проверяем работу сервиса.
Запуск Dropbox, как задания Task Scheduler.
Этот вариант проще и не требует установки сторонних или не поддерживаемых Microsoft на платформе 2008 программ .
Плюс – более гибкое задание условий запуска.
Минус – невозможно администрировать через оснастку Services.
Задаём название и описание задачи:
Задаём условие исполнения – при старте системы.
Ставим задержку в 1 минуту от загрузки:
Задаём путь к исполняемому файлу Dropbox.exe. Как описано выше, он
будет зависеть от архитектуры системы:
В случае x86 систем путь будет:
C:\Windows\System32\config\systemprofile\AppData\Roaming\Dropbox\bin\Dropbox.exe
В случае x64 систем немного по-другому:
C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\Dropbox\bin\Dropbox.exe
Ставим условие необходимости сетевого подключения (без него работа сервиса бессмысленна, а памяти процесс Dropbox.exe занимает более 50 Мб).
Для удобства проверки и ручного запуска разрешаем запуск по требованию, а при неудачном запуске заставим задание повторять попытки каждые 10 минут в течение первого часа работы системы.
Dropbox: взгляд изнутри
В этой статье я расскажу о внутреннем устройстве популярного сервиса облачного хранения Dropbox. В частности, будет затронуто устройство протокола Dropbox, а также показана статистика его использования в некоторых странах Европы. Кроме этого, я сравню его с другими сервисами, такими как iCloud, Google Drive и SkyDrive.
Статья сугубо техническая. Не будет никаких сводных таблиц со стоимостью за Гб и анализом того, сколько еще можно получить за приглашенных «друзей».
Текст основан на научной статье “Dropbox изнутри: Изучаем сервисы облачного хранения” (Inside Dropbox: Understanding Personal Cloud Storage Services). PDF
В последние несколько лет произошел огромный скачок популярности сервисов облачного хранения данных. В гонке вооружений участвуют все крупные игроки и несколько молодых стартапов. В основном, вся информация о внутреннем устройстве сервисов и реальных цифрах их использования — это тайна за семью печатями. Нас кормят только данными, прошедшими через отдел маркетинга, что, безусловно, несколько отличается от реальности. Поэтому давайте копнем поглубже вместе с ребятами Idilio Drago, Anna Sperotto, Marco Mellia, Ramin Sadre, Maurizio M. Munafò и Aiko Pras — авторами исследования.
Вступление
Dropbox клиент разработан в основном на языке Python с использованием сторонних библиотек, таких как librsync. Клиент поддерживает все основные ОС: Windows, Mac, Linux. Использование Python однозначно говорит о том, что клиент разрабатывался с учетом облегченного портирования на различные платформы.
Основной элемент системы — это блок (chunk) размером до 4 Mb. В случае, если файл большего размера, он разбивается на несколько блоков, и каждый блок воспринимается системой независимо от других. Для каждого блока вычисляется SHA256 хеш, и эта информация является частью метаинформации о файле. Dropbox уменьшает объем передаваемых данных за счет передачи только разницы между измененными блоками файла. Кроме того, локально он содержит всю метаинформацию по файлам, которую синхронизирует с сервером и передает только изменения с прошлой версии (incremental updates).
Dropbox использует два типа серверов: управляющий (control) и сервер данных (data storage). Сервера управления находятся под контролем Dropbox, сервера данных — это сервера Амазона (Amazon S3, EC2). Для коммуникациями с серверами во всех случаях используется HTTPS.
Доменные имена, используемые Dropbox, всегда заканчиваются на dropbox.com. В таблице ниже приведены поддомены для управляющих серверов и серверов данных.
Поддомен | Хостинг | Описание |
---|---|---|
client-lb/clientX | Dropbox | Meta data |
notifyX | Dropbox | Notifications |
api | Dropbox | API control |
www | Dropbox | Web servers |
d | Dropbox | Event logs |
dl | Amazon | Direct links |
dl-clientX | Amazon | Client storage |
dl-debugX | Amazon | Back traces |
dl-web | Amazon | Web storage |
api-content | Amazon | API storage |
Dropbox: изнутри
Поскольку Dropbox использует HTTPS для шифрования всего трафика между серверами, простой перехват не даст никакой полезной информации. Для исследования мы устанавливали Squid и направляли весь трафик с компьютера под Linux на этот прокси. Также на прокси поставили SSL-bump, чтобы можно было расшифровывать SSL. Последним шагом устанавливаем самоподписанный сертификат на Squid и изменяем сертификат внутри запущенного Dropbox приложения. Данная конфигурация позволяет расшифровать и просмотреть трафик Dropbox.
Иллюстрация показывает протокол, используемый Dropbox для загрузки локально измененных блоков на свои сервера. После регистрации клиента на управляющих серверах clientX.dropbox.com, команда list получает изменения в метаданных, которые показывают разницу между локальной копией и тем, что находится на сервере. Как только происходит локальное изменение файлов, Dropbox вызывает команду commit_batch (client-lb.dropbox.com) и посылает измененные метаданные на сервер. После этого сервер отвечает, какие блоки ему необходимы, используя команду need_blocks, и клиент отсылает эти блоки на Amazon (dl-clientX.dropbox.com). Сохранение каждого блока подтверждается командой ОК.
После этого локальный клиент еще раз раз посылает команду commit_batch на сервер и получает подтверждение, что все блоки получены. Транзакции сохранения данных могут выполняться параллельно.
Протокол управления
Dropbox использует следующие группы управляющих серверов:
- Уведомления (notifications).
Dropbox держит постоянное открытое TCP соеденинение с серверами уведомлений (notifyX.dropbox.com). Это необходимо для получения информации об изменении файлов, которое могло произойти на других клиентах. По сравнению с другим трафиком, эта информация не шифруется. Используется задержка HTTP ответа для быстрого уведомления клиентов (push mechanism). Клиент посылает запрос, и сервер задерживает ответ примерно на 60 секунд. По истечении 60 секунд, клиент немедленно посылает следующий запрос на сервер. Если ответ сформирован раньше, то сервер отвечает немедленно. - Управление метаданными (meta-data administration)
Сервера управления метаданными отвечают не только за информирование об изменениях в блоках и файлах, но также и за авторизацию (authentication) клиента. Для этих серверов используются следующие доменные имена: client-lb.dropbox.com, clientX.dropbox.com. Кроме этого, сервера управления могут контролировать поведение клиента. В момент эксперимента было замечено, что сервера могут указать клиенту максимальное количество блоков, которое он может посылать на сервер. Это используется для управления трафиком, который генерирует клиент. - Системные сообщения (system logs)
сервера предоставляются Амазоном и имеют название dl-debug.dropbox.com; остальные сообщения идут непосредственно на Dropbox d.dropbox.com.
Набор данных и популярность клиентов
Мы избрали пассивный способ наблюдения за Dropbox. Для сбора трафика использовался open source инструмент Tstat. Tstat позволяет собирать разнообразную информацию о ТСР, предоставляя сведения более, чем о сотне разнообразных параметров соединения. Для анализа Dropbox мы предприняли несколько дополнительных шагов.
Поскольку Dropbox использует HTTPS, мы установили, что имя во всех сертификатах, используемых Dropbox — *.dropbox.com. Это было важно для правильной классификации трафика.
Мы пополнили открытую информацию записями с серверов DNS, к которым обращались клиенты. Таким образом мы связали IP адреса и имена серверов.
Tstat возвращал незашифрованную информацию об устройстве и именах директорий, которыми обменивался клиент и сервер уведомлений.
Данные были получены с помощью установки Tstat в 4 точках в Европе. Записи с точек, обозначенных как Home 1 и Home 2, составляют данные пользователей известного интернет-провайдера (ISP), предоставляющего интернет по ADSL и оптическому кабелю. Данные, обозначенные как Campus 1 и Campus 2, были собраны в университетах. Исследования проводились с 24 Марта 2012 по 5 Мая 2012.
Имя | Тип | Количество IP адресов | Обьем данных (GB) |
---|---|---|---|
Campus 1 | Wired | 400 | 5,320 |
Campus 2 | Wired/Wireless | 2,528 | 55,054 |
Home 1 | FTTH/ADSL | 18,785 | 509,909 |
Home 2 | ADSL | 13,723 | 301,448 |
Ниже приведен график, который показывает, сколько различных IP адресов связывалось с облачным сервисом хранения хотя бы раз в день.
Второй график показывает, сколько данных было передано на это облачное хранилище в день.
Хотелось бы обратить внимание на следующее:
- Несмотря на большое количество устройств, использующих iCloud, количество данных, передаваемое на этот сервис, соизмеримо с другими сервисами.
- В момент появления Google Drive, трафик, передаваемый на этот сервис, сделал большой скачок и приблизился к iCloud; в то же время количество инсталляций программы оставалось минимальным.
Для сравнения приведем данные использования сервисов YouTube и Dropbox в Campus 2.
Таблица показывает суммарный трафик Dropbox, который мы отследили в ходе наших измерений.
Campus 1 | Campus 2 | Home 1 | Home 2 | Всего | |
---|---|---|---|---|---|
Запросов | 167,189 | 1,902,824 | 1,438,369 | 693,086 | 4,204,666 |
Обьем (GB) | 146 | 1,814 | 1,153 | 506 | 3,624 |
Устройств | 283 | 6,609 | 3,350 | 1,313 | 11,561 |
Анализ трафика
Графики показывают куммулятивную функцию распределения для различного количества блоков.
Оказалось, что более, чем в 80% процентах случаев, количество блоков при сохранении данных не превышает 10. График для данных с точки Home 2 существенно отличается от остальных, так как здесь мы наблюдали одного клиента, который постоянно, на протяжении нескольких дней, пересылал одни и те же блоки. Анализ полученных данных показывает, что основной сценарий использования Dropbox — это постоянная работа с небольшими, постоянно изменяемыми файлами.
Как мы рассмотрели выше, Dropbox использует центральные сервера для хранения данных. Это сразу наводит на вопрос о скорости работы сервиса для пользователей, которые находятся географически далеко от серверов.
Максимальная скорость, которую мы наблюдали, была близка к 10 Mbit/s и наблюдалась на файлах с размером больше 1 Mb. Средняя скорость для Campus 2 была: запись — 462 kbits/s и чтение — 797 kbits/s. Для Campus 1: запись — 359 kbits/s и чтение — 783 kbits/s.
Также из графиков видно, что скорость существенно зависит от количества блоков: чем больше блоков, тем ниже скорость.
Изменения в Dropbox 1.4.0
Начиная с версии 1.4.0, Dropbox добавил две новые команды: store_batch и retrieve_batch, что позволяет работать с несколькими блоками одновременно. Это улучшение должно существенно улучшить пропускную способность сервиса.
Количество устройств
График показывает количество установок Dropbox у пользователей дома. Примерно в 60% случаев у пользователей существует только 1 устройство с Dropbox. У 25% пользователей дома есть 2 устройства, использующих Dropbox.
Среднее время использования
График показывает среднее время использования Dropbox. Анализируя время использования, мы смотрели, сколько времени клиент поддерживал связь с сервером уведомлений. Поскольку клиент всегда держит это соединение открытым либо открывает его заново, это хороший способ оценить время использования.
Из графика видно, что время использования Dropbox в большинстве случаев меньше 4 часов. Исключение составляет Campus 1, где много рабочих компьютеров и компьютеров, работающих постоянно.
Исходные данные
Вы можете загрузить исходные данные, которые использовались в этой статье для дальнейшего анализа. (Исходные данные).
Хочу обратить внимание, что оригинальная статья содержит больше информации. В ней могут быть ответы на вопросы, которые могут возникнуть у вас после прочтения.