目次

AWS Storage Gateway 完全ガイド v2.0

目次


ドキュメントメタデータ

  • 最終更新: 2026-04-26
  • バージョン: v2.0
  • 対象者: クラウドアーキテクト、ハイブリッド運用エンジニア、ストレージ管理者
  • 難易度: 中級~上級

概要と課題

本質

AWS Storage Gateway は、「オンプレミスのアプリケーションと AWS ストレージ(S3、EBS、Glacier)をシームレスに接続するハイブリッドストレージブリッジ」である。既存システムの変更を最小化しながら、AWS のスケーラビリティと耐久性を活用できる。ローカルキャッシュによる低レイテンシアクセスと、クラウドへの完全なデータ保護を両立させる。

このサービスを選ぶ理由

なぜ Storage Gateway でないといけないのか?

  1. 既存プロトコル互換の継続

    • NFS/SMB(ファイル)、iSCSI(ブロック)をそのままサポート
    • レガシーアプリケーション変更なしで AWS へ接続可能
    • DataSync は大量転送向け、Storage Gateway は継続的なハイブリッド運用向け
  2. ローカルキャッシュによる二重メリット

    • ホットデータはオンプレ SSD で低レイテンシ提供
    • 全データは AWS に保存で、ローカルストレージ容量を大幅削減
    • 回線障害時もキャッシュデータへのアクセスを継続
  3. 段階的クラウド移行の実現

    • オンプレミスアプリケーションを段階的に修正
    • 最終的にクラウド直接接続へ移行可能
    • 移行コストと運用リスク削減
  4. 既存バックアップソフトとの互換性

    • Tape Gateway は Veeam・NetBackup・Backup Exec をそのまま利用
    • テープライブラリの物理管理を廃止しながら既存ワークフロー保持

このサービスを選ばない理由

  • オンプレミス環境が存在しない場合(クラウド専用なら S3 直接使用)
  • リアルタイムでないデータ転送(DataSync が適切)
  • ホットデータが少量で頻繁にアクセスする(遅延許容度が低い)

アーキテクチャ

全体構成

オンプレミス環境
├─ NFS/SMB クライアント
├─ iSCSI ホスト
├─ バックアップソフト(Veeam等)
│
└─ Storage Gateway(VM/ハードウェア)
    ├─ ローカルキャッシュ(SSD)
    ├─ アップロードバッファ
    ├─ メタデータキャッシュ
    └─ 帯域制御エンジン
         │
         ↓ SSL/TLS + キャッシング
         
AWS Cloud
├─ Amazon S3
├─ Amazon Glacier
├─ Amazon EBS
└─ AWS Backup

mermaid ダイアグラム 1: ゲートウェイ種別フロー

graph TB
    subgraph OnPrem["オンプレミス"]
        NFS["NFS<br/>クライアント"]
        SMB["SMB<br/>クライアント"]
        iSCSI["iSCSI<br/>ホスト"]
        Backup["バックアップ<br/>ソフト"]
    end
    
    subgraph Gateway["Storage Gateway"]
        SG3["S3 File<br/>Gateway"]
        SGFSx["FSx File<br/>Gateway"]
        SGVol["Volume<br/>Gateway"]
        SGTape["Tape<br/>Gateway"]
    end
    
    subgraph AWS["AWS Cloud"]
        S3["Amazon S3"]
        EBS["EBS Snapshots"]
        Glacier["S3 Glacier"]
        FSx["FSx for Windows"]
    end
    
    NFS -->|mount| SG3
    SMB -->|mount| SG3
    SMB -->|mount| SGFSx
    iSCSI -->|connect| SGVol
    Backup -->|VTL| SGTape
    
    SG3 -->|PUT/GET| S3
    SGFSx -->|SMB| FSx
    SGVol -->|snapshot| EBS
    SGTape -->|archive| Glacier

データフロー詳細

File Gateway の場合

クライアント write "/data/file.txt"
    ↓
ゲートウェイのローカルキャッシュに保存(低レイテンシ応答)
    ↓
バックグラウンドで非同期 S3 PUT
    ↓
S3 に保存完了

Volume Gateway(Cached)の場合

ホスト iSCSI write 100GB
    ↓
ゲートウェイのローカルストレージに受信(応答)
    ↓
アップロードバッファに登録(帯域制御適用)
    ↓
バックグラウンド sync → S3 PUT
    ↓
定期スナップショット作成 → EBS

ゲートウェイ種別

1. S3 File Gateway

用途: オンプレミスの NFS/SMB ファイル共有を S3 に移行

