Archive for the ‘howto’ Category.

Аггрегация и балансировка на нескольких eth

А вот вы знаете, что у нас тут есть русскоязычный форум, с участием же русскоязычных специалистов, работающих в NetApp? Не знали? А он - есть :)
Это я к чему, к тому, что недавно там был обнаружен интересный топик, который будет полезен тем, кто пытается разобраться с непростой темой аггрегации etherchannel и балансировки по нескольким линкам.
https://communities.netapp.com/thread/32967

Если вы занимаетесь NetApp, и при этом еще не там - рекомендую зарегистрироваться (читать можно и так), и подписаться на rss. ??ногда там бывают полезные для жизни темы. Да и возможность спросить на русском тоже бывает порой неоценима.

Как переделать NFS VMDK в RDM LUN

??нтересный способ был подсмотрен в соседском блоге.

В некоторых (нечастых) случаях возникает необходимость преобразовать уже существующий виртуальный диск, например файл VMDK, лежащий на NFS-шаре, в RDM LUN (RDM – raw device mapping, подключение физического LUN в VM непосредственно, как SCSI LUN-а). Есть некоторое ограниченное число случаев, когда трудно или нельзя обойтись без RDM.

Сделать это можно без необходимости копирования данных через хост и создания второй копии данных. NetApp может создать LUN с указанием файла на диске, из которого будет взято его содержимое. При этом со стороны хоста это будет самый настоящий физический SCSI LUN, и его можно будет подключить как самостоятельное физическое устройство, например с помощью установленного внутри VM OS инициатора, допустим MS Software iSCSI Initiator, как новый диск. Но при этом на стороне стораджа такой “LUN” будет просто небольшой ссылкой на данные соотвествующего vmdk, уже хранящегося на дисках.

Опция –f может указать при создании LUN файл, хранящий содержимое сотвествующего LUN-а.

lun create -f /vol/vol1/test02/test02_1-flat.vmdk -t windows_2008 /vol/vol1/lun1
создаст физически небольшой файл LUN  /vol/vol1/lun1 (тип LUN – windows_2008), указывающий на существующий .vmdk файл test02_1-flat.vmdk. В дальнейшем вы можете работать с таким “LUN”-ссылкой как с настоящим LUN-ом.

Обратите внимание, что в качестве vmdk указан именно *-flat.vmdk, большого размера.

Помните также, что после такого “преобразования” нельзя удалить этот *–flat.vmdk, так как именно в нем будет находиться физическое содержимое LUN.

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

Соответствие команд 7-mode и C-mode

Если вам в скором времени предстоит переход на Clustered Data ONTAP, или если вы админ системы хранения, хорошо знакомый с Data ONTAP 7-mode, которому предстоит администрировать Cluster-mode, то рекомендую посмотреть документ, недавно опубликованный в библиотеке NetApp:

Clustered Data ONTAP® 8.2
Command Map for 7-Mode Administrators

В нем в таблицу собраны команды Cluster-mode, соответствующие, по выполняемым действиям, командам 7-mode. То есть если вы знаете как, допустим, создать том на aggregate в 7-mode, и не знаете какой командой это делается в Clustered ONTAP, то вот этот документ вам поможет.

Брать можно здесь: https://library.netapp.com/ecm/ecm_download_file/ECMP1196780

SnapVault

Продолжим наш курс Back to basics. Кроме репликации SnapMirror у NetApp есть еще один Snap-что-то продукт – SnapVault. Давайте посмотрим, что это и для чего может в жизни сгодиться.

SnapVault, как можно догадаться из названия, это средство, позволяющее сложить снэпшоты (Snap) на долговременое хранилище (Vault), то есть это такое средство бэкапа данных с системы хранения, например главной, рабочей, или, в терминах NetApp – Primary, на резервную, или Secondary.

