8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ウサギでもわかるAmazon FSx for WindowsのPowerShellによる管理

Last updated at Posted at 2020-02-20

前回はFSxとは何か、サービスの位置づけ、簡単なチュートリアルをやってみましたが、今回は作成したFSxの各機能の設定に触れてみたいと思います。

#共有ポイントを増やす
標準では一つの共有ポイントしかありませんが、増やす方法もドキュメントに記載されてました。
共有ポイントを増やすことができれば、既存ファイルサーバからの移行作業も効率的になったり、管理の手間が省けたりすることもあるので試してみました。
ユーザーセッションとオープンファイル

Windowsメニューから「fsmgmt.msc」と検索し、「共有フォルダ管理」を開き、「操作」から「別のコンピューターへ接続」を選択。
image.png
ここでDNS名を入力します。
image.png
「共有」を開いて右側の空白で右クリックし、「新しい共有」を選択。
image.png
既存の「share」があるドライブ(この場合には「D:¥」)に新しい名前を指定し、「見つかりません」といわれるので「はい」を押します。
image.png

アクセス権はAdministratorにフルアクセスのみで良い、と思ったら、このAdministratorはローカルのAdministratorなのでアクセス権をカスタマイズして、ドメインユーザーを設定する必要がありました。
image.png
できました!
image.png
##追加した共有ポイントをマウントする
できました。
image.png

しかし、クォータ設定が共通らしく、両方のディスクがフルになっています。
内容的には以下のような操作をしたからです。
1MBでハードクォータを設定した上で、Qドライブに1MBのファイルを作ってディスクフルにしました。
その結果、あとから作成したしてZドライブにマウントした別の共有ポイントも、ファイルが一つもない状態であるにもかかわらず、ディスクフルになってしまいました。
image.png

##共有ポイントは増やせた
FSxにおいては共有ポイントを増やすことはできました。
しかし、ファイルサーバの運用では一般的に、共有ポイントごとにクォータ設定することが多いのではないかと思います。しかし、FSxでは共有ポイントを増やしても、同じエンドポイントの配下になるため、クォータの設定も当然ながら同一の配下になってしまうことがわかりました。
クォータの設定を新たに設定したい場合には、また別のFSxエンドポイントをデプロイしなければならないということがわかりました。

なお、共有ポイントの追加は以下のコマンドでも可能なようです。
ファイル共有

New-FSxSmbShare -Name "New CA Share" -Path "D:\share\Marketing" -Description "CA share" -ContinuouslyAvailable $True 

#Amazon FSx for WindowsをPowerShellで管理する
次に、CLI(PowerShell)で各種設定をしてみます。
FSxはストレージのみなのでRemoteDesktopはできませんが、PowerShellで管理します。

しかし、いきなりエラーが発生して凹みます。
image.png

PS C:\Users\Administrator> enter-pssession -ComputerName amznfsxslmbgwk4.bx.local -ConfigurationName FsxRemoteAdmin
enter-pssession : One or more errors occurred processing the module 'FSxRemoteAdmin' specified in the InitialSessionSta
te object used to create this runspace. See the ErrorRecords property for a complete list of errors. The first error wa
s: Cannot find the Windows PowerShell data file 'SmbLocalization.psd1' in directory 'C:\Windows\system32\WindowsPowerSh
ell\v1.0\Modules\smbshare\ja-JP\', or in any parent culture directories.
発生場所 行:1 文字:1
+ enter-pssession -ComputerName amznfsxslmbgwk4.bx.local -Configuration ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Enter-PSSession], RunspaceOpenModuleLoadException
    + FullyQualifiedErrorId : ErrorLoadingModulesOnRunspaceOpen

##エラーの解消方法
こちらの情報によると英語OS以外の言語のOSからだとエラーになるそうです。なるほど、バグですか。

そのため以下のようにこのセッションだけ英語に切り替える方法で実行します。(そんなことできるんだ…)
image.png

できました!

$usSession = New-PSSessionOption -Culture en-US -UICulture en-US

↑これが大切。英語のセッションに切り替えます。
↓そして管理モード?のセッションに入ります。