項目 詳細
プロトコル NFS v3/v4.1、SMB 2.1/3.0
バックエンド Amazon S3(全ストレージクラス)
キャッシュ対象 最近アクセスしたファイル
適用タグ S3 オブジェクトタグ対応
メタデータ S3 メタデータ・ACL サポート
ファイル共有数 10/ゲートウェイ
最大ファイルサイズ 5 TB

メリット

  • NFS/SMB をそのままサポート。既存マウントコマンド変更なし
  • S3 ライフサイクルポリシー統合で自動アーカイブ(Glacier)
  • S3 バージョニング・暗号化・アクセス制御が全て有効

デメリット

  • ホームディレクトリあたりのファイル数制限(大規模ツリーに注意)
  • NFS ロック(fcntl)の動作に制限あり

2. FSx File Gateway

用途: Windows ファイル共有を FSx for Windows File Server 経由で提供

項目 詳細
プロトコル SMB 2.1/3.0 のみ
バックエンド FSx for Windows File Server
推奨用途 Windows 環境での DFS・グループポリシー活用
ADO 統合 Active Directory 統合対応

注意: 2024年10月より新規顧客向けに利用不可。既存顧客は継続利用可能(サンセット予定未定)。


3. Volume Gateway(ブロックストレージ)

用途: オンプレミスのバックアップ・DR・ブロックストレージキャッシュ

3.1 Cached Volumes(キャッシュ型)

項目 詳細
データ所在 全データ S3、キャッシュのみローカル
ボリューム数 32/ゲートウェイ
ボリュームサイズ 1 GB~16 TB
キャッシュサイズ 150 GiB~32 TB
用途 ローカルストレージ最小化 + S3 バックアップ

メリット

  • ローカルストレージ削減できてコスト効率化
  • AWS Backup でスナップショット管理

デメリット

  • ホットデータをキャッシュに保つ必要(回線障害時はキャッシュのみ利用可)

3.2 Stored Volumes(保存型)

項目 詳細
データ所在 全データローカル、バックアップ非同期で S3
ボリューム数 32/ゲートウェイ
ボリュームサイズ 1 GB~16 TB
用途 低レイテンシ優先 + S3 DR

メリット

  • ローカルディスク全体がアクティブなので最高パフォーマンス
  • 回線障害時も全データアクセス可能

デメリット

  • オンプレミスに全データを保有する必要(ストレージコスト)

4. Tape Gateway(VTL)

用途: テープバックアップシステムの仮想化・Glacier 自動アーカイブ

項目 詳細
プロトコル iSCSI Virtual Tape Library
バックエンド S3 + Glacier(アーカイブ時)
対応バックアップソフト Veeam、Netbackup、Backup Exec、Commvault、ArcServe
仮想テープ容量 100 GB~15 TB
ライブラリサイズ ~1,500 テープ/ゲートウェイ
自動アーカイブ テープエジェクト時に Glacier へ移行

メリット

  • テープ機器の購入・保管・廃棄コストをゼロ化
  • 既存バックアップソフト・スクリプト変更なし
  • Glacier Deep Archive で最低コスト($0.00099/GB)

デメリット

  • テープレスキューがない(手動復旧困難)

デプロイメント方式

1. VMware ESXi

推奨: ほとんどのオンプレミス環境

# Storage Gateway VM をダウンロード(OVA)
# vSphere で ESXi にインポート
# ゲートウェイ初期化コンソール(ブラウザ / ssh)で AWS アカウント認証

# 実行要件: 4 vCPU、16 GB RAM、200 GB ディスク(最小)

2. Hyper-V

Microsoft Windows Server 環境向け

# Hyper-V VM の作成
New-VM -Name "StorageGateway" -VHDPath "C:\VMs\gateway.vhdx" -Generation 2

# ゲートウェイコンソールで初期化

3. KVM / Xen

Linux 仮想化環境向け(QEMU/KVM 推奨)

4. EC2 インスタンス

AWS 内でのゲートウェイ実行(クロスリージョン DR など)

5. ハードウェアアプライアンス

Dell EMC PowerEdge など物理アプライアンス(2025年5月より新規販売終了)


キャッシュとデータ転送

キャッシュアーキテクチャ

┌─ローカルキャッシュディスク(SSD)
│  ├─ ホットデータ:頻繁にアクセスされるファイル
│  ├─ キャッシュヒット時:ローカルキャッシュから読み出し(数ミリ秒)
│  └─ キャッシュミス時:AWS から取得(ネットワークレイテンシ)
│
└─アップロードバッファ(HDD)
   ├─ S3 へのアップロード待機中データ
   ├─ 帯域制限を適用して段階的送信
   └─ 回線障害時のローカル蓄積