Зачем? Ну, зачем вообще используется резервное копирование на другой сторадж? Чтобы обезопаситься и обезопасить данные от физического отказа системы хранения. Почму бы для этого не использовать SnapMirror? Очень просто. Потому же, почему RAID это не бэкап. Репликация никак не поможет в случае повреждения непосредственно данных. Поврежденные данные, например испорченные на уровне приложения, точно также отреплицируются на резервную систему, и вы будете иметь два комплекта плохих данных. Тут выручили бы снэпшоты. Но снэпшоты, как вы помните, хранятся на самой системе хранения, непосредственно на исходном томе, такова их принциппиальная конструкция, и если мы вдобавок ко всему, имеем поврежденную или физически потерянную primary систему хранения, то вместе с ней погибнут и данные снэпшотов. Хорошо бы эти снэпшоты уметь выносить куда-то наружу, чтобы потом иметь возможность из них исходные данные не любой сохраненный момент восстанавливать. Вот как раз этим и занимается SnapVault.

Continue reading ‘SnapVault’ »

Как переименовать CIFS/SMB-share

Как ни удивительно прозвучит, но в Data ONTAP нет средства переименовать созданную сетевую NAS-шару. Но зато есть возможность задать одному тому более одного имени шары. Таким образом можно сделать (не)хитрый финт: вместо переименования шары, задаем ей новое имя, а старое – удаляем. Это можно сделать руками, если у вас этих шар немного. Но когда их сотни и тысячи, то хочется завести уже какой-то инструмент. ?? вот недавно я в communities.netapp нашел скрипт на Perl, который делает именно это.

#!/usr/bin/perl -w
##########################################################
# cifs_share_rename
# rename a netapp cifs share
#Michael.S.Denney@gmail.com
$version=1.0;
##########################################################
#TO DO:
use strict;
use warnings;
use Getopt::Long;
use POSIX;
##################Global VARS#################################
use vars qw($version $verbose $debug $filer $share $new_share);
##################Predeclare SUBS#############################
use subs qw(run_cmd);
##############################################################
GetOptions(
          'f=s' => \$filer,
          'filer=s' => \$filer,
          's=s' => \$share,
          'share=s' => \$share,
          'n=s' => \$new_share,
          'new_share=s' => \$new_share,
          'v' => \$verbose,
          'd' => \$debug
);
my $t=' ';
print "verbose on\n" if $verbose;
print "debug on\n" if $debug;
$verbose=1 if $debug;
unless ($filer and $share and $new_share) {
   print "Usage: cifs_share_rename -f  -s  -n \n";
   print "Usage: cifs_share_rename --filer  --share  --new_share \n";
   exit 1 ;
}

my $cmd="ssh $filer cifs shares $share";
print "$cmd\n";
my ($stdout,$stderr)=run_cmd $cmd;
if (@$stderr){
    print "$_\n" foreach (@$stderr);
    exit 1;
}
my $path;my $comment;my $access;my %security;

print "search share=>$share\n";
foreach (@$stdout){
   print "$_\n" ;
   if (/^\S+\s+(\/vol\/\S+\s+|\/vol\/\S+\/\S+\s+)(.*)?/){
      $path=$1;
      $comment=$2;
   }#end if regex
   if ( /\s+(.+)\s+\/\s+Read/g){
        push @{$security{read}},$1;
   }
   if ( /\s+(.+)\s+\/\s+Change/g){
      push @{$security{change}},$1;
   }
   if ( /\s+(.+)\s+\/\s+Full\sControl/g){
      push @{$security{'full control'}},$1;
   }

}
print "path=>$path\n" if $path;
print "comment=>$comment\n" if $comment;
print "cifs read=>$_ \n" foreach (@{$security{read}});
print "cifs full control=>$_ \n" foreach (@{$security{'full control'}});
print "cifs change=>$_ \n" foreach (@{$security{change}});

$cmd="$t ssh $filer cifs shares -add $new_share $path -comment \'$comment\'" if ($comment);
$cmd="$t ssh $filer cifs shares -add $new_share $path" unless ($comment);
print "$cmd\n";
($stdout,$stderr)=run_cmd $cmd;
if (@$stderr){
    print "$_\n" foreach (@$stderr);
    unless ((grep /MS-DOS/,@$stderr)and @$stderr == 1){
       exit 1;
    }
}
print "$_\n" foreach (@$stdout);

