Хранение данных: Реорганизуйте свои данные

С данными можно работать, не прибегая к их организации и отслеживании разрозненных букв дисков.

Лео Микельсен

Взрывообразный рост хранилищ данных и стоимость хранения и защиты данных — основные болевые точки современных ИТ-отделов. Данные часто хранятся, как придется, в соответствии с принятыми еще в 1980-х методиками, доступ к ним осуществляется по буквам дисков — такой способ давным-давно устарел.

Представьте себе компанию с отделениями в Нью-Йорке и Сан-Франциско, которые ранее были самостоятельными компаниями. У каждой есть собственная ИТ-инфраструктура. К самым заметным отличиям можно отнести методы назначения букв дисков, а также то, как организованы и хранятся данные.

В компании решили, что оба отделения должны работать, как единое целое, но отличия в именовании дисков сильно затрудняют обмен данными между отделениями. Ситуацию усложняет то, что в отделениях используются разные буквы дисков для одних приложений. Менеджерам вновь созданных или «слитых» отделов сложно найти нужную информацию. Как обеспечить эффективное взаимодействие этих отделений?

Хранение и доступ

Основные источники проблем здесь — экспоненциальный рост объемов данных и неструктурированная подсистема хранения, и это проблема не только ИТ-отдела. Чем дольше эта проблема будет считаться исключительно головной болью ИТ-отдела, тем дольше и сложнее будет ее решать. Единственный вариант — считать ее общей проблемой компании.

Можно добиться огромного повышения эффективности, но только если руководство увидит преимущества реструктурирования и очистки данных. Для айтишников подобные проекты — хороший шанс предстать настоящими партнерами по бизнесу, а не просто «парнями, которые приходят по вызову и починяют компьютеры».

Задача заключается в том, чтобы выстроить бизнес-процесс так, чтобы в каждом подразделении был «ответственный» за процесс хранения, обмена и доступа к данным. Такой ответственный вместе со своими коллегами займется построением новой структуры управления данными.

Значительная часть хранимых данных является устаревшей и к ней никогда не будут обращаться. Недавние исследования показали, что только 7% хранимых данных реально нужны пользователям. Во-первых, устаревшие данные надо разместить в архивной папке. После чего надо удалить или заархивировать эти устаревшие данные на более дешевых носителях. Регулярно переносите данные из архивной папки в архив данных, примерно раз в полугодие.

Ответственные в отделах должны удалять ненужные файлы. Это обеспечить непросто, потому что большинство людей неохотно удаляют что-либо. Самая важная часть проекта — реструктуризация оставшихся данных так, чтобы каждый знал, где найти нужную информацию.

В каждом подразделении должны быть следующие папки: Management, Common, Public и Archive. В папке Management должна размещаться информация менеджеров отдела и доступ к ней должен предоставляться только этим менеджерам. Папка Common должна быть доступна всем сотрудникам подразделения, а Public всем сотрудникам компании. Папку Archive следует использовать как корзину для нечасто используемой информации, кроме того время от времени нужно перемещать содержимое этой папки в настоящий архив, хранящийся на недорогом оборудовании.

Ответственный за контент подразделения так отвечает за управление уровнями доступа к папкам подразделения. Хороший способ назначения этих разрешений — основывать их на ролях (описания рабочих обязанностей) в рамках организации.

Прежде всего ответственный и руководство подразделения должны задокументировать схему, в том числе новую структуру папок и разрешений. После этого в игру может вступать ИТ-отдел и создать группы безопасности для созданных ролей, добавить в групп соответствующих сотрудников и задать разрешения для групп в соответствии с документацией, предоставленной ответственным по подразделению. Этот ответственный, и только он должен доводить все изменений в этой структуре до ИТ-отдела.

Описание этого процесса занимает немного времени, но намного больше времени придется потратить на его реализацию. Очень важно получить поддержку всех участников. Полученная таким образом структура обладает многими преимуществами — от логичной организации хранения и управления доступом до сокращения объема данных, размещаемых на дорогих устройствах хранения.

Зачем вообще нужны подключенные диски

Когда впервые появились подключенные диски, они оказались легки в реализации и просты в поддержке. И мы продолжаем их использовать. С того времени объемы данных значительно выросли, а внутрикорпоративные структуры изменились и требуется более простые процедуры обмена данными между подразделениями. Технологии развиваются со скоростью света, и каждый день приходится прикладывать серьезные усилия, чтобы поспевать за ними. При этом мы все еще держимся за более чем тридцатилетнюю технологию доступа к данным.