帯域制限(Bandwidth Rate Limiting)

# 業務時間(09:00-18:00)は 10 Mbps、それ以外は無制限
aws storagegateway update-bandwidth-rate-limit \
  --gateway-arn "arn:aws:storagegateway:ap-northeast-1:...:gateway/sgw-..." \
  --average-upload-rate-limit 1250  # 10 Mbps = 1,250 KB/s

キャッシュディスク推奨サイズ

ゲートウェイタイプ キャッシュ最小 推奨サイズ
S3 File Gateway 150 GB ホットデータの 10-20%
Volume Gateway 150 GB ボリュームサイズの 20%
Tape Gateway 150 GB 1 日分バックアップサイズ

セキュリティ

データ保護

対象 実装方式
転送中暗号化 SSL/TLS 1.2+(ゲートウェイ↔AWS)
保存暗号化 AWS KMS(Customer Managed Key対応)
アクセス制御 IAM ポリシー + S3 バケットポリシー
ゲートウェイ認証 AWS Signature Version 4

ゲートウェイ認証フロー

1. ゲートウェイ初回アクティベーション
   └─ AWS コンソール認証情報を入力
   
2. AWS が一意のゲートウェイ ID を発行
   └─ ゲートウェイ証明書を発行
   
3. 全通信は X.509 証明書で署名
   └─ HTTPS/TLS でセキュアなチャネル確立

KMS 統合

# カスタマーマネージドキーでゲートウェイを作成
aws storagegateway create-gateway \
  --gateway-name "my-gateway" \
  --gateway-type "S3FILE_S3" \
  --gateway-timezone "Asia/Tokyo" \
  --kms-key "arn:aws:kms:ap-northeast-1:...:key/..."

主要ユースケース

1. 医療画像システム(PACS)のクラウド移行

シナリオ: 病院が DICOM 画像を NFS マウントで保存。ストレージ容量が逼迫。

Solution:

  • S3 File Gateway を NFS として配置
  • 既存 PACS アプリケーション変更なし
  • S3 ライフサイクルで 90 日後に Glacier へ自動アーカイブ
  • 結果: ローカルストレージ 5 TB → 500 GB(90% 削減)

2. テープバックアップの廃止

シナリオ: 製造業が Veeam Backup で毎日テープに保存。テープ管理コスト年 500 万円。

Solution:

  • Tape Gateway を VTL として配置
  • Veeam 設定変更なし(テープを仮想テープに置き換え)
  • 月 1 回程度のテープをエジェクト→Glacier Deep Archive
  • 結果: テープ管理コスト 500 万円 → 月 20 万円以下

3. マルチリージョンファイル共有

シナリオ: 東京・大阪・シンガポール拠点が CAD ファイルを共有。リージョン別にローカルキャッシュを配置。

Solution:

  • 各リージョンに S3 File Gateway を配置
  • 全ゲートウェイが同一 S3 バケットにアクセス
  • ローカルキャッシュで読み取り高速化
  • 結果: CAD ファイル開放時間 60 秒 → 5 秒

4. クラウドネイティブへの段階移行

シナリオ: レガシー独自 OS のファイルサーバーを EC2 移行したい。

Solution:

  • Phase 1: Storage Gateway でハイブリッド継続
  • Phase 2: アプリケーション修正して S3 API 直接呼び出しに変更
  • Phase 3: Storage Gateway をシャットダウン
  • 結果: 段階的移行でアプリ変更リスク低減

5. DR サイトへの同期バックアップ

シナリオ: オンプレで iSCSI ボリュームのバックアップ。DR サイトへ毎時 EBS スナップショットコピー。

Solution:

  • Volume Gateway Cached Volumes で iSCSI 提供
  • AWS Backup で EBS スナップショット自動取得
  • Cross-Region コピーで DR リージョンに同期
  • 結果: RPO 1 時間、RTO 15 分達成

6. データセンター統合

シナリオ: 複数の古いファイルサーバーを 1 つにまとめたい。

Solution:

  • 複数ゲートウェイを 1 つの S3 バケット指定
  • 各ゲートウェイで独立したホームディレクトリ設定
  • S3 キープレフィックスで論理的に分離
  • 結果: ファイルサーバー統合完了、ローカルハードウェア廃棄

7. SaaS アプリケーションのデータシンク