$cmd="$t ssh $filer cifs access -delete $new_share everyone";
print "$cmd\n";
($stdout,$stderr)=run_cmd $cmd;
if (@$stderr){
    print "$_\n" foreach (@$stderr);
    exit 1 unless (grep /successfully modified/,@$stderr);
}
print "$_\n" foreach (@$stdout);

foreach my $type ('read','change','full control'){#type
   print "type=$type\n";
   foreach (@{$security{$type}}){
      $cmd="$t ssh $filer cifs access $new_share \'$_\' $type";
      print "$cmd\n";
      ($stdout,$stderr)=run_cmd $cmd;
      if (@$stderr){
          print "$_\n" foreach (@$stderr);
          exit 1 unless (grep /successfully modified/,@$stderr);
      }
      print "$_\n" foreach (@$stdout);
   }
}#end foreach type
$cmd="$t ssh $filer cifs shares -delete $share";
print "$cmd\n";
($stdout,$stderr)=run_cmd $cmd;
if (@$stderr){
    print "$_\n" foreach (@$stderr);
    exit 1;
}
print "$_\n" foreach (@$stdout);
##########################################################
sub run_cmd{
##########################################################
   my $cmd=" @_";
   my $err_file="/dev/shm/err.$$";
   $cmd.=" 2>$err_file";
   my @stdout=qx($cmd);
   chomp @stdout;
   my @stderr;
   if (-s $err_file) { #if the error file has messages
      open ERR,"$err_file";
      @stderr=();
      close ERR;
      chomp @stderr;
      #print "$_\n" foreach (@stderr);
   }
   unlink ($err_file);
   return (\@stdout,\@stderr);
}

Как изменить serialnumber у ONTAP Edge?

Если вы используете Data ONTAP Edge в своей инфраструктуре хранения (это, напомню, “виртуальный NetApp” в виде VSA, Virtual Storage Appliance, виртуальной машины с Data ONTAP внутри), в особенности если вы используете не один Edge, а несколько, в пределах одной инфраструктуры управления, то наверняка уже столкнулись с неприятной проблемой. Все Edge устанавливаются с одним и тем же “серийным номером” системы, а это приводит к неприятным эффектам для софта управления, например VSC. Однако есть решение.

Нужно при загрузке VSA прервать нормальную загрузку, и выйти в boot prompt (SIMLOADER), нажав Ctrl-C на сообщение “Hit [Enter] to boot immediately, or any other key for command prompt”. Далее введите следующие команды:

  1. set bootarg.nvram.sysid=1111111101
  2. set SYS_SERIAL_NUM=1111111101
  3. boot

В этих командах 1111111101 – нужный вам серийный номер данного “контроллера” Data ONTAP Edge.

Striped Volume в Cluster-mode

Как вы уже знаете, архитектура системы хранения NetApp не позволяет, при наличии двух контроллеров, организовать один общий дисковый раздел, доступ к которому имели бы оба контроллера одновременно. Почему так было сделано, отчего, и что это дает полезного – об этом мы уже в блоге говорили, не будем отвлекаться. А сегодня я покажу, как это ограничение может быть снято при использовании Data ONTAP Cluster-mode, новой модели работы со стораджем, которая активно развивается компанией уже не первый год.

В Data ONTAP 8.x Cluster-mode вы можете использовать так называемый режим Striped Volume, при котором доступ к данным на томе может быть осуществлен параллельно с любых контроллеров кластера, в частности с двух контроллеров, составляющих HA-пару.

Для начала надо убедиться, что лицензия Striped Volume введена, что позволяет системе такой том создать.

f3240-sqltest::> license show
(system license show)
Feature Cluster SN Limit Description
————— ———– ——- ———–
Base 1-80-000011 666 Base License w/cluster size limit (nodes)
iSCSI 1-80-000011 666 iSCSI License
Striped_Volume 1-80-000011 666 Striped Volume License
FCP 1-80-000011 666 FCP License
4 entries were displayed.