Во многих подразделениях используют разные буквы дисков для разного типа данных, что делает практически невозможным построить логичные и эффективные механизмы обмена информацией. Один из побочных эффектов этого — пользователи копируют данные в другие подразделения, что дополнительно увеличивает огромный объем данных за счет дублирования.

Если вы посмотрите на организацию, которую я описал в начале статьи, с отделениями Нью-Йорке и Сан-Франциско, то вы ясно поймете, насколько сложно обеспечить обмен данными между этими отделения. Структуры хранения файлов в отделениях значительно отличаются, потому что в отделениях привыкли работать отдельно, как более или менее независимые организации. Потребуются довольно жесткие меры для организации эффективного обмена файлами.

Прежде всего надо создать файловую структуру распределенной файловой системы (DFS). DFS действует как «покрывало» поверх файловой структуры и совершенно прозрачна для пользователя. Очень просто заменить сервер, на котором располагаются данные, не нарушая доступа к данным. В DFS также поддерживается механизм поддержки реплик папок в нескольких местоположениях. DFS умеет эффективно реплицировать изменения между этим репликами. При внесении изменений в файл распределенная файловая система перенесет только изменения, а не целый файл, экономя сетевые ресурсы и время.

Следующий шаг — определение необходимой структуры папок. Корневыми папками (или пространствами имен) в нашем примере будут Приложения, Архив и Подразделения. Ясно, что в реальности список папок будет существенно большим. В силу исторических причин в средствах управления DFS папки и пространства имен применяются к одним сущностям. В левой панели они называются папками, а в правой — пространствами имен. Под каждым пространством имени или папкой создаются другие папки и пространства имен. Каждая папка связана с конкретным местом на файловом сервере.

На этом уровне создание папок нужно ограничить только файловыми серверами. Это означает, что нужно создать папки первого уровня в DFS и связать их с соответствующими папками на файловых серверах. Это не позволит пользователям «захламить» структуру своими папками.

Например ИТ-специалисты могут создать папки первого уровня Бухгалтерия, Архив и Менеджмент, запретив пользователям создавать дополнительные папки на этом уровне. Если потребуется новая папка первого уровня, придется менять общую схему папок отделов и связываться для изменения DFS с ИТ-отделом.

Готовую структуру DFS можно предоставлять пользователям, обеспечив удобные механизмы работы с ней. А теперь я займусь чем-то совсем другим. В Windows Vista и Windows 7 можно создавать сетевые папки под физическими дисками в окне проводника Windows. Чтобы создать сетевую папку для всех, можно воспользоваться сценарием Windows PowerShell addnetworkloc.ps1 (взято из форума TechNet), который выполняется как сценарий входа (рис. 1).

Рис. 1. Сценарий создания сетевых папок, доступных всем пользователям

param( [string]$name, [string]$targetPath ) # Get the basepath for network locations $shellApplication = New-Object -ComObject Shell.Application $nethoodPath = $shellApplication.Namespace(0x13).Self.Path # Only create if the local path doesn't already exist & remote path exists if ((Test-Path $nethoodPath) -and !(Test-Path "$nethoodPath\$name") -and (Test-Path $targetPath)) { # Create the folder $newLinkFolder = New-Item -Name $name -Path $nethoodPath -type directory # Create the ini file $desktopIniContent = @" \[.ShellClassInfo\] CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D} Flags=2 ConfirmFileOp=1 "@ $desktopIniContent | Out-File -FilePath "$nethoodPath\$name\Desktop.ini" # Create the shortcut file| $shortcut = (New-Object –ComObject| WScript.Shell).Createshortcut("$nethoodPath\$name\target.lnk") $shortcut.TargetPath = $targetPath $shortcut.IconLocation = "%SystemRoot%\system32\SHELL32.DLL, 85" $shortcut.Description = $targetPath $shortcut.WorkingDirectory = $targetPat $shortcut.Save() # Set attributes on the files & folders Set-ItemProperty "$nethoodPath\$name\Desktop.ini" -Name Attributes -Value ([IO.FileAttributes]::System -bxor [IO.FileAttributes]::Hidden) Set-ItemProperty "$nethoodPath\$name" -Name Attributes -Value ([IO.FileAttributes]::ReadOnly) }

Сценарий принимает два аргумента: первый содержит желаемое имя сетевой папки, а второй представляет собой адрес физической папки в формате UNC:

addneworkloc.ps1 Departments \\contoso.com\departments