シナリオ: 複数の SaaS(Salesforce など)データを日次で S3 へシンク。

Solution:

  • SaaS API → CSV/Parquet → SFTP アップロード
  • Transfer Family + EventBridge で Lambda トリガー
  • S3 File Gateway 経由で S3 へ保存
  • 結果: 統合データレイク構築、Athena で分析可能

8. オンプレミス DB レプリケーション

シナリオ: Oracle DB のストレージを追加需要でクラウド拡張したい。

Solution:

  • Volume Gateway Stored Volumes で iSCSI ディスク提供
  • Oracle ASM が S3 バックアップを透過的に活用
  • DR リージョンへスナップショット自動複製
  • 結果: ローカルストレージ拡張工事不要

設定・操作の具体例

AWS CLI / SDK による実装

1. S3 File Gateway の作成と NFS 共有設定

# Step 1: ゲートウェイの作成
aws storagegateway create-gateway \
  --gateway-name "corporate-file-gateway" \
  --gateway-type "S3FILE_S3" \
  --gateway-timezone "Asia/Tokyo" \
  --region ap-northeast-1

# 出力例:
# "GatewayARN": "arn:aws:storagegateway:ap-northeast-1:123456789012:gateway/sgw-12345678"

GATEWAY_ARN="arn:aws:storagegateway:ap-northeast-1:123456789012:gateway/sgw-12345678"

# Step 2: ファイル共有の作成
aws storagegateway create-nfs-file-share \
  --gateway-arn $GATEWAY_ARN \
  --s3-bucket-arn "arn:aws:s3:::corporate-files" \
  --location-arn "arn:aws:storagegateway:ap-northeast-1:123456789012:gateway/sgw-12345678" \
  --role-arn "arn:aws:iam::123456789012:role/StorageGatewayRole" \
  --nfs-version "NFS4_1" \
  --client-list "10.0.0.0/8" \
  --squash-level "RootSquash" \
  --read-only false \
  --guess-mime-type true \
  --requester-pays false \
  --tags "Environment=Production,Purpose=FileShare"

# Step 3: クライアント側のマウント
sudo mount -t nfs -o vers=4.1 \
  10.0.1.50:/corporate-files /mnt/corporate-files

# NFSv4.1 強制で POSIX 準拠

2. Volume Gateway Cached Volumes の設定

# Step 1: 初期化(ゲートウェイコンソール実施済みと仮定)

# Step 2: キャッシュディスク追加
aws storagegateway add-cache \
  --gateway-arn $GATEWAY_ARN \
  --disk-ids /dev/sdb /dev/sdc

# Step 3: iSCSI ボリュームの作成(1 TB Cached)
aws storagegateway create-cached-iscsi-volume \
  --gateway-arn $GATEWAY_ARN \
  --volume-size 1000 \
  --snapshot-id snap-1234567890abcdef0  # オプション
  --target-name "iqn.2024-04.corporate:volume1" \
  --network-interface-id eni-12345678

# 出力:
# "VolumeARN": "arn:aws:storagegateway:ap-northeast-1:123456789012:gateway/.../volume/.../vol-xxx"

# Step 4: ホスト側の接続(iSCSI Initiator)
# CentOS/RHEL の例
sudo iscsiadm -m discovery -t sendtargets -p 10.0.1.50
sudo iscsiadm -m node --login -T iqn.2024-04.corporate:volume1

# デバイス確認
lsblk
# sdb 1000G  - Storage Gateway iSCSI ボリューム

3. Tape Gateway の設定(Veeam 連携)

# Step 1: Tape Gateway 作成
aws storagegateway create-tape-gateway \
  --gateway-name "backup-tape-gateway" \
  --gateway-timezone "Asia/Tokyo" \
  --region ap-northeast-1

# Step 2: 仮想テープライブラリの初期化
aws storagegateway create-tape-pool \
  --gateway-arn $GATEWAY_ARN \
  --pool-name "ArchivePool" \
  --storage-class "DEEP_ARCHIVE" \
  --retention-lock-type "GOVERNANCE"

# Step 3: テープの作成(100 GB テープ 10 本)
for i in {1..10}; do
  aws storagegateway create-tapes \
    --gateway-arn $GATEWAY_ARN \
    --tape-size 100 \
    --num-tapes 1 \
    --tape-barcode "TAPE-$(printf '%04d' $i)"
done

# Step 4: Veeam で iSCSI VTL デバイスを追加
# Veeam コンソール → バックアップ インフラストラクチャ
# → テープ → テープサーバー → デバイス追加
# Target: iqn.1991-05.com.quantum:vl... (Tape Gateway)
# ポート: 3260