Раз лицензия есть, то можно создать striped aggregate:

f3240-sqltest::> aggr create -aggregate myAggr -nodes f3240-sqltest-01,f3240-sqltest-02 -diskcount 16 -disktype SAS -raidtype raid_dp -maxraidsize 16
[Job 818] Job succeeded: DONE

Создан aggregate, распределенный (striped) на два узла кластерной системы - f3240-sqltest-01 и fas3240-sqltest-02.

Посмотреть, что получилось можно командой aggr show myAggr.

w680

Данный aggregate распределен на два узла, состоит из 16  дисков, 8 из которых на узле 01, и 8 – на узле 02. Создано также два плекса и две RAID-группы. Это означает, что такой striped aggregate состоит, по сути, из двух “обычных” aggregate. Обратите также, что Volume Style указан как striped.

Понятнее про состав striped aggregate станет после вывода команды aggr member show.

f3240-sqltest::> aggr member show
Aggregate     Size Available Used% State    #Vols Node             RAID Status
——— ——– ——— —– ——- —— —————- ————
myAggr_000 2.15TB    2.15TB    0% online       0 f3240-sqltest-01 raid_dp,normal
myAggr_001 2.15TB    2.15TB    0% online       0 f3240-sqltest-02 raid_dp,normal
2 entries were displayed.

Как видите, striped aggregate myAggr состоит из двух “мемберов”, myAggr_000 и myAggr_001, каждый на своем узле. Если бы мы создали такой aggregate на трех, четырех, и так далее узлах кластера – мы бы получили три, четыре, и так далее под-“аггрегейта”. Созданный же на таком aggregate, поверх него том (volume) и данные на нем, окажутся равномерно распределенными по доступу между несколькими узлами, и операции доступа к ним более или менее равномерно нагрузят все входящие в группу контроллеры.

Установка MBRtools на ESXi

Если вы пользовались NetApp VSC, Virtual Storage Console, плагином для VMware vCenter, позволяющим управлять системой хранения NetApp непосредственно из среды vCenter, то видели в нем набор утилит MBRtools. Он предназначен для выравнивания разделов виртуальных машин, по границам блоков диска, файловой системы и VMFS, чтобы оптимизировать операции ввода-вывода.
Хотя с массовым переходом на Windows Server 2008 R2 и Windows 7, где партиции уже изначально создаются с правильным смещением, актуальность этих утилит и снизилась, тем не менее еще случаются ситуации, когда их по прежнему нужно использовать. Простейший пример - если сервер Windows (или Linux) установлен апгрейдом на партицию, созданную более старой системой, то скорее всего она будет выровненной неправильно.
Неправильное выравнивание может давать некоторые неприятные эффекты ввода-вывода и потенциально влиять на производительность.

Однако с переходом на ESXi, то есть “baremetal hypervisor”, не имеющий “сервисной консоли”, то есть вот той инсталляции Linux RedHat, из под которого стартовала “классическая” ESX, возникает проблема, как же устанавливать MBRtools в ESXi.

Вот как это можно теперь, например, сделать.

Continue reading ‘Установка MBRtools на ESXi’ »

Data ONTAP Simulator 8.1.1 в VirtualBox

О том что такое симулятор Data ONTAP я не буду повторяться в пятый, кажется, раз, отсылая к более ранним постам на эту тему. Сегодня – о возможности поставить Simulator под гипервизором, отличным от рекомендуемой NetApp VMware. Ну, допустим, у вас Linux, Solaris, или еще что-то, и поставить VMware Player вы не можете. ??ли просто больше любите VirtualBox. Если для симуляторов версии 7 все было просто, там, фактически, это была задача под обычным Linux, то теперь, для симуляторов v8, это стало чуть сложнее, так как он идет уже готовой VM с FreeBSD внутри.