Чтобы сценарий выполнялся при входе, нужно в Active Directory создать два объекта групповых политик (GPO). Первый разрешает использование Windows PowerShell в сценариях входа. По умолчанию сценарии Windows PowerShell запрещены, потому что встроенные в Windows PowerShell параметры включают то, что называется «политика выполнения». Она определяет, как выполняются сценарии Windows PowerShell.

По умолчанию политика находится в режиме «Ограничена» (Restricted). Это означает, что никакие сценарии, в том числе написанные вами, выполняться не будут. Это можно исправить вручную или средствами GPO. В консоли «Редактор управления групповыми политиками» (Group Policy Management Editor) создайте новый объект GPO и назовите его например так: «GlobalC-Enable PowerShell».

В этом объекте GPO перейдите к Computer Configuration/Policies/Administrative Templates/Windows Components/Windows PowerShell. Измените режим политики Turn on Script execution (Включить выполнение сценариев) на Enabled (Включено). (GlobalC является соглашением об именовании, в котором «Global» указывает, что GPO применяется более чем в одном подразделении, а «C» означает, что GPO содержит конфигурации компьютера.)

Второй объект GPO — «GlobalU-Set Network Locations». В нем надо задать сценарий входа Windows PowerShell, который конфигурируется в узле User Configuration/Policies/Windows Settings/Scripts/Logon. После активизации этого объекта групповой политики GPO все пользователи, входящие в область действия этого GPO увидят новые сетевые папки. На время миграции они могут сосуществовать со старыми подключенными дисками.

Как насчет приложений

Использование сетевых папок вместо подключенных дисков отлично служит для доступа к данным, но они могут вызывать определенные неполадки приложений, которым нужен доступ к сетевым ресурсам. Большинство современных приложений теперь поддерживают либо сетевые папки, либо UNC-пути. В этом случае нужно скорректировать ярлыки и конфигурационные файлы. Всегда найдутся приложения, которые плохо работают в отсутствие букв дисков.

Так как же разрешить эту проблему? Есть несколько способов. Самый простой, и уродливый, — создать командный файл, который подключает диск и запускает приложение. По завершении работы приложения он отключает диск. Уродство здесь заключается в том, что на протяжении всего времени работы программы вы будете наблюдать окно командной строки.

Другое, более эстетичное решение заключается в создании сценария AutoIt, который можно скомпилировать, превратив его в исполняемый файл. AutoIt — бесплатный инструмент создания сценариев, который позволяет создавать очень элегантные решения. На рис.2 показан пример сценария, который подключает диск, выполняет приложение, а по завершении приложения отключает диск.

Рис. 2. Сценарий, созданный средствами AutoIt, который подключает диск, выполняет приложение, а по завершении его работы отключает диск

If $CmdLine[0]>2 Then $driveletter=$CmdLine[1] $mappedpath=$CmdLine[2] $runprogram=$CmdLine[3] $args="" if $CmdLine[0]>3 Then for $i=4 to $CmdLine[0] $args=$args&$CmdLine[$i] next DriveMapAdd ($driveletter, $mappedpath,0) ShellExecuteWait ($runprogram, $args) DriveMapDel ($driveletter) EndIf EndIf

Сохраните этот сценарий и скомпилируйте его в исполняемый файл, назвав его, к примеру, runmapped.exe. Запустите старое приложение, которое нуждается в подключаемых дисках следующим образом (заметьте, что все аргументы заключены в кавычки):

Runmapped.exe "q:" "\\fs\applications\apps" "c:\program files”\program\program.exe" "possible argument 1" "possible argument 2" ..

С технической точки зрения избавиться от сопоставления дисков не так-то просто. Самое сложное — доказать всем в компании, что нужно реструктурировать хранение данных.

Использование сетевых папок вместо букв дисков всего лишь небольшой инструмент, который позволяет вашим коллегам получать доступ к данным более логическим способом. Если это удастся сделать, ИТ-отдел станет настоящим партнером по бизнесу в компании. И вскоре вы сможете сказать: «Кому вообще нужны эти подключенные диски?»

Лео Микельсен

Лео Микельсен (Leo Michielsen) работает управляющим предприятием Heerema Fabrication Group в Нидерландах и обладает более чем 20-летним опытом работы в ИТ. Он является специалистом по Active Directory и отвечает за исследование, реализацию и поддержку новых проектов, таких как Microsoft Application Virtualization (App-V), инфраструктура виртуальных рабочих столов и System Center Operations Manager 2012. С Лео можно связаться по электронной почте lj@sysadminguides.com.