4. AWS Backup との統合

# Step 1: バックアッププランの作成
aws backup create-backup-plan \
  --backup-plan '{
    "BackupPlanName": "StorageGateway-Daily",
    "Rules": [
      {
        "RuleName": "DailyBackup",
        "TargetBackupVaultName": "default",
        "ScheduleExpression": "cron(0 2 ? * * *)",
        "StartWindowMinutes": 60,
        "CompletionWindowMinutes": 120,
        "Lifecycle": {
          "DeleteAfterDays": 30
        },
        "RecoveryPointTags": {
          "Purpose": "OffSiteBackup"
        }
      }
    ]
  }'

# Step 2: リソースの割り当て(Volume Gateway)
aws backup create-backup-selection \
  --backup-plan-id "plan-id" \
  --backup-selection '{
    "SelectionName": "VolumeGatewayVolumes",
    "Type": "RESOURCES",
    "Resources": [
      "arn:aws:storagegateway:ap-northeast-1:...:volume/vol-xxx"
    ]
  }'

5. Python SDK による帯域制限制御

import boto3
from datetime import datetime, time

sg = boto3.client('storagegateway', region_name='ap-northeast-1')
gateway_arn = "arn:aws:storagegateway:ap-northeast-1:123456789012:gateway/sgw-xxx"

def set_bandwidth_rate():
    """業務時間帯に応じて帯域制限を変更"""
    now = datetime.now().time()
    
    # 業務時間(09:00-18:00)は 5 Mbps、それ以外は無制限
    if time(9, 0) <= now < time(18, 0):
        rate_limit = 625  # 5 Mbps = 625 KB/s
    else:
        rate_limit = 0  # 無制限

    response = sg.update_bandwidth_rate_limit(
        GatewayARN=gateway_arn,
        AverageUploadRateLimit=rate_limit
    )
    
    print(f"Bandwidth set to {rate_limit} KB/s")
    return response

# 実行
set_bandwidth_rate()

6. Terraform による Infrastructure as Code

# main.tf
provider "aws" {
  region = "ap-northeast-1"
}

# Storage Gateway ゲートウェイの作成
resource "aws_storagegateway_gateway" "file_gateway" {
  gateway_name       = "corporate-file-gateway"
  gateway_timezone   = "Asia/Tokyo"
  gateway_type       = "S3"
  average_upload_bit_rate = 1250000  # 10 Mbps

  tags = {
    Name        = "FileGateway"
    Environment = "Production"
  }
}

# NFS ファイル共有
resource "aws_storagegateway_nfs_file_share" "corporate_files" {
  gateway_arn            = aws_storagegateway_gateway.file_gateway.arn
  location_arn           = aws_storagegateway_gateway.file_gateway.arn
  s3_bucket_arn          = "arn:aws:s3:::corporate-files"
  role_arn               = aws_iam_role.gateway.arn
  nfs_version            = "NFS4_1"
  squash_level           = "RootSquash"
  client_list            = ["10.0.0.0/8"]
  guess_mime_type        = true
  requester_pays         = false

  tags = {
    Name = "CorporateFileShare"
  }
}

# IAM ロール
resource "aws_iam_role" "gateway" {
  name = "StorageGatewayRole"

  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = "sts:AssumeRole"
        Effect = "Allow"
        Principal = {
          Service = "storagegateway.amazonaws.com"
        }
      }
    ]
  })
}

resource "aws_iam_role_policy" "gateway" {
  name = "StorageGatewayPolicy"
  role = aws_iam_role.gateway.id

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect = "Allow"
        Action = [
          "s3:GetObject",
          "s3:PutObject",
          "s3:DeleteObject",
          "s3:ListBucket"
        ]
        Resource = [
          "arn:aws:s3:::corporate-files",
          "arn:aws:s3:::corporate-files/*"
        ]
      }
    ]
  })
}

output "gateway_arn" {
  value = aws_storagegateway_gateway.file_gateway.arn
}

類似サービス比較