enter-pssession -ComputerName amznfsxslmbgwk4.domain.com -SessionOption $usSession -ConfigurationName FsxRemoteAdmin

##もう一つの実行方法
コマンドの送信方法には二通りあって、上記はコマンドセッションを接続して連続してコマンドを入力できるようにする方法です。プロンプトが異なっているのでわかりますね。
この場合には「exit」でPowerShellに戻ることができます。

もう一つの方法は以下のように記述することで、セッションを一行ごとに送信することもできます。
image.png

Invoke-Command -ComputerName amznfsxslmbgwk4.domain.com -SessionOption $usSession -ConfigurationName FSxRemoteAdmin -scriptblock {Set-FsxShadowStorage -Default}

コマンド実行後に通常のPowerShellプロンプトに戻っていますね。
この場合ももちろん事前に$usSessionの定義は必要です。

#クォータを設定してみる
早速クォータの設定をしてみましょう。
とはいえ方法がわからないので、まずはAWSのドキュメントを見てみます。
ストレージクォータ

コマンドの一覧はこちらです。

ユーザーストレージクォータコマンド 説明
Enable-FSxUserQuotas ユーザーストレージクォータの追跡または実施、またはその両方を開始します。
Disable-FSxUserQuotas ユーザーストレージクォータの追跡と適用を停止します。
Get-FSxUserQuotaSettings ファイルシステムの現在のユーザーストレージクォータ設定を取得します。
Get-FSxUserQuotaEntries ファイルシステム上の個々のユーザーおよびグループの現在のユーザーストレージクォータエントリを取得します。
Set-FSxUserQuotas 個々のユーザーまたはグループのユーザーストレージクォータを設定します。
・・・なるほどわからん。
え?説明これだけ?
これでは何もわかりません。
##コマンドのヘルプ
各コマンドの後ろに「-?」をつけて実行すると簡単な説明が出るらしいのでやってみます。
image.png
これで少しわかりました。
クォータを有効化するコマンドは以下のように入力すればいいようです。
Enable-FSxUserQuotas -Enforce -DefaultLimit 1000 -DefaultWarningLimit 500

設定する項目の単位は試してみたところ、「キロバイト」のようです。「500」と「1000」と書いたので、警告が「500KB」で、「1MB」を超えたら書き込みができなくなるはずです。
image.png
設定できたようです。

設定前と設定後で、QドライブにマウントしたFSxの空き容量が変更されました。
image.png
成功です。

##クォータの動作テスト
300KBのファイルを作ってみました。
image.png
正常にできました。
コピーして600KBにしてみます。
image.png
こちらも正常です。
ただし、Warningはどこに警告が出るのかわかりませんでした。CloudWatchにも無いようですし、Windowsのイベントログにも出ていませんでした。
謎です。
CloudWatchのアラート画面は以下のように何もありません。
image.png

ちなみに、FSxをデプロイすると、標準で以下のようなリソースがCloudWatchで取得されます。
image.png
でもこれ、「Free Storage Capacity」がおかしくないですか?
32GBしかないはずなんですが、このFSxエンドポイント。

それに1MBの未満データをいじった程度で171GB→103GBへ変化しているのはなぜ?クォータ設定の影響?
不明ですが、とりあえず無視しましょう。

ともかく、さらにコピーして4つ目のファイルをコピーしたら、1MBを超えるときにエラーが出ました。ハードクォータの動作確認は成功です。
image.png

##アラートの設定
警告の出る場所や手段は結局わかりませんでしたが、CloudWatchでアラートの作成は可能なので、SNSでメール通知なども簡単にできます。

メトリクス名
DataReadOperations
MetadataOperations
DataWriteOperations
DataWriteBytes
DataReadBytes
FreeStorageCapacity
ここにもWarningの文字はありません。「FreeStorageCapacity(空き容量)」もストレージ全体の容量が分母になっているので、クォータの警告とは関連なさそうです。
「FreeStorageCapacity(空き容量)」メトリクスのアラート設定条件は以下の画面で行います。
image.png

