Archive for Апрель 2013

Как переименовать 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.

Data ONTAP 8.2 goes RC!

??так, на днях был опубликован новый релиз Data ONTAP 8 – версия 8.2 RC1. Напомню, что в текущей модели релизов, релизы с названием RC (release candidate) являются версиями “готовыми в продакшн”, однако по ним могут быть не завершены различные внутренние compatibility тесты. Тем не менее статус RC у NetApp указывает, что код релиза стабилен, и, как правило, уже не будет меняться, а когда все внутренние процедуры сертификаций будут завершены, то этот код станет уже “не-RC”, как правило уже без фактических изменений. Поэтому RC в терминах NetApp это уже production-ready release.

Так что можно “начинать смотреть” что нам там приготовили. Если вы уже понемногу привыкли, что в мире браузеров теперь “мажорные версии” меняются каждые два месяца, что вызвано, прежде всего попсовыми маркетиговыми соображениями, то и тут у NetApp своя, олдскульная стратегическая модель. По ней 8.2 это мажорный релиз в OS Generation 8 с большими функционалными изменениями. Как вы уже знаете, DOT G7 и 8.х 7-mode в настоящий момент практически заморожены, и все развитие идет в Clustered ONTAP. Посмотрим что именно.

  • В Clustered ONTAP появилась поддержка SnapVault
     
  • Для уровней Vserver, LUN и файлов появился Quality of Service, который позволяет определять их лимиты по IOPS или MB/s
     
  • Реализована поддержа SMB 3.0 для cDOT (Clustered Data ONTAP AKA Cluster-mode), включая Continuous Availability, Witness Node (для Hyper-V) и Referrals (для standard shares).
     
  • Появилась поддержка для ODX (Offloaded Data Transfer), функции, появившейся в Windows Server 2012 и Hyper-V 3.0. Как и в случае VAAI, у NetApp ODX позволяет повысить не только скорость работы, но и эффективность хранения, копирование не только ускоряется, но, при наличии лицензии FlexClone, еще и не дублирует занятые блоки.
     
  • Продолжется улучшение функциональности для SMB file services, в Clustered ONTAP появились Fpolicy, Remote VSS, Branch Cache, Access Based Enumeration, Roaming Profiles, Previous Versions для снэпшотов NetApp, Folder Redirection, поддержка локальных пользователей и групп, и т.д.)
     
  • Поддерживаются Consistency Groups при создании снэпшотов.
     
  • Появилась поддержка непрерывающего работу перемещения aggregate в HA-паре без перемещения данных.
     
  • Улучшена производительность этапа сканирования при дедупликации.
     
  • Теперь в Clustered ONTAP реализована полная поддержка всех опций VMware VAAI для SAN.
     
  • Про изменения в лицензиях я уже писал в четверг. Прежде чем планировать апгрейд – обязательно поговорите с вашими контактами в вендоре насчет необходимость получить новые лицензии и того, как это все будет происходить.
     
  • Наконец-то появилась “безсвитчевая” конфигурация для двух нодового кластера. Как вы знаете, можно установить Cluster-mode на одну HA-пару контроллеров. Однако ранее это все равно требовало от вас иметь коммутатор 10G для этих двух контроллеров. Теперь воможна конфигурация для двух контроллеров в Clustered ONTAP без коммутатора для Cluster link. При добавлении в кластер второй и далее пары контроллеров, конечно, коммутатор понадобится.
     
  • Появилась официальная поддержка для “однонодового кластера”, пример использования – “secondary” системы, например получатели репликации SnapMirror или SnapVault.
     
  • Появилась поддержка Intracluster FlexCache.
     
  • Вновь увеличены размеры Aggregate. Для старших систем они выросли до 400TB. В целом лимиты практически удвоены для всех платформ.
     
  • Число поддерживаемых FlexVol на ноду увеличено с 500 to 1000, за исключением моделей ряда FAS2xxx и старых платформ (FAS3140 и FAS3210). Максимальное число FlexVols на кластер вцелом достигло 6000.
     
  • Число LUN на ноду увеличено с 2048 до 8192, с максмальным числом на кластер нод 49.152 LUN.
     
  • Infinite Volumes могут жить со стандартными FlexVol-ами и Vserver, добавлена поддержка SMB 1.0 (ранее только NFS), Flash Pool и Unified ACLs.
     
  • Появилась возможность иметь разные типы RAID для SSD и HDD в Flash Pool Aggregate. Раньше, как вы помните, если Aggregate состоял из RAID-групп RAID-DP, то и на SSD два диска шли под party disks. Теперь можно сделать для HDD (например SATA) – RAID-DP, а для SSD – RAID-4 с одним parity disk.