項目 Storage Gateway AWS DataSync AWS FSx NetApp ONTAP
用途 ハイブリッド継続運用 ファイル一括移行・同期 フルマネージド NFS/SMB ハイブリッド統合ストレージ
ホットデータキャッシュ ✅ あり ❌ なし ❌ なし ✅ あり
既存プロトコル互換 ✅(NFS/SMB/iSCSI) ❌(API 必要) ✅(NFS/SMB) ✅(NFS/SMB/iSCSI)
運用管理 自己管理(ゲートウェイ) AWS 全管理 AWS 全管理 ハイブリッド(パートナー支援)
オンプレ拠点 必須 必須 不要 ハイブリッド可能
初期セットアップ 2-3 週間 1-2 週間 即座(クラウドのみ) 1-2 か月
コスト キャッシュ + 転送 転送量ベース ストレージ + 転送 高額(ハードウェア)

選択基準

  • 既存オンプレ NFS/SMB をそのまま利用: Storage Gateway
  • オンプレから AWS への大規模移行(ワンタイム): DataSync
  • AWS ネイティブなファイルシステム(クラウド専用): FSx
  • ハイブリッド統合で複雑な要件: NetApp Cloud Volumes ONTAP

ベストプラクティス

✅ 推奨事項

  1. ローカルキャッシュサイズの適切な設定

    • ホットデータの 10~20% を目安
    • ディスク容量の 20% 以上を確保
    • SSD 使用でキャッシュヒット率向上
  2. 帯域制限の設定

    • ビジネスアワーと夜間で分離
    • 定期バックアップ時間帯を避ける
    • CloudWatch で帯域使用率を監視
  3. 冗長性の確保

    • ゲートウェイを複数デプロイ
    • 異なる AZ への配置(EC2 の場合)
    • AWS Backup で定期スナップショット
  4. タグによるリソース分類

  • Environment: Production/Staging/Dev
  • CostCenter: Engineering
  • BackupPolicy: Daily/Weekly
  1. CloudWatch アラーム設定

    • キャッシュヒット率 < 70%
    • アップロードバッファ > 80% 満杯
    • ゲートウェイ CPU > 80%
  2. 定期的なメンテナンス

    • ゲートウェイソフトウェア更新(月 1 回)
    • キャッシュディスク SMART チェック
    • ネットワーク帯域幅ベンチマーク
  3. セキュリティ強化

    • KMS Customer Managed Key 使用
    • IAM ポリシーで最小権限付与
    • VPC エンドポイント使用(EC2 ゲートウェイ)
  4. コスト最適化

    • S3 ライフサイクルで Glacier 移行
    • Vault Lock で保持期間強制
    • Reserve Capacity での割引活用

❌ アンチパターン

  1. キャッシュなしでの大容量ボリューム運用 → パフォーマンス低下、AWS 転送料金増加 → 対策: キャッシュサイズ見直し + 帯域増加

  2. ホットスタンバイなしでのシングルゲートウェイ → ゲートウェイ故障時にファイルアクセス不可 → 対策: 冗長ゲートウェイ配置 + AWS Backup 活用

  3. 帯域制限なしでの無制限アップロード → 業務ネットワーク輻輳 → 対策: ビジネスアワー中の帯域制限設定

  4. バックアップ計画なしでの運用 → ゲートウェイ故障時にデータロス → 対策: AWS Backup プラン必須

  5. アクセスログ・監査なし → コンプライアンス要件未達成 → 対策: CloudTrail + S3 Access Logging 有効化

  6. 復旧計画なしでの DR 構成 → テスト時にもトラブル → 対策: 定期的なリストア演習実施


トラブルシューティング

症状 原因 対策
NFS マウント失敗 ゲートウェイと NFS クライアント間ネットワーク不通 ゲートウェイ IP・ファイアウォール確認。ping/nslookup テスト
キャッシュヒット率低い(< 50%) キャッシュサイズ不足またはアクセスパターン散在 describe-file-share で CloudWatch メトリクス確認。キャッシュ追加
アップロード遅い 帯域制限が設定されている。ネットワーク遅延 describe-bandwidth-rate-limit で確認。帯域増加テスト
iSCSI 接続不安定 MTU サイズ不一致。Initiator ログイン再試行設定不足 node.conn[0].timeo.login_timeout = 15 設定。TCP キープアライブ有効化
S3 アップロード権限エラー IAM ロール権限不足 ロール ARN の s3:PutObject 権限確認
テープ エジェクト後 Glacier 未転送 テーププール設定なし create-tape-pool で DEEP_ARCHIVE 指定
ゲートウェイ起動時間長い 初回バックアップスキャン実施中 ゲートウェイログで確認。待機
容量不足エラー ローカルディスク満杯 add-cache または add-upload-buffer でディスク追加

2025-2026 最新動向

AL2023 移行(重要)

AWS は Storage Gateway の OS を Amazon Linux 2 (AL2) から AL2023 へ移行 中です。