以下のドキュメントには「追跡にのみ関連」と記載がありますが、これでは追跡もできなさそうです。
ストレージクォータ
image.png
とほほ。。。

FSxのクォータWarningについては、今後も情報を探していきたいと思います。

#シャドーコピー設定
クォータの次はシャドーコピーの設定です。
Windowsでサーバ運用をした経験がある方ならおなじみの、「以前のバージョン」機能です。
Windowsでシャドーコピー機能をONにすると標準で64世代が自動的に取得され、万が一ファイルを誤って上書きしたり消去してしまった場合に、設定した時間に取得した状態に戻すことができる機能です。
AWSのドキュメントはこちらです。
Working with Shadow Copies
Shadow Copies
##コマンド一覧

シャドウコピーコマンド 説明

ドキュメントに一覧が・・・なかった
ので、AWSのドキュメントを見て作りました。

シャドウコピーコマンド 説明
Set-FsxShadowStorage シャドウコピーを設定する
Get-FsxShadowStorage シャドウコピーの現在の構成を表示
Remove-FsxShadowStorage シャドーコピー領域の削除と無効化
Set-FsxShadowCopySchedule シャドーコピースケジュールの設定
Get-FsxShadowCopySchedule シャドーコピースケジュールの現在の構成を表示
Remove-FsxShadowCopySchedule シャドーコピースケジュールの削除
New-FsxShadowCopy 新しいシャドウコピーの作成
Get-FsxShadowCopies 既存のシャドウコピーの表示
Remove-FsxShadowCopies シャドウコピーの削除

##機能を有効化する
WindowsServerと同様に、FSxも標準では機能が有効化されていないので、まずは有効化するところからやってみましょう。
先ほどのクォータ設定と同様にPowerShellを利用します。当然日本語OSでは(以下略)なのでご注意ください。
オプションはいくつかありますが、コマンドは簡単です。

コマンドオプション 説明
-Maxsize 消費できるストレージの最大量
-Default ファイルシステムの最大10%
Maxsizeオプション 説明
2500000000 バイト単位
(2500MB)、(2.5GB) キロ・メガ・ギガバイトなどの単位
"20%" ストレージ全体に対する割合
"UNBOUNDED" 未定義

今回はディフォルトで設定します。

Set-FsxShadowStorage -Default

image.png

「-Default」オプションはシャドーコピーで利用する容量をディフォルトの10%に設定するという内容です。

##シャドーコピー領域の削除
次に、シャドーコピーの領域を削除してみます。
[Y]の入力が求められます。
もともとデータがありませんでしたので、一瞬で終わりました。

Remove-FsxShadowStorage

image.png

この状態ではシャドーコピー機能が無効化されてしまうので、また有効化する必要があります。

##スケジュールの作成
次はシャドーコピーを取得するタイミングを設定してみます。
例としてはありがちな「月~金、6:00」「月~金、18:00」の2パターンを入れてみます。

変数を用いますので、一度「exit」してから以下を実行します。

$trigger1 = new-scheduledTaskTrigger -weekly -DaysOfWeek Monday,Tuesday,Wednesday,Thursday,Friday -at 06:00
$trigger2 = new-scheduledTaskTrigger -weekly -DaysOfWeek Monday,Tuesday,Wednesday,Thursday,Friday -at 18:00
enter-pssession -ComputerName amznfsxslmbgwk4.domain.com -SessionOption $usSession -ConfigurationName FsxRemoteAdmin
set-fsxshadowcopyschedule -scheduledtasktriggers $Using:trigger1,$Using:trigger2 -Confirm:$false

image.png
お!きちんとUTCでセットしてくれました。賢い!
きちんとスケジュールをセットすることができました。

##シャドーコピーを作成する
稀に任意のタイミングでシャドーコピーを作成する必要があるかもしれませんが、そのコマンドも用意されています。
実行するとすぐに取得完了しました。
差分の容量によっては時間がかかるかもしれません。
image.png

##シャドーコピーを削除する
以下のオプションがあります。