Data ONTAP 8.2 RC1 опубликован на NetApp Support Site, и его уже можно качать оттуда.

??зменения в схеме лицензирования Data ONTAP 8.2

Процесс постепенного перехода и перевода пользователей с good ol’ 7-mode на shiny new Cluster-mode своей неторопливостью и неспешностью порой мне напоминает ту сердобольную семейку, которая своему щенку фокстерьера хвостик отрезала по кусочку. К меня такое ощущение, что я уже всю жизнь с NetApp провел в процессе transition-а продуктов компании с 7-моде на Кластер. Ну да впрочем хватит бухтеть. :)

На носу у нас Data ONTAP 8.2, с новыми интересными возможностями, а пока на глаза мне попался документ, посвященный изменениям в лицензировании. Как вы заметили, NetApp экспериментиует с лицензированием уже довольно давно, что-то явно получается неплохо, взять хотя бы модель Data ONTAP Essentials.

Начиная с Data ONTAP 8.2 NetApp меняет лицензионные ключи и всю схему лицензий на 7-Mode и Cluster-mode.

Во-первых, вводятся новые, единые лицензионные ключи, единые для 7-Mode и Cluster-mode. Если вы интересовались темой, то знаете, что в Cluster-mode были отдельные ключи, и до 8.2 вам приходилось явно, на этапе покупки системы выбирать, какую систему вы покупаете, чтобы получить нужный набор. Теперь вводятся новые лицензионные ключи софтварных фич, длиной аж 28 символов, которые будут работать на обоих mode Data ONTAP, начиная с 8.2.

Во-вторых, лицензии будут привязаны к серийнику контроллера. Это неприятная новость, но рано или поздно это должно было произойти. На практике, для честного приобретателя, это означает, что теперь, при замене контроллера (head swap), вам также потребуется получит под его серийник новый набор ключей. Соответственно усложняется и удлиняется эта, ранее довольно простая, процедура.

Наконец, лицензи могут существовать “не-cluster-wide”, например часть узлов в кластере может иметь один набор лицензий, а часть – другой, оставаясь при этом единым кластером.* (см комментарий). Напомню, что “кластером” с прошлого года в этом блоге я называю всегда только группу HA-пар контроллеров, работающих в Cluster-mode (C-mode), а то что иногда раньше называлось “кластером”, а именно пара контроллеров под управлением “старой” 7-mode, теперь называется HA-парой (High Availability pair). На HA-пару лицензии по-прежнему единые.

Впрочем, более интересные новости грядут с самим выходом Data ONTAP 8.2, не переключайте ваши браузеры :)

Это любопытно: NetApp FlexPod

Надеюсь вы помните, что такое NetApp FlexPod. Это разработанный NetApp и Cisco, совместно валидированный “конструктор”, предлагаемый этими компаниями своим партнерам для использования в качестве базового инфраструктурного блока для IT-решений, например под системы виртуализации, баз данных, и прочих подобных задач.

NetApp FlexPod включает в себя систему хранения NetApp FAS3200 и серверную blade-ферму Cisco B-series, сетевое ядро построено с использованием коммутаторов Cisco Nexus 10Gb Ethernet.

NetApp и Cisco проделали большую работу по документированию решения и валидации дизайна, что позволяет, при необхдимости, построить такой FlexPod самостоятельно. В этом отличие FlexPod от других “конвергентных” продуктов на рынке – EMC vBlock и Oracle Exadata, которые продаются как законченные, зафиксированные, неизменные “ящики” от вендора.

В прошлом году был также представлен “FlexPod Lite”, под названием NetApp ExpressPod. Это та же идея, но построенная с использованием компонентов пониже классом, и ориентированная на тех, для кого FlexPod “больно жирно”, то есть NetApp FAS2200, сервера Cisco C-series, коммутаторы Cisco Nexus 3000.

Это решение также валидировано обоими компаниями, например под ферму виртуализации: ExpressPod Infrastructure Solution Implementation Guide
VMware vSphere on ExpressPod
http://media.netapp.com/documents/tr-4107-VMware-vSphere-ExpressPod.pdf

Но всегда было интересно посмотреть, какое же место занимает FlexPod на рынке, среди своих гораздо более именитых конкурентов? ?? вот на глаза мне попались такие результаты, взятые в отчетах Гарднера:

Причем, судя по тому, что это первая половина 2012 года, здесь еще нет ExpressPod,и, как я подозреваю, не учитываются пользовательские “самосборы” с использованием дизайна FlexPod, что, в принципе, не возбраняется и даже поощряется.