Windows Server 2012 продолжает виртуализовать всё, до чего дотягивается =). Очередной шаг в виртуализации всего и вся – Storage Spaces. Фактически – виртуализация хранилища со всеми вытекающими отсюда положительными моментами. При первом поверхностном знакомстве напрашивается аналогия со встроенной в предыдущие версии Windows Server технологией создания програмного RAID-массива. Общие моменты имеются. Но есть и много нового.

Из интересных особенностей можно выделить:

  • Предоставление места в хранилище по запросу (то есть фактически, место выделяется тогда, когда оно нужно, а не заранее)
  • Отказоустойчивость (зеркалирование/хранение информации о чётности – аналоги RAID1/RAID5, поддержка горячего резервирования “hot spare”)
  • Сохранение целостности данных (за счёт механизма интеллектуальной проверки на наличие ошибок и их исправление)
  • Поддержка хостинговых сценариев
  • Интеграция с CSV (Cluster Shared Volumes) и отказоустойчивым кластером. Поддерживаются как двух-узловые, так и много-узловые (до 63 узлов включительно) конфигурации Continue Reading »

В предстоящем релизе Windows Server 2012 будет доступна новая файловая система – Resilient File System (ReFS). Ниже некоторое количество технических деталей относительно реализации ReFS.

Можно выделить следующие особенности ReFS:

  • Целостность. Хранит данные, максимально защищая их от возможных ошибок, которые могут повлечь за собой их потерю. Метаданные файловой системы защищены всегда. Более того, проверочные суммы метаданных хранятся отдельно, что уменьшает вероятность повреждения и метаданных и проверочных сумм. При необходимости, так же можно защитить и пользовательские данные на уровне тома, папки или файла. При работе с файлами новые версии всегда записываются отдельно от старых, что позволяет в случае сбоя записи откатиться к предыдущей версии файла.
  • Высокая доступность. Один из приоритетов при разработке ReFS. При обнаружении ошибок, которые не могут быть исправлены автоматически, специальный процесс локализует ошибку, не требуя при этом отключения тома. То есть том может находится в рабочем режиме достаточно долго. В сочетании со Storage Spaces, при обнаружении ошибок исправляет их.
  • Расширяемость. Ещё один из приоритетов при разработке ReFS. Новая файловая система будет работать как с нынешними терабайтными объёмами, так и с теми, которые будут в будущем (петабайты-экзабайты-…)
  • Совместимость с различными приложениями. ReFS поддерживает адаптированный набор функций файловой системы NTFS, а также Win32 API.
  • Обнаружение ошибок “на лету”. Как уже выше указывалось, специальный процесс сканирует тома с ReFS и при обнаружении ошибок помимо локализации помечает их. Это позволяет в дальнейшем попробовать восстановить повреждённые данные.
  • Эволюция в архитектуре (по сравнению с NTFS). Новая файловая система по сути является результатом развития старой файловой системы NTFS, а следовательно поддерживает большую часть функциональности NTFS (шифрование BitLocker, access-control lists, USN journal, change notifications, символические ссылки, junction points, mount points, reparse points, снимки тома, идентификаторы файлов, oplocks).

Совместимость с приложениями реализована за счёт включения в ReFS многих функций и API файловой системы NTFS. Дизайн NTFS включает в себя:

  • верхний уровень, реализующий API/семантику
  • нижний уровень, реализующий хранилище на уровне дисковой подсистемы

ReFS использует верхний уровень, реализуя таким образом совместимость API для приложений, предоставляя при этом новый механизм работы с дисковой подсистемой (Minstore), в котором имеются новые функции для работы с дисковой подсистемой. Continue Reading »

