今回はWindows PowerShellのコマンドレットであるIsilon-POSHについてご紹介します。

社内インフラの運用を行うにあたり、多くのお客様はWindows PowerShellを用いてシステムの管理や自動化をおこなっていると思います。その中で、ファイルサーバや分析基盤としてIsilonをご利用頂いている場合、他のシステム同様にPowerShellで管理したいというニーズが出て来ると思いますが、Isilon-POSHを使うとIsilonの管理をPowerShellで実行できるようになります。

POSH.png

                                 {code}には多くのプロジェクトがあり上記のようにプロジェクトを検索できます

 

 

Isilon-POSHのセットアップ

Isilon-POSHを実行するにあたり必要な要件は下記となります。

・Powershell 3.0以降

・Isilon OneFS 7.1以降

 

Windows Server 2012やWindows 8以降であれば既にPowerShell 3.0がインストールされてますのでIsilon-POSHさえインポートすれば直ぐに実行可能です。Isilon-POSHはGitHubに公開されていますのでGitHubからダウンロードします。(ダウンロードはこちら

ダウンロードすると「IsilonPlatform」と「SSLValidation」という2つのモジュール(フォルダ)がありますのでPowerShellのModules配下(一般的には、C:\Windows\System32\WindowsPowerShell\v1.0\Modules)にコピーします。コピー終了後、PowerShellを起動します。

 

IsilonPlatformモジュールのインポート

Import-ModuleでIsilonPlatformを指定してモジュールをインポートします。

PS C:\> Import-Module IsilonPlatform

 

特にエラーが表示されなければインポートは成功ですが、Get-Moduleで確認してみます。(赤字のように表示されていれば成功です。)

PS C:\> Get-Module


ModuleType Version    Name                                ExportedCommands

---------- -------    ----                                ----------------

Script     8.0.6      IsilonPlatform                      {Get-isiAntivirusPolicies, Get-isiAntivirusPolicy, Get-isiAntivirusQuarantine, Get-isiAntivirusReportsScan...}

Manifest   3.0.0.0    Microsoft.PowerShell.Host           {Start-Transcript, Stop-Transcript}

Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Content...}

Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-Type, Clear-Variable, Compare-Object...}

Script     1.1        PSReadline                          {Get-PSReadlineKeyHandler, Get-PSReadlineOption, Remove-PSReadlineKeyHandler, Set-PSReadlineKeyHandler...}

 

なお、Isilonで自己署名証明書を使用している場合はSSLValidationをインポートし無効にする必要があります。

PS C:\> Import-Module SSLValidation

PS C:\> Disable-SSLValidation

 

 

Isilonに接続の前に…(コマンドレットやヘルプの使いかた)

Isilonに接続する前に、どのようなコマンドレットがあるかや構文のヘルプの表示方法について説明します。

Isilon-POSHのコマンドレットは、大きく下記の4つのカテゴリにわかれています。(厳密には下記4つ以外に、Send-isiAPIというRESTを投げるコマンドレットがあります。RESTについては別の回でご紹介いたします。)

・Get-isiXXXXX

・Set-isiXXXXX

・New-isiXXXXX

・Remove-isiXXXXX

 

コマンドレットは1000以上ありますので、さすがに全部覚えるのは不可能です。Isilon-POSHも一般的なコマンドレットの命名規則と同様、"動詞-名詞"で構成されていますので、先ずは接頭の意味を理解頂ければ問題ありません。現在のクラスタの状態やレプリケーションの状態を表示する場合にはGet、設定の変更はSet、新しく共有やスナップショットを作成する場合はNew、スナップショットなどを削除する場合はRemoveとなります。あとは-isiと繋いでいけばタブ補完も使えますので使いたいコマンドレットに辿り着くと思いますが、わからない場合はGet-Commandを使います。下記は状態表示(Get-isi)の一覧を出力する例です。

PS C:\> Get-Command Get-isi*


CommandType     Name                                   Version    Source

-----------     ----                                   -------    ------

Alias           Get-isiAuditSettingsGlobal             8.0.6      IsilonPlatform

Alias           Get-isiAuthProviderAds                 8.0.6      IsilonPlatform

Alias           Get-isiAuthProviderAdsDomain           8.0.6      IsilonPlatform

Alias           Get-isiAuthProviderAdsDomains          8.0.6      IsilonPlatform

Alias           Get-isiAuthProviderKrb5                8.0.6      IsilonPlatform

Alias           Get-isiAuthProviderLdap                8.0.6      IsilonPlatform

Alias           Get-isiAuthProviderNis                 8.0.6      IsilonPlatform

Alias           Get-isiAuthProvidersAds                8.0.6      IsilonPlatform

Alias           Get-isiAuthProvidersKrb5               8.0.6      IsilonPlatform

Alias           Get-isiAuthProvidersLdap               8.0.6      IsilonPlatform

Alias           Get-isiAuthProvidersNis                8.0.6      IsilonPlatform