タイムライン:

  • 2025-10-28: 新規ゲートウェイ作成時デフォルトが AL2023 に
  • 2026-01-05: AL2 での新規アクティベーション制限開始
  • 2026-06-30: AL2 サポート終了・更新不可

Action Required:

  1. 既存 AL2 ゲートウェイ確認: describe-gateway で OS 版確認
  2. 2026-06-30 前に AL2023 へマイグレーション
  3. ゲートウェイの再作成(ダウンタイム発生)

FSx File Gateway サンセット

2024-10-28 より FSx File Gateway は新規顧客向けに利用不可

既存顧客の対策:

  • 代替: S3 File Gateway + FSx Native API
  • または: AWS DataSync で FSx へ同期

セキュリティ強化(2025-2026)

  • KMS Customer Managed Key の推奨強化
  • GuardDuty Malware Protection 統合(AWS Backup と同様)
  • Access Point ベースのアクセス制御(計画中)

パフォーマンス向上

  • NFS 4.1 Kerberos 認証対応(計画中)
  • iSCSI ALUA(Asymmetric Logical Unit Assignment)サポート検討中

学習リソース

公式ドキュメント

AWS ブログ・リソース

ベンダー製品との比較

  • NetApp Cloud Volumes ONTAP: ハイブリッド統合ストレージ(高度な複製・Snapshot)
  • Ctera: エッジストレージ + クラウド連携(マルチテナント対応)
  • Panzura: グローバルデータファブリック(WAN 最適化)
  • Nasuni: ハイブリッドファイルサービス(エンタープライズクラス)

OSS・ツール

  • rclone: S3 File Gateway マウントのドライバー層
  • s3fs-fuse: S3 を POSIX ファイルシステムでマウント
  • Terraform aws_storagegateway_ providers*: IaC 統合

実装例

小規模(スモールビジネス向け)

構成: 単一オンプレミスサイト、S3 File Gateway 1 台、キャッシュ 500 GB

# 1. ゲートウェイの起動(VMware ESXi)
#    - vCPU: 4, RAM: 8 GB, ディスク: 600 GB
#    - ローカルストレージ: 500 GB キャッシュ

# 2. NFS ファイル共有の作成
aws storagegateway create-nfs-file-share \
  --gateway-arn arn:aws:storagegateway:ap-northeast-1:...:gateway/sgw-xxx \
  --s3-bucket-arn arn:aws:s3:::company-files \
  --role-arn arn:aws:iam::123456789012:role/SGRole \
  --nfs-version NFS4_1

# 3. クライアント側マウント
sudo mount -t nfs -o vers=4.1,rsize=1048576,wsize=1048576 \
  10.0.1.50:/company-files /mnt/shared

# 4. S3 ライフサイクル設定(90 日後に Glacier)
aws s3api put-bucket-lifecycle-configuration \
  --bucket company-files \
  --lifecycle-configuration file://lifecycle.json

# monthly costs: $0 gateway + $50 S3 storage + $10 Glacier

中規模(スケールアップ)

構成: 複数部門サイト、S3 File Gateway 3 台(Regional HA)、キャッシュ 2 TB × 3

# Terraform
resource "aws_storagegateway_gateway" "regional_gateway" {
  count = 3
  
  gateway_name     = "gateway-${count.index + 1}"
  gateway_type     = "S3"
  gateway_timezone = "Asia/Tokyo"
  
  tags = {
    Environment = "Production"
    Region      = "tokyo"
  }
}

# NFS ファイル共有(3 つ)
resource "aws_storagegateway_nfs_file_share" "department_shares" {
  count = 3
  
  gateway_arn   = aws_storagegateway_gateway.regional_gateway[count.index].arn
  s3_bucket_arn = "arn:aws:s3:::multi-dept-files"
  role_arn      = aws_iam_role.gateway.arn
  
  # 各部門別ホームディレクトリ
  default_storage_class = "S3_STANDARD_IA"
  
  tags = {
    Department = ["HR", "Engineering", "Sales"][count.index]
  }
}

# CloudWatch アラーム(キャッシュヒット率監視)
resource "aws_cloudwatch_metric_alarm" "cache_hit_rate" {
  count = 3
  
  alarm_name          = "cache-hit-${count.index + 1}"
  comparison_operator = "LessThanThreshold"
  evaluation_periods  = 2
  metric_name         = "CacheFreePercent"
  namespace           = "AWS/StorageGateway"
  period              = 3600
  statistic           = "Average"
  threshold           = 30
  alarm_actions       = [aws_sns_topic.alerts.arn]
}