Судя по документу What’s New in Exchange 2013 Preview список новшеств следующий:

  • Управление. Новая административная консоль Exchange Administration Center (EAC) заменяет теперь Exchange Management Console (EMC) и Exchange Control Panel (ECP). Представляет из себя web-приложение (MMC до свидания?). Что интересно, в адресе присутствует ecp. То есть понятно откуда ноги растут.
  • Архитектура. Возвращаемся к классической front-end – back-end архитектуре (здраствуй Exchange 2003). Ролей теперь две – Client Access и Mailbox. Последняя содержит в себе все предыдущие роли (Client Access/Hub Transport/Mailbox/Unified Messaging). Первая роль занимается исключительно проксированием клиентского траффика. Все тяжёлые вычисления производятся на роли Mailbox. Из этого вытекают некоторые приятные упрощения. Например, клиент теперь ходит на сервер исключительно через https (rpc over https). Или – для балансировки трафика теперь можно использовать более дешевые решения, работающие на четвёртом уровне OSI (а не более дорогие, работающие на седьмом уровне).
  • Сертификаты. Количество имён, которые надо вносить в SAN сильно уменьшилось. Ноги растут из предыдущего пункта.
  • Политики хранения. Добавлена новая функция – Data loss prevention (DLP, предотвращение потери данных). Фактически является расширением транспортных правил в сторону выполнения требований законодательства относительно хранения различных данных.
  • Архивирование. Теперь можно применять пользовательские тэги хранения к стандартным папкам в ящике (Inbox, Sent Items итд).
  • Юридическое удержание. Переименовано в In-Place Hold. Позволяет осуществить более тонкую настройку хранения данных: стандартное хранение без ограничения времени (как в Exchange 2010), хранение ограниченное промежутком времени (например, хранить 5 лет) и хранение данных на основе содержащихся в них ключевых слов/фраз (например, хранить все сообщения, в которых попадается слово “конфединциально”).
  • Новый тип почтового ящика “Общие папки”. С моей точки зрения, это архитектурное изменение позволит безболезнено избавиться от сильно устаревшей технологии общих папок, которую тащили за собой все новые версии Exchange Server последние лет 10. Почтовый ящик нового типа содержит в себе всю иерархию общих папок. Пока непонятно как это будет выглядеть в Outlook 2007/2010. Большим плюсом является то, что теперь для общих папок (которые являются разновидностью почтового ящика) доступен DAG. Подробнее об этом нововведении я буду писать подробнее. Оно того заслуживает.
  • Новый тип почтового ящика “Site Mailbox”. Представляет собой хранилище документов сайта на базе Sharepoint 2013.

Павел Нагаев уже успел высказаться по поводу выхода Exchange 2013 Preview:

Вышла новая бета версия — Exchange Server 2013 Preview

Сегодня ночью стали доступны дистрибутивы и материалы по следующим версиям Exchange Server/Lync Server:

Download Microsoft Exchange Server 2013 Preview
Download Microsoft Lync Server 2013 Preview
Exchange Server 2013 Preview
Microsoft Lync Server 2013 Preview

Задача – выгрузить список пользователей сервера Exchange 2010 с логинами и группами рассылок в которых они состоят. На выходе должны получить что-то типа:

"User Name1", "UserLogon1", "DistrGroup1;DistrGroup2;DistrGroup3;"
"User Name2", "UserLogon2", "DistrGroup3;DistrGroup4;DistrGroup5;"
....

Первые 2 столбца получаются достаточно легко через

Get-Mailbox -Server ServerName -ResultSize unlimited | select DisplayName,
SamAccountName

Однако, в свойствах учётной записи на сервере Exchange отсутствует привязка к группам, в которых состоит учётная запись. Зато в AD у учётной записи пользователя доступно свойство MemberOf:

(Get-ADUser UserName -Properties MemberOf).MemberOf

Которое является массивом строковых переменных, в которых содержатся Distinguished Name групп, в которых пользователь состоит. Останется только эти группы отфильтровать, чтобы остались только группы рассылок. Для этого будем использовать параметр sAMAccountType, который для групп рассылок (SAM_NON_SECURITY_GROUP_OBJECT) будет равен 268435457. Для фильтрации групп получается такой небольшой скрипт:

$Groups = (Get-ADUser UserName -Properties MemberOf).MemberOf
$GroupsString = ""
foreach ($Group in $Groups){
   $GroupObject = [ADSI]"LDAP://$Group"
   if ($GroupObject.sAMAccountType -eq '268435457') {
      $GroupsString = $GroupsString + $GroupObject.name + "; "}}

Итоговый скрипт будет следующий:

Get-Mailbox -Server ServerName -ResultSize unlimited | select DisplayName,
SamAccountName, @{Name="Distribution Groups";expression={
$Groups = (Get-ADUser $_.SamAccountName -Properties MemberOf).MemberOf
$GroupsString = ""
   foreach ($Group in $Groups){
      $GroupObject = [ADSI]"LDAP://$Group"
      if ($GroupObject.sAMAccountType -eq '268435457') {
         $GroupsString = $GroupsString + $GroupObject.name + "; "}}
   $GroupsString}} | Export-Csv c:Tempusers.csv