コマンドオプション 説明
-Oldest 最も古いシャドウコピーを削除します
-All 既存のすべてのシャドウコピーを削除します
-ShadowCopyId IDで特定のシャドウコピーを削除します

ID指定で消してみます。
image.png
消えました。

#セッション管理
接続しているユーザーや、開いているファイルなどの情報を一覧したり、強制切断したりする機能です。
ドキュメントの記載はこちらです。
ユーザーセッションとオープンファイル

##コマンド一覧

セッションコマンド 説明
Get-FSxSmbSession ファイルシステムと関連するクライアント間で現在確立されているサーバーメッセージブロック(SMB)セッションに関する情報を取得します。
Close-FSxSmbSession SMBセッションを終了します。
Get-FSxSmbOpenFile ファイルシステムに接続されているクライアントに対して開かれているファイルに関する情報を取得します。
Close-FSxSmbOpenFile SMBサーバーのクライアントの1つに対して開いているファイルを閉じます。

#重複排除
重複排除機能もWindowsServerに標準で利用できる機能でしたが、使用したことはありませんでした。こういったサービス型なら管理の手間を考えることなく試せますね。

##コマンド一覧

データ重複排除コマンド 説明
Enable-FSxDedup ファイル共有のデータ重複排除を有効にします。
Disable-FSxDedup ファイル共有のデータ重複排除を無効にします。
Get-FSxDedupConfiguration 最適化のための最小ファイルサイズと保存期間、圧縮設定、除外ファイルの種類とフォルダーなどの重複排除構成情報を取得します。
Set-FSxDedupConfiguration 最適化のための最小ファイルサイズと保存期間、圧縮設定、除外ファイルの種類とフォルダーなど、重複排除の構成設定を変更します。
Get-FSxDedupStatus 重複排除ステータスを取得し、ファイルシステム上の最適化の節約とステータス、時間、およびファイルシステム上の最後のジョブの完了ステータスを記述する読み取り専用プロパティを含めます。
Get-FSxDedupMetadata 重複排除最適化メタデータを取得します。
Update-FSxDedupStatus 更新されたデータ重複排除の節約情報を計算して取得します。
Measure-FSxDedupFileMetadata フォルダーのグループを削除した場合にファイルシステムで再利用できる潜在的なストレージスペースを測定して取得します。多くの場合、ファイルには他のフォルダー間で共有されるチャンクがあり、重複排除エンジンはどのチャンクが一意で削除されるかを計算します。
Get-FSxDedupSchedule 現在定義されている重複排除スケジュールを取得します。
New-FSxDedupSchedule データ重複排除スケジュールを作成およびカスタマイズします。
Set-FSxDedupSchedule 既存のデータ重複排除スケジュールの構成設定を変更します。
Remove-FSxDedupSchedule 重複排除スケジュールを削除します。
Get-FSxDedupJob 現在実行中またはキューに入っているすべての重複排除ジョブのステータスと情報を取得します。
Stop-FSxDedupJob 指定された1つ以上のデータ重複排除ジョブをキャンセルします。

実際に設定してみます。
image.png
設定してメタデータを取得しましたが、そもそもデータがほぼカラっぽなのでほとんど何も出ませんね。

以上、いろいろな設定を確認してみました。

次は運用を仮定してDFS-Rとの組合せと、VPNを接続してオフィスからの利用を仮定した利用方法を試してみたいと思います。

#まとめ
最後にWindowsServerからの移行を検討する際に気になるポイントをまとめてみました。
##機能比較表

機能 WindowsServer Amazon SFx 備考
価格 サービス改善待ち
アクセス権限 NTFSによるアクセス権管理
容量拡張性 ○(EBS) × サービス改善待ち
クォータ フォルダ毎に設定可能 エンドポイント毎にのみ設定可能 エンドポイントを増やせば可
シャドーコピー
セッション管理
重複排除
ウィルスチェック ○(別途) × サービス改善待ち
ログ監査 ○(別途) × 別の仕組みで解決
ホスト名設定 × エイリアスや名前空間によって変更可
冗長化 ○(別途) MultiAZ対応
DFS-R対応 ○? ちょっと触ったけどできなかった…
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?