# monthly costs: $0.30 × 3 gateways + $500 S3 + $100 transfer

大規模エンタープライズ

構成: 複数リージョン、Tape Gateway(Veeam 統合)、Volume Gateway DR、AWS Backup

#!/bin/bash
# デプロイメントスクリプト

# リージョン別ゲートウェイ配置
for region in ap-northeast-1 eu-west-1 us-east-1; do
  aws storagegateway create-gateway \
    --gateway-name "tg-$region" \
    --gateway-type "VTL" \
    --gateway-timezone "Asia/Tokyo" \
    --region $region
done

# Tape Gateway テーププール設定
aws storagegateway create-tape-pool \
  --pool-name "ComplianceArchive" \
  --storage-class "DEEP_ARCHIVE" \
  --retention-lock-type "COMPLIANCE" \
  --retention-lock-days 2555  # 7 年保持

# AWS Backup: 全ゲートウェイの定期スナップショット
aws backup create-backup-plan \
  --backup-plan '{
    "BackupPlanName": "StorageGateway-Enterprise",
    "Rules": [
      {
        "RuleName": "HourlySnapshot",
        "ScheduleExpression": "cron(0 * ? * * *)",
        "TargetBackupVaultName": "enterprise-vault",
        "Lifecycle": {"DeleteAfterDays": 90},
        "CopyActions": [
          {
            "DestinationVaultArn": "arn:aws:backup:eu-west-1:...:backup-vault:...",
            "Lifecycle": {"DeleteAfterDays": 365}
          }
        ]
      }
    ]
  }'

# monthly costs: $0.30 × N gateways + $5,000+ storage/transfer + Backup licensing

導入ロードマップ

Phase 1: 計画・PoC(1-2 か月)

  • [ ] 現行オンプレミスストレージ構成把握
  • [ ] ホットデータ量・アクセスパターン分析
  • [ ] ゲートウェイタイプ選定(File/Volume/Tape)
  • [ ] キャッシュサイズ試算
  • [ ] PoC 環境構築(テスト用ゲートウェイ)
  • [ ] パフォーマンス検証(latency, throughput)
  • [ ] セキュリティ要件確認(KMS, IAM)

Phase 2: パイロット(2-4 か月)

  • [ ] パイロットグループ決定(1 部門など)
  • [ ] ゲートウェイ本番環境にデプロイ
  • [ ] クライアント移行・トレーニング
  • [ ] バックアップ・DR 計画策定
  • [ ] CloudWatch アラーム・監視設定
  • [ ] パフォーマンス・安定性チューニング

Phase 3: 本番展開(3-6 か月)

  • [ ] 全部門への段階的展開
  • [ ] オンプレミスストレージ廃棄計画
  • [ ] 帯域幅・コスト最適化
  • [ ] 定期的なメンテナンス体制確立
  • [ ] コスト報告・分析

Phase 4: 継続運用

  • [ ] 定期的なキャッシュサイズ見直し
  • [ ] ゲートウェイソフトウェア更新(月 1 回)
  • [ ] AL2023 マイグレーション実施(2026-06-30 前)
  • [ ] セキュリティパッチ適用
  • [ ] 定期 DR 演習実施

まとめ

AWS Storage Gateway は 既存オンプレミスアプリケーションを変更しないままクラウド移行・ハイブリッド運用を実現する強力なブリッジ

主な価値

  1. 段階的移行: アプリ修正リスクを最小化
  2. 低レイテンシ: ローカルキャッシュでホットデータ加速
  3. スケーラビリティ: オンプレミスストレージ容量制限を超越
  4. コスト最適化: S3 ライフサイクル + Glacier アーカイブで大幅削減
  5. 既存投資保護: NFS/SMB/iSCSI/テープ互換で置き換え可能

次のステップ

  1. PoC 開始: AWS コンソールで試用ゲートウェイを起動
  2. アーキテクチャ設計: ゲートウェイタイプ・数・キャッシュサイズ決定
  3. セキュリティ計画: KMS・IAM・監査ログ設定
  4. パフォーマンステスト: latency/throughput 検証
  5. パイロット展開: 小グループでの実運用試験

注意事項

  • 2026-06-30 までに AL2 → AL2023 マイグレーション必須
  • FSx File Gateway は新規利用不可(既存顧客は継続)
  • キャッシュサイズは定期的に見直し
  • 定期的なバックアップ・復旧テスト実施

最終更新: 2026-04-26 バージョン: v2.0