Alias           Get-isiAuthProvidersSummary            8.0.6      IsilonPlatform

Alias           Get-isiClusterConfig                   8.0.6      IsilonPlatform

Alias           Get-isiClusterExternalIPs              8.0.6      IsilonPlatform

Alias           Get-isiClusterIdentity                 8.0.6      IsilonPlatform

Alias           Get-isiClusterTime                     8.0.6      IsilonPlatform

Alias           Get-isiFilepoolDefaultPolicy           8.0.6      IsilonPlatform

~~~~~~~~省略~~~~~~~~

 

該当のコマンドレットが見つかったら次に構文を確認します。構文の確認にはGet-Helpを使います。例えば、新規スナップショットを作成する場合の構文を確認するには下記のとおり入力します。

PS C:\> Get-Help -Detailed New-isiSnapshots


名前

    New-isiSnapshots


概要

    New Snapshots



構文

    New-isiSnapshots [[-alias] <String>] [[-expires] <Int32>] [[-name] <String>] [-path] <String> [[-Cluster] <String>] [<CommonParameters>]



説明

    Create a new snapshot.



パラメーター

    -alias <String>

        Alias name to create for this snapshot. If null, remove any alias.


    -expires <Int32>

        The Unix Epoch time the snapshot will expire and be eligible for automatic deletion.


    -name <String>

        The user or system supplied snapshot name. This will be null for snapshots pending delete.


    -path <String>

        The /ifs path snapshotted.


    -Cluster <String>

        Name of Isilon Cluster

 

コマンドレットによっては引数が必要になる場合や引数を省略できる場合がありますので、今度はGet-Help -Fullを使って確認します。下記赤字のように"必須 true"となっている引数は入力しないとエラーとなります。

PS C:\> Get-Help -Full New-isiSnapshots


名前

    New-isiSnapshots


概要

    New Snapshots


構文

    New-isiSnapshots [[-alias] <String>] [[-expires] <Int32>] [[-name] <String>] [-path] <String> [[-Cluster] <String>] [<CommonParameters>]



説明

    Create a new snapshot.



パラメーター

    -alias <String>

        Alias name to create for this snapshot. If null, remove any alias.


        必須                         false

        位置                         1

        既定値

        パイプライン入力を許可する   true (ByPropertyName)

        ワイルドカード文字を許可する false


    -expires <Int32>

        The Unix Epoch time the snapshot will expire and be eligible for automatic deletion.


        必須                         false

        位置                         2

        既定値                       0

        パイプライン入力を許可する   true (ByPropertyName)

        ワイルドカード文字を許可する false


    -name <String>

        The user or system supplied snapshot name. This will be null for snapshots pending delete.


        必須                         false

        位置                         3

        既定値

        パイプライン入力を許可する   true (ByPropertyName)

        ワイルドカード文字を許可する false


    -path <String>

        The /ifs path snapshotted.


        必須                         true

        位置                         4

        既定値

        パイプライン入力を許可する   true (ByPropertyName)

        ワイルドカード文字を許可する false


    -Cluster <String>

        Name of Isilon Cluster


        必須                         false

        位置                         5

        既定値

        パイプライン入力を許可する   true (ByPropertyName)

        ワイルドカード文字を許可する false

 

Isilon-POSHの実行

少し前置きが長くなりましたが実際にIsilon-POSHを実行していきます。

 

Isilonへログイン

先ずはIsilonへのログインが必要となりますので、New-isiSessionを実行します。ログインアカウントおよびパスワードを聞かれますので入力します。

PS C:\> New-isiSession -ComputerName <Isilonクラスタのホスト名もしくはIPアドレス>

 

ハードウェア構成の確認

LNN1のハードウェア構成を確認するには、Get-isiClusterNodeHardware -id 1を実行します。

PS C:\> Get-isiClusterNodeHardware -id 1



chassis          : ISI12 (Isilon (CIDesigns) 12-Bay Chassis)

chassis_code     : Unknown

chassis_count    : 1 (Single-Chassis System)

class            : storage

configuration_id : 851-0086-81

cpu              : GenuineIntel (2.33GHz, stepping 0x0001067a)

disk_controller  : LSI1068E-28 (LSI SAS1068E + Vitesse 28-port SAS Controller) (28 ports)

disk_expander    : VIT7157 (Vitesse 7157 Disk Expander)

family_code      : Unknown

flash_drive      : None (No physical dongle supported) ((null))

generation_code  : Unknown

hwgen            : RacerX (RacerX Hardware)

id               : 1

imb_version      : Board Version 0x20f

infiniband       : ISI25208 (Isilon MT25208-based IB Card)

lcd_version      : NoriVFD (Noritake VFD)

lnn              : 1

motherboard      : SupMicX7DBU (SuperMicro X7DBU Motherboard)

net_interfaces   : em*4,ib*2 (4x Intel, 2x IB)

nvram            : MT25208 (Mellanox 25208 based Card) (492MB card) (size 515899392B)

powersupplies    : {PS1 (type=ColdWatt, fw=2.1), PS2 (type=ColdWatt, fw=2.1)}

processor        : Dual-proc, Quad-core

product          : IQ 10000x-ssd

ram              : 17143812096

serial_number    : XXXXXXXXXX

series           : x_series

storage_class    : storage

 

バッテリ状態の確認

同様にバッテリの状態を確認するにはGet-isiClusterNodeStatusBatterystatus -id 1を実行します。

PS C:\> Get-isiClusterNodeStatusBatterystatus -id 1



id              : 1

last_test_time1 : Mon Dec 25 17:38:16 2017

last_test_time2 : Mon Dec 25 20:18:21 2017

lnn             : 1

next_test_time1 : Fri Feb 23 16:38:16 2018

next_test_time2 : Fri Feb 23 20:18:21 2018

present         : True

result1         : passed

result2         : passed

status1         : Good (10)

status2         : Good (10)

supported       : True

 

SMB共有の作成

New-isiSmbSharesでSMB共有を作成します。共有名をposhshare、共有パスを/ifs/dataとする場合は下記となります。

PS C:\> New-isiSmbShares -name poshshare -path '/ifs/data'


id

--

poshshare

 

SMB共有の確認

SMB共有を表示する場合はGet-isiSmbSharesを実行します。

PS C:\> Get-isiSmbShares



access_based_enumeration           : False

access_based_enumeration_root_only : False

allow_delete_readonly              : False

allow_execute_always               : False

allow_variable_expansion           : False

auto_create_directory              : False

browsable                          : True

change_notify                      : norecurse

create_permissions                 : default acl

csc_policy                         : manual

description                        :

directory_create_mask              : 448

directory_create_mode              : 0

file_create_mask                   : 448

file_create_mode                   : 64

hide_dot_files                     : False

host_acl                           : {}

id                                 : poshshare

impersonate_guest                  : never

impersonate_user                   :

inheritable_path_acl               : False

mangle_byte_start                  : 60672

mangle_map                         : {0x01-0x1F:-1, 0x22:-1, 0x2A:-1, 0x3A:-1...}

name                               : poshshare

ntfs_acl_support                   : True

oplocks                            : True

path                               : /ifs/data

permissions                        : {@{permission=read; permission_type=allow; trustee=}}

run_as_root                        : {}

strict_flush                       : True

strict_locking                     : False

zid                                : 1

 

スナップショットの作成

スナップショットを作成する場合は、New-isiSnapshotsを実行します。Get-Helpで説明しましたとおり引数が必須なのは-pathだけですが、スナップショットの名前が機械的な名前(例えばs46653など)になりますので-nameでスナップショット名を指定します。

PS C:\> New-isiSnapshots -name poshsnap -path /ifs/data



created        : 1518082086

expires        :

has_locks      : False

id             : 46651

name           : poshsnap

path           : /ifs/data

pct_filesystem : 6.75642164438273E-09

pct_reserve    : 0.0

schedule       :

shadow_bytes   : 0

size           : 2048

state          : active

target_id      :

target_name    :

 

以上、Isilon-POSHの使い方についてご紹介いたしました。

動作してしまえば、後はGet-Helpを使いながら色々なコマンドレットを試して頂けると思います。

 

 

さいごに

アプリケーションやWindows OS、vSphereをPowerShellで管理している場合や、Isilonクラスタが複数ある環境ではIsilon-POSHは非常に強力なツールであることをご理解頂けたかと思います。Isilon-POSHは強力が故に殆ど(99%!?)のAPIをカバーしているため特にSetやRemoveを実行される場合はご注意ください。本番環境で実行される前に検証機やIsilonSD Edge、OneFSシミュレータ等で事前にテストすることを強く推奨いたします。なお、Isilon-POSHはオープンソースによるプロジェクトですのでEMCのサポートもございませんので予めご了承ください。

 

 

参考情報

Isilon-POSH GitHub https://github.com/vchrisb/Isilon-POSH

{code} https://thecodeteam.com/

 

 

バックナンバー

IsilonianTech 第1回 Isilonとオープンソース ~REX-Ray編~

IsilonianTech 第2回 Isilonとオープンソース ~OpenStack Manila編~

IsilonianTech 第3回 Isilonとオープンソース ~Isilon Data Insights Connector~

IsilonianTech 第4回 Software Defined Storage ~IsilonSD Edge~

IsilonianTech 第5回 Isilonとオープンソース ~Isilon-POSH~

IsilonianTech 第6回 Isilonとオープンソース ~Elastic Stack編~

IsilonianTech 第7回 Isilonとデータアナリティクス ~Cloudera編~

IsilonianTech 第8回 Elastic Cloud Storage (ECS) ~ECS Community Edition~

IsilonianTech 第9回 ISILON + ECS = UNLIMITED ~Isilon CloudPools~

 

安井 謙治

Dell EMC Unstructured Data Solutions

UDS事業本部 SE