Описание того, как настроить VM в VirtualBox для запуска в нем Simulator 8.1.1 было недавно опубликовано в Community NetApp.

  1. Установите VirtualBox обычным образом.
     
  2. Скачайте и распакуйте Симулятор 8.1.1
     
  3. Создайте новую VM с типом OS – “BSD”, версией “FreeBSD (64bit)”. Выделите памяти 1600MB, не выбирайте создание виртуальных дисков, они у нас уже есть и мы подключим их позже в готовую VM.
     
  4. Откройте настройки VM (Settings), и на странице System, на табе Processor установите количество CPU – 2.
     
  5. В настройках Storage удалите CDROM с IDE-контроллера. Затем добавьте 4 виртуальных жестких диска, для каждого диска выберите уже существующий vmdk симулятора, по порядку: “DataONTAP.vmdk”, “DataONTAP-var.vmdk”, “DataONTAP-nvram.vmdk” и “DataONTAP-sim.vmdk”. Добавьте контроллер floppy drive с одним пустым floppy. Получившиеся настройки должны выглядеть так:
     

     

  6. На странице Audio уберите отметку в чекбоксе Enable Audio.
     
  7. На странице Network добавьте четыре сетевых адаптера (любого нужного вам режима: “host only”, “bridged”, “internal”, “NAT”). В каждом из четырех добавленных NIC откройте секцию Advanced, и выберите в ней тип адаптера “Intel Pro/1000MT Server (82545EM)”. В симуляторе есть драйвер только для этой карты. Выглядит в итоге все так:
     

     

  8. В стандартной установке виртуальная машина использует подключенные пайпы Windows для двух последовательных портов: стандартной консоли и дебага. Выможете перенаправить их в обычные последовательные порты, но это не обязательно.
     
  9. На странице USB снимите отметку в чекбоксе “Enable USB Controller”
     
  10. На странице Shared Folder не устанавливайте shared folder.
     
  11. Запишите все изменения в VM.
     
  12. Убедитесь, что имеете 1600MB физической свободной памяти для запуска VM, иначе запуск прервется в произвольном месте.
     
  13. Запустим VM.
     
  14. Во время 10-секундной паузы нажмите любую клавишу КРОМЕ Enter, чтобы прервать нормальную загрузку.
     
  15. ??змените настройки, запретив запуск установленных в виртуальной машине VMware Tools командой: “setenv bootarg.vm.run_vmtools false”

     
  16. Тут же можно изменить и серийный номер симулятора, если вы собираете многосимуляторную конфигурацию, чтобы избежать конфликта при их одновременной работе.
     
  17. Введите команду “boot” для нормальной загрузки
     
  18. Когда появится сообщение “Press Ctrl-C for menu”, нажмите Ctrl-C и дождитесь появления boot menu. Первая загрузка может занять порой довольно значительное время.
     
  19. В появившемся boot menu выберите пункт 4, и подтвердите очистку всех дисков и конфигурации.
     
  20. Затем симулятор перезагрузится, эту загрузку уже не нужно прерывать. После окончания загрузки вы увидите стандартную подсказку мастера начальной установки параметров системы, следуйте этой установке и введите все необходимые параметры. Откажитесь от предложения “продолжить в графическом режиме” где-то в середине мастера (в 8.1.1 FilerView уже нет), и дойдите до конца. Если вы сбились, то просто введите setup в качестве команды в консоли, после завершения мастера, и вы сможете повторить настройку с уже введенными данными и изменить какие-то из них.
     

ExpressPod – “сделай сам”

Если вы заинтересовались упомянутым ранее продуктом ExpressPod, это недавно появившаяся у NetApp “коробка”, готовый “продукт”, состоящий из стораджа FAS2240/2220 серверов Cisco UCS C-series (1-юнитовых 19”) и коммутаторов Cisco Nexus 3000 (48x 100/1000 Ethernet + 4x 10G, под NX-OS), ориентированный, прежде всего, на задачи построения “платформы виртуализации”, то в библиотеке NetApp появился новый документ:

ExpressPod Infrastructure Solution Implementation Guide
VMware vSphere on ExpressPod

Michael Zimmerman, David Klem, Chris Reno, and Michael Ansel, NetApp
October 2012 | TR-4107

http://media.netapp.com/documents/tr-4107-VMware-vSphere-ExpressPod.pdf

 

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