550 likes | 815 Vues
ファイル共有再入門. 鮫島 隆治(黒龍). 今日の アジェンダ. SQL Server2012 の新機能のおさらい SQL Server 、 Hyper-V での SMB 接続サポート SMB/CIFS について. SQL Server2012 の新機能の おさらい. SQL Server AlwaysOn による可用性の向上/ DR (災害復旧)の実現 データベース エンジンの機能強化 開発生産性の向上 DWH (データ ウェアハウス)関連の機能 強化. パワーアップした SQL Server2012 の高可用性機能. SQL Server AlwaysOn
E N D
ファイル共有再入門 鮫島 隆治(黒龍)
今日のアジェンダ • SQL Server2012の新機能のおさらい • SQL Server、Hyper-VでのSMB接続サポート • SMB/CIFSについて
SQL Server2012の新機能のおさらい • SQL Server AlwaysOnによる可用性の向上/DR(災害復旧)の実現 • データベース エンジンの機能強化 • 開発生産性の向上 • DWH(データ ウェアハウス)関連の機能強化
パワーアップしたSQL Server2012の高可用性機能 • SQL Server AlwaysOn • AlwaysOnAvailability Group • AlwaysOnフェールオーバー クラスター インスタンス • Windows Server Core のサポート
AlwaysOn Availability Group • AlwaysOn Availability Group(可用性グループ)は今まで提供されていたWSFC(Windows Server フェールオーバー クラスタリング)や DBM(データベース ミラーリング)、ログ配布、レプリケーション機能などをより使いやすく強力に進化させた機能で容易な設定で可用性を向上させることができます。
AlwaysOn Availability Group • 共有ストレージ不要 • ローカルにデータ保持するため共有ストレージ(エントリーレベルで数百万~)が不要。 フェールオーバー
AlwaysOn Availability Group • 4台のセカンダリサーバーサポート • 今まではセカンダリサーバーが1台だけだったためフェールオーバーを主眼に置くとDR構成がとれずDR構成のために非同期モードにするとデータロストのリスクが増加してしまうため他のテクノロジーとの組み合わせが必要でした。
今までのDBMでの基本構成 • 同期モード • 応答性が必要なためDRとしては使用できない 事前コミット コミット
AlwaysOn Availability Group • WFCSで構成 • 遠隔地へは非同期モードやログ配布を使用
AlwaysOn Availability Group • 柔軟な構成 東京 非同期によるセカンダリとの同期はDRとして使用可能。 沖縄 大阪 • 監視サーバー不要 • DBM構成では自動フェールオーバーのために監視 • サーバーが必要となっていましたが不要となっています。
ほかにも・・・ • セカンダリサーバーからのリアルタイム読み取りが可能 • DBMではスナップショット作成段階での過去データ参照だったがリアルタイムの読み取り、バックアップなどに活用可能 • tempdbをローカルサーバーにインストール可能 • 今までのWFCSと違いローカルにtempdbを持つことができるためパフォーマンスが良くなっています。 • 注意点 • AlwaysOn Availability GroupはEnterpriseエディションのみ。また、アクティブセカンダリ構成で使用する場合はライセンスも必要。(従来通りDBM構成でホットスタンバイさせているだけならライセンスは1台分のみ)
AlwaysOnフェールオーバー クラスター インスタンス • AlwaysOnフェールオーバー クラスター インスタンスとはWSFC上にインストールされたSQL Serverのことを指します。 • 今までのフェールオーバークラスタリングでは共有ストレージが必要だったのがSQL Server 2012からSMB接続(共有フォルダー)へのデータベース配置が可能になりました。 • 従来は25インスタンスだったのが50インスタンスに。管理も容易になり容量面でのメリットも。
Server Coreへのインストールをサポート • GUIが不要なServer Coreでは必要な修正プログラムが50%~60%抑えられるため再起動の回数も少なくなる。
データベース エンジンの機能強化 • カラム ストア インデックスによる大幅な性能向上 • BI系関数の追加 • T-SQLの強化
開発生産性の向上 • SQL Server Data Tools による開発生産性向上
DWH(データ ウェアハウス)関連の機能強化 • DQS(Data Quality Services)による容易なデータ品質の向上、Power View による容易なデータ分析レポートの作成
SQL Server、Hyper-VでのSMB接続サポート • SQL Server 2012からSMB接続(共有フォルダー)への配置が可能となりました。 • 後述しますがSMBはバージョン改定により性能向上が図られておりWindows Server 2012のSMB3.0で飛躍的に性能が向上しました。そしてWindows Server2012でのHyper-Vではライブマイグレーションでも使用できるようになりました。そうしたタイミングもあってSQL ServerでもSMB接続への配置が可能になったものと思われます。
SQLServer2012 で使用するSMBのバージョンによる違い
SMB/CIFSについて • Server Message Block (SMB) とはWindowsファイル共有として知られるプロトコルでファイル共有、プリンタ共有、RPCなどに使用されるプロトコルです。 • 単体では認証付きのリソースアクセス用のプロトコルとなっておりNetBIOSや"Network Neighborhood"プロトコルといった周辺機能とともに利用されています。
SMBの歴史 • もともとはIBMの方が設計したファイルアクセスをネットワーク上に対応させる機能をマイクロソフトが機能追加してLan Manager(ドメイン機能やADの前身?)に組み込まれた機能です。その • 後Windows for WorkgroupやWindows NTなどWindowsの版を追うごとに機能追加をされながら現在も進化を続ける(Windows Server 2012ではSMB3.0)プロトコルです。
大まかな機能 • 名前解決に関する機能(NetBIOS over TCP/IP) • (RFC 1001、RFC 1002等参照) • リソースアクセスに関する機能(SMB) • リソース照会に関する機能(Browser、Network Neighborhood)
一般的な通信の流れ • NetBIOSに参加するマシンはネットワーク参加時に自身のNetBIOSマシン名をブロードキャストします。 • ネットワーク内にはマシンの一覧を管理するBrowserサービスを実行するマシンが存在しておりクライアントの一覧を管理しています。 • クライアントはシャットダウンなどネットワークを離れる際にマシンの一覧からの破棄をリクエストしますが様々な要因により完全な管理は出来ないため定期的な確認によって自律的にふるまうように機能します。 • Browserサービスはあくまで一覧を管理するのみで名前解決の方法は別途NBNS(NetBIOS Name Service)によって行われます。
NBNS(NetBIOS Name Service) • SMBで対象となるコンピュータにアクセスするためにはNetBIOSの機能を使って名前解決を行います。NetBIOSでの名前解決方法ですがネットワーク内のマシンに対してブロードキャストで問い合わせを行います。受け取ったNetBIOSの参加PCは自分宛の問い合わせであった場合は応答することで名前解決が行われます。 • ブロードキャストを用いる関係上サブネットをまたがるPCの名前解決はできないこと、ブロードキャストを用いることからネットワーク帯域を圧迫するといった問題があるものの容易に利用できるため今も一般的に利用されています。
ブロードキャストでのイメージ おれじゃない Server2はいるかーい? 遅いのと通信量が多く帯域を圧迫する おれです!Server2です おれも違う !! おれじゃない
WINS(Windows Internet Name Service) • 前述であげたようにブロードキャストでの名前解決にはサブネットをまたがった名前解決やネットワーク帯域の問題があったためNetBIOS over TCP/IPでの名前解決用の仕組みとしてWINSが生まれました。 • WINSは名前解決のサービスを提供するサーバでWINSのある環境ではクライアントとサーバがpeer to peerで通信することで名前解決を行います。
ActiveDirectoryの環境では • AD環境ではDDNSと統合されておりDNSを使用した名前解決によってIPを取得します。 • また、このころ導入されたDirect Hosting SMBという単一のポート待ち受け機能によりNetBIOSに依存しないSMBの利用が可能となりました。 • これらの機能追加されたSMB機能はCIFS(Common Internet File System)としてドキュメント公開されました。 • またlmhostsファイルというテキストファイルに記載されたNetBIOS名とIPのリストも使用されます。
余談~SMB関連のポートについて~ • DNS:53 • NBNS(NetBIOS Name Service):137 • Browser Service:138 • NBSS(NetBIOS Session Service):139 • Direct Hosting SMB:445
リソースのアクセス • 通信の対象となるIPが判明した後はNBSSもしくはDirect Hosting SMBによる通信を開始してセッションを確立させるところから始まります。 • その後ネゴシエーションと呼ばれるサーバー、クライアントの機能レベルのすり合わせが行われどういった認証を行うかなどが決定されます。その際の機能レベルのことをSMBの用語でダイアレクト(方言)といいますが歴史の長いSMBの相互接続性において重要な機能となっています。
認証について • リソースアクセスにおいて認証が行われるのですがPCの環境によっても左右されるので併せて紹介します。 • 簡易ファイル共有 • XPHomeなどで有効にできる簡易ファイル共有ですが簡易ファイル共有において認証はすべてGuestアカウントとして行われます。 • 詳細なファイル共有のリソースレベル認証 • 簡易ファイル共有でない場合は共有させるポイントごとにアクセス制限をかけることができます。最終的にアクセスするファイルがFATではなくNTFS等の認証機構のあるファイルシステムであった場合はさらにACLに従ってアクセス制限がかかります。
ブラウザー機能 • ここまでがファイルを開く部分のお話になります。 • (\\サーバー名\<ファイル名>としてファイルを開いたイメージ) • ここからはもうひとつの重要な機能であるブラウザー機能について説明します。 • NBNS、NBSSによる機能ですがリソースを使うための機能になります。対してブラウザー機能ですが使用できるリソースを見せるための機能になります。
接続の流れ • NetBIOSにてマスターブラウザーがコンピューター(プリンター等含む)の一覧を保持しており定期的にブロードキャストで存在を知らせてきます。クライアントはマスタブラウザに対してコンピューターの一覧を照会します。(XPでネットワーク共有を開いた状態) • Windowsであればエクスプローラーから対象となるコンピューターを選択することで対象となるサーバーのIPC$という特殊な共有ポイントへの接続、認証が行われます。この時Windowsクライアントはログインに使用したアカウントでログインしようとします。(簡易フォルダ共有であったりSambaなど他のクライアントの実装ではこの限りではない) • こういった動作があるため見えないがアクセスできたり見えるのにアクセスできないといった事象が発生します。
そしてSMB2.0へ • 徐々に機能追加されていたSMBですがいくつかの不満は抱えつつ長期にわたり使用されていました。とくにVPNなど遅延のあるネットワークで使用した際の性能低下やワイアレスなど不安定なネットワークでの安定性の低さから改善が求められていました。 • (サードパーティからもCIFSアクセラレータやWANアクセラレータといった製品が出たりしていました) • そしてWindows VistaからSMB2.0として機能アップが図られました。(サーバーはWindows Server 2008から)
SMB2.0での改善点 • SMB2.0では肥大化していたSMBプロトコルの見直しが行われ100以上あったコマンドも19と激減しました。 • 複数コマンドをまとめることでサーバー、クライアント間のやり取りが激減。 • より大きなバッファによる性能向上。 • プロトコル定数値の見直しによる同時オープン数等の性能向上。 • 永続性ハンドルの導入によるネットワーク切断時の接続継続。 • シンボリックリンクサポート。ファイル、フォルダーの属性キャッシング等々の機能が追加されました。
向上するセキュリティ・低下する互換性 • SMB2.0によってプロトコルはシンプル(ファイルはUnicodeベースのみ、コマンドの数も減り対応クライアントはVista以降なので確認の工数も低減)になりセキュリティも向上したのですが対応しない古いクライアントとの互換性はやむを得ず低下することになりました。 • これからもセキュリティの観点から問題のある認証方式や機能はデフォルトで利用されなくなるのでこの傾向は続いていくものと思われます。
よくある現象として • 古いNASとの認証が通らない • NTLMv2が用いられるようになったため。設定で制限を緩和することで接続は可能。(非推奨) • 対象となるPCにつながらない • guestアカウントが停止されているため、ブラウザサービスのguestアカウントへの応答が停止されているため。guestアカウントの有効化やブラウザ機能のセキュリティレベルを落とすことで接続は可能。(非推奨) • もしくはnet useコマンドで対象PCのIPC$への接続を明示的に指定することで回避する、guestでつなぎに行くクライアント(Sambaを使用したものなど)であれば同名の古いPCで接続を登録しておくといった回避策も状況によっては有効。 • 速度が遅い • ネットワークチューニング機能による通信バッファサイズによってバッファサイズを増やす、通信できずタイムアウト、サイズを戻すといった状況に陥っているため。チューニング機能を停止することで回避可能。
SMB2.1によるさらなる機能向上 • クライアント oplockリース モデル • 大きい MTU のサポート • クライアント コンピューターのエネルギー効率の向上
クライアント oplockリース モデル • SMB で広範に使用されている便宜的ロック (oplock) を使用して、クライアント コンピューターでデータおよびファイルのハンドルをキャッシュできます。便宜的ロックは NTFS のファイル セマンティクスに何年も前から存在し、主にネットワーク経由でのファイル アクセスでのメリットのために使用されていました。便宜的ロックを使用すると、プロセスは可能であればファイルをロックできます。 • 今までもあったのですがハンドル毎のロック保持だったためアプリケーションによる複数回オープンや別アプリからのオープンにより容易に失効して効果的に利用されていませんでした。SMB2.1の新しいモデルではクライアント毎となりキャッシュ機会が増えることで性能向上に寄与します。
大きい MTU のサポート • データ転送の単位が64kから1MBに増えることで10GbEthernetなどの環境でより効率的に帯域を使用できるようになりました。(デフォルトではオフ)
クライアント コンピューターのエネルギー効率の向上 • 今まではSMBでファイルをオープンしているときはスリープ電源状態に入れませんでした。SMB2.1からは多くのシナリオでスリープ電源状態へと入ることが可能になりました。 • 対応しているバージョンはWindows 7、Windows Server 2008 R2からとなっています。
SMB3.0(SMB2.2) • SMB 透過フェールオーバー • SMB スケールアウト • SMB マルチチャンネル • SMB ダイレクト • サーバー アプリケーションのパフォーマンス カウンター • パフォーマンスの最適化 • SMB 用 Windows PowerShell コマンドレット • SMB 暗号化 • SMB ディレクトリ リース
SMB 透過フェールオーバー • クラスター化されたファイル サーバーにあるノードのハードウェアやソフトウェアの保守作業を行うときに、そのファイル共有にデータを格納しているサーバー アプリケーションを中断する必要がありません。また、クラスター ノードでハードウェアまたはソフトウェアの障害が発生した場合に、SMB クライアントが別のクラスター ノードに透過的に再接続できます。このとき、そのファイル共有にデータを格納しているサーバー アプリケーションを中断する必要はありません。
SMB スケールアウト • クラスターの共有ボリューム (CSV) Version 2 を使って、ファイル サーバー クラスター内のすべてのノードから同時にデータ ファイルにアクセスして直接入出力できるファイル共有を作成できます。これにより、ネットワーク帯域幅を効率よく利用しながらファイル サーバー クライアントの負荷分散ができるため、サーバー アプリケーションのパフォーマンスを最適化できます。
SMB マルチチャンネル • SMB2.2 クライアントと SMB2.2 サーバーの間に複数のパスがある場合に、ネットワーク帯域幅を集約し、ネットワークのフォールト トレランスを高めることができます。これにより、サーバー アプリケーションは利用できるすべてのネットワーク帯域幅をフル活用すると共に、ネットワーク障害に対して高い回復力を維持することができます。
SMB ダイレクト • RDMA 機能を搭載し、遅延がきわめて小さく、CPU をほとんど使用せずに、最高速度で動作できるネットワーク アダプターが使用できます。Hyper-V や Microsoft SQL Server などのワークロードについては、この機能によってリモート ファイル サーバーをローカル ストレージのように利用することができます。
サーバー アプリケーションのパフォーマンス カウンター • SMB の新しいパフォーマンス カウンターでは、スループット、待ち時間、1 秒あたりの I/O (IOPS) に関する情報を共有ごとに詳細に得ることができ、データが格納されている SMB 2.2 ファイル共有のパフォーマンスを解析できます。このカウンターは、Hyper-V や SQL Server など、リモート環境のファイル共有にファイルを格納するサーバー アプリケーション向けに設計されています。
パフォーマンスの最適化 • SQL Server の OLTP など、サーバー アプリケーションで生じる I/O は、小規模なランダム読み取り/書き込みが一般的です。それに合わせて、SMB 2.2 クライアントおよび SMB 2.2 サーバーが最適化されました。加えて、大きな最大転送単位 (MTU) が既定で有効にされているため、SQL Server データ ウェアハウス、データベースのバックアップと復元、仮想ハード ディスクの展開とコピーなど、大規模なシーケンシャル転送のパフォーマンスが大幅に向上します。
SMB 用 Windows PowerShell コマンドレット • SMB 用 Windows PowerShell コマンドレットを使うと、管理者がコマンド ラインからエンド ツー エンドでファイル サーバーのファイル共有を管理できます。
SMB 暗号化 • SMB データをエンド ツー エンドで暗号化し、信頼できないネットワークで発生する傍受からデータを保護できます。新たに展開コストが発生することはなく、インターネット プロトコル セキュリティ (IPsec)、専用ハードウェア、WAN アクセラレーターも不要です。SMB 暗号化は共有ごとでも、ファイル サーバー全体でも構成できます。また、信頼できないネットワークをデータが通過するさまざまな場面で有効にできます。
SMB ディレクトリ リース • ブランチ オフィスのアプリケーションの応答時間を改善します。ディレクトリ リースを使うと、保存期間の長いディレクトリ キャッシュからメタデータを取得するため、クライアントからサーバーへのラウンドトリップが減少します。サーバーにあるディレクトリ情報に変更があるとクライアントに通知されるので、キャッシュの一貫性を維持できます。ホーム フォルダー (読み込み/書き込み可、共有なし) とパブリケーション (読み取り専用、共有あり) のどちらにも対応しています。
SMB ダイレクト • SMBダイレクトは随分と昔にInfinibandのために実装過程にあったものが一時キャンセルされていたものが復活したものだと思われます。InfinibandもWindows Server 2012の普及とともに広がっていくと思われるので低コストで使用できる日も近いと思われます。