1. 仮想化
    1. メリット
      1. コストの削減 スペースや電源など
    2. デメリット
      1. 性能の劣化
        1. ネットワークやストレージI/O
      2. 障害発生時の原因や問題を特定することが困難
      3. アプリケーションが仮想化環境で正常に動作するかどうか検証が必要がある
      4. 物理環境とは異なる運用管理者のスキル、ノウハウの蓄積が必要である
      5. 仮想化環境固有のセキュリティの問題
    3. 仮想化方式の種類
      1. 仮想化は主にソフトウェアによって提供される仕組み
      2. サーバを仮想化するためのソフトウェアを
        1. 仮想化ソフトウェア
          1. XenやKVMが一般的
        2. 仮想マシンモニタ(VMM:virtual Machine Monitor
      3. 仮想化ソフトウェアの実装方式3つに分類できる
        1. ホストOS型
          1. 物理的なハードウェア上にOSをインストールし、そのOS上で仮想化ソフトウェアと仮想マシンを動かす方式。物理マシン上で直接動作するOSをホストOS 仮想マシンにインストールされるOSをゲストOSという。
          2. 昔主流だったが今は使われてきていない
          3. VMware Workstation Microsoft Virtual PC VirtualBox
        2. ハイパーバイザー型
          1. ホストOSを必要としないタイプの仮想方式
          2. ハイパーバイザーというソフトウェアを物理ハードウェア上で直接動かしハイパーバイザー上で個々の仮想マシンを動かす。ハイパーバイザは直接ハードウェア上で動かすことから「ペアメタル型」とよばれることもある。(bare metal : むき出しの金属)
          3. ホストOSを介する処理オーバヘッドが存在しないため、ホストOS型よりもパフォーマンスが高いというメリットがある。
          4. 現在の主流
          5. ・VMwareESXi ・KVM/Xen/Citrix XenServer ・Microsoft Hyoer-V
        3. コンテナ型
          1. 最新の仮想化方式
          2. ホストOS型と同じように。物理マシンにインストールされているOS上で仮想環境(コンテナ)を動かすため、ホストOS型の一種として分類されてることもありますが、コンテナにはゲストOSや仮想ハードウェアは含まれないことがホストOS型のとの一番大きな相違点になる。
          3. コンテナのことを「パーティショニング」ということもありそうだ。 パーティショニングの元となったUNIXやLinuxno技術としてファイルシステムの見える範囲をほかのプロセスから分離するためののchrootやcdfroups、jail(FreeBSD)などがある。
          4. めも:コンテナ(container)アプリケーションの実行環境のみを閉じ込める軽量の「容器」という意味でつかわれる。コンテナ型仮想化ではOSや仮想ハードウェアなどをコンテナに含まないため「仮想マシン」という用語は使われない。
          5. 試験対策
          6. コンテナ型の仮想化では仮想環境にゲストOSは含まれず。 複数の仮想環境で1つのホストOS(Linuxカーネル)を共有する。 したがって、同一ホスト上の複数コンテナで異なるOSを使用することはできません。 ただし、ホストOSと同一のLINUXカーネルであれば、コンテナで異なるLinux ディストリビューションを使用する事ができるる。
    4. 仮想マシンの移行方法 (マイグレーション)
      1. P2V
        1. P2Vとは(Physical to Virtual )の略であり 物理サーバから仮想サーバへのマイグレーションとなる。 既存の物理サーバの老朽化やサポート切れに伴って実施されることが多い。 物理サーバの台数を減らすことによってさまざまなコストや運用管理の手間を削減することが可能。
      2. V2V
        1. V2Vとは(virtual to Virtual の略である 仮想化プラットフォーム間におかえる仮想マシンのマイグレーションとなる、VSVでは物理サーバを停止させず仮想サーバを移行する「ライブマイグレーション」という機能を利用することもできます。
          1. 試験対策:仮想マシンにおいてデータを共有する方法として NFS(Network File System)やFTPを使用するのが一般的。
    5. 準仮想化と完全仮想化
      1. 準仮想化
      2. ハードウェアエミュレーションのしくみにより、マシンアーキテクチャがことなったとしてもOSを実行することができるようになる、。
    6. CPUと特権モード
  2. Xen ハイパーバイザー型
    1. Xenとは?
      1. KVMと並んで標準的に利用されている、ハイパーバイザー型仮想化テクノロジーの1つ バージョン3.0以降は64bitやSMPにも対応しています。
    2. 基本的なアーキテクチャ
      1. 物理ハードウェア上にハイパーバイザーをインストール
      2. ハイパーバイザー上で管理用OSを実行する仮想マシンとゲストOSを実行する仮想マシンを動かす 管理用OSを実行するドメインを「Domain-0(dom0)」ゲストOSを実行するドメインを「Domain-U(domU)」といいます。
    3. Xenの設定ファイル
      1. Domain-Uの設定ファイルのパス /etc/xen/ドメインUの名前
      2. 完全仮想化のXenゲストドメインを動かすには、設定ファイル内でbuilder=‘hvm‘を指定します。
      3. Domain-Uの自動起動設定
        1. Xenのデフォルトの動作ではホストOSを再起動するとDomain-Uは停止され自動的に再起動しません。Xenの設定ファイル/etx/xen/autoディレクトリに移動しそのシンボリックリンクを/etc/xenディレクトリ下に作成。xendomainsサービスが自動起動するように設定する。
    4. XenStore
      1. KVS:Key Value Store であり Domain-0のxenstoredというデーモンによって管理されている。
      2. xenstore-ls
        1. XenStoreに格納されているキーと値の情報hを一覧表示するためのコマンド
    5. コマンド
      1. xl
        1. xl <必須サブコマンド> 「引数」
        2. 仮想化マシンを無効化するにはshutdown もしくは destory
        3. block-list ゲストドメインにアタッチされているブロックデバイスを表示
        4. xl -list 仮想マシンの一覧
      2. xentop
        1. topコマンドのxen版
      3. xe
  3. KVM ハイパーバイザー型
    1. KVMとは?
      1. Kernel-based Vurtual Machineの略 Linuxカーネルに標準で組み込まれている仮想マシンソフトウェア。Linuxカーネル自体がハイパーバイザとして機能。
    2. KVMを動作させるには
      1. KVMは、完全仮想化をサポートしているため、ゲストOSとしてLinux だけではなくWindowsを利用することも可能です。KVMはCPUの仮想化支援機能を前提に設計・開発されているため、利用にはIntelVTもしくはAMD-VのCPU仮想化支援機能が必要となる。
      2. KVMはハイパーバイザー機能のみを提供するシンプルなモジュールとして開発されており、利用に際しては、ハードウェアデバイスのエミュレータ(QEMU)が必要となります。 1つの仮想マシンに対して1つのQEMUプロセスが対応する。 /dev/kvmというKVMのデバイスファイルを介してKVM本体とやり取りする。
        1. メモリやディスクI/Oに関してはQEMUを使用 CPUについてはCPU仮想化支援機能を使用
    3. ・KVMはLinuxカーネルの一部としてくみこまれているためカーネルのデバイスドライバをそのまま利用することができます。 ・KVMはSMPによる複数の仮想CPUをサポートしている。 ・KVMの設定ファイルは/etc/kvmディレクトリ下に配置します。
    4. KVMの仮想化ホストをセットアップするためには必須のコンポーネント
      1. kvm.ko qemu libvirt bridge-utils
    5. 設定ファイル
      1. /etc/kvm
      2. /etc/libvirt 自分の構築環境だとこっちにあった
    6. 試験対策
      1. KVMはLinux カーネルの一部として組み込まれているためカーネルのデバイスドライバをそのまま利用することができます。
      2. KVMは、SMPによる複数の仮想CPUをサポートしています。
      3. KVMの設定ファイルは/etc/kvmディレクトリ下に配置します。
      4. KVMを利用するためには、KVMカーネルモジュールkvm.koが必要です。
  4. OpenVZ コンテナ型
    1. OpenVZはLinuxカーネルをベースとしたオープンンソースのコンテナ型仮想化ソフトウェア。 Red HatEnterprise Linux 及びその互換OSを主な
    2. Linuxカーネルをコンピューティングインスタンス管で共有する仕組みであるためWindowsを動かすことはできない。
    3. LXC
      1. Linux Containerの略で。Linux用コンテナ型仮想化技術のこと
      2. テンプレートファイルを使用してコンテナを作成します、
      3. LXCでは標準で、いくつかの代表的なテンプレートが /usr/share/lxc/templatesディレクトリにインストールされています。
  5. 1-4.その他の仮想化テクノロジー
    1. Virtualbox
      1. oracle社が開発提供している仮想化ソフトウェア。 一般的なほとんどのOSをサポートしている。
      2. virtualboxはパフォーマンス向上を目的とした特別なデバイスドライバを提供します。
      3. GUI管理も可能
      4. Vagrant
        1. ●Vagrant  Vagrantは、仮想マシンの作成や管理共有を簡単にするための便利な機能を提供するオープンソースのツール。Vagrantを使用することで、同一の仮想環境をいつでも簡単に再構築できるようになる。
        2. コマンド
          1. vagrant <サブコマンド> destroy 仮想マシンの破棄 halt    仮想マシンの停止 ssh  仮想マシンにSSHでログイン status 仮想マシンの状態を確認 suspend  仮想マシンの一時停止 up  仮想マシンの起動
          2. vagrantfileとういう環境構築用の設定ファイルを作成しておくことによって、vagrant up コマンド1つで同一仮想環境の作業を自動化できる。
      5. Vagrantfile
        1. Vagrantfileという環境構築用の設定ファイルを作成し、仮想環境のゲストOSの起動時に特定のコマンドやスクリプトを自動実行することが可能で、この機能を「プロビジョンにング機能」と呼ばれている。
      6. Packer
        1. オープンソースのツール Vagrantで作成された仮想マシンイメージのパッケージ(box)からさまざまなカオス環境や クラウド環境に対応した個別の仮想マシンイメージを簡単に作成する機能を提供。
      7. Docker
        1. Dockerは現在もっとも普及しているコンテナ型仮想化ソフトウェア・ オープンソースのツールとして提供されています、
      8. ツールがある
        1. DevOps
        2. Vagrant
        3. ツールを連携させて利用するのが一般的。 自動化にはVagrantを連携したChefやPuppetなどを使用する。
  6. 1-5.Libvirtおよび関連ツール
    1. libvirtとは?
      1. libvirtは元々Linuxで動くさまざまな仮想化環境を操作・管理するための共通のインタフェース(抽象化ライブラリ)となるツールキットが開発されている。仮想マシンの管理だけではなく。仮想マシンが利用する各種リソースの管理機能も提供。
    2. libvirtの基本アーキテクチャ
      1. libvirt内部ではlibvirtdというシンプルなデーモンがXenやKVM、QEMUなど、さまざまな仮想環境を操作管理する。libvirtdを扱うためのフロントエンドツールが提供されている。 libvirt設定ファイルはデフォルトで/etc/libvirtディレクトリにある、「libvirtd.conf」
    3. libvirtはさまざまな仮想化製品んい対する、統合された共通のインタフェースを提供する。特定の仮想化製品んい依存するツールではない。
    4. 大事
      1. libvirtを使用する場合には、デーモン「libvirtd」をあらかじめ起動しておく必要がある。 libvirtdの設定ファイルは/etc/libvirt/libvirtd.confです。
      2. サブトピック 3
      3. libvirtを使用した仮想マシンの作成するには以下のようないくつかのツールを利用することができる。 cirt-clone イメージ複製ツール virt-image XMLファイルから仮想マシンを作成するためのツール virt-install メディアから新しい仮想マシンを作成するためのツール virt-manager GUI管理ツール virt-viewerグラフィカルコンソール
    5. libvirtのネットワーキング
      1. libvirtdが起動するとdefaultという名前のデフォルトのNATブリッジが作成されます。仮想マシンはこのブリッジを通じ、外部ネットワークに接続することができる。
    6. virsh
      1. libvirtが提供する標準のコマンドラインツール。 一般的な操作だけでなくシェルスクリプトなども利用することができる。 virsh <サブコマンド> [引数]
  7. 2-1.高可用の概念と理論
    1. 高可用クラスタとは
      1. クラスタを設計・構築するにはクラスタリングという。 クラスタを高背うする個々のサーバマシンはクラスタノードやクラスタメンバと呼ばれる
    2. サーバクラスタには目的に応じタイプに分類できる
      1. ・高可用クラスタ 高可用クラスタ(H/Aクラスタ:HighAvailability Cluseter)は可用性を高めるためのクラスタであり、システムに冗長性を持たせSPOFをなくすことで耐障害性を向上させるこtが主要な目的、 SPOFとは:single point of failure (単一障害点)その部分に障害が発生した場合にシステム全体の停止を引き起こす構成要素。
        1. 可用性指標 高可用クラスタではどれだけ可用性を高められるかが重要になっています。 可用性の高さを表す定量的な値として以下がある。 □MTBF(Mean Time Between Failures)平均間隔時間とも呼ばれシステムが連続して稼働している時間の平均 MTBF= 総稼働時間 / 総故障件数 MTBFの逆数を故障率といい故障が起こる割合を表す。 □MTTR(Mean Time To Repair) 平均復旧時間とも呼ばれシステムが障害などにより、停止した際にどれだけ早く復旧できるかを以下の式で産出する、この数値が小さいほど障害からの復旧が早いことになる。 MTTR = 総復旧時間 / 総故障件数
      2. ・負荷分散区クラスタ(ロードバランスクラスタ)
        1. システムに対する負荷(LOAD)を分散させることを目的としたサーバクラスタ。 ロードバランサ(負荷分散装置)あるいはDirectorという。
        2. ロードバランさを経由せずに直接レスポンスを返すこともできる、 この仕組みはDSRと呼ばれている。
      3. フェイルオーバクラスタ
        1. フェイルオーバークラスタは、あるサービスを提供しているサーバに障害を発生した場合に、別のサーバでサービスを起動し、継続してサービスを提供できるようにするためのサーバクラスタです。このような仕組みをフェイルオーバという。
          1. アクティブ/パッシブ 待機ノードは停止(電源OFF)しておきフェールオーバじに起動する方式。 アクティブ/アクティブ 待機ノードはあらかじめ起動(電源ON)しておくためフェイルp-ば時に速やかにさーんびすを引き継ぐことができます。 この構成ではさらに待機ノードのサービスを稼働させないと方式とサービスを常時稼働させておく2タイプに分類されます。 また通常は「ハートビート」と呼ばれるノード間通信よってお互いの動作状況を監視する。
      4. ・ストレージクラスタ ・ハイパフォーマンスクラスタ
        1. シェアード・ディスクとシェアード・ナッシング
          1. クラスタを構成する複数ノードで共通のデータを扱う場合、どのようにしてデータの整合性を図るか」とうy課題があり、その課題に対する解決策として一般的にン次の2つの方式が採用されています。 ・シェアード・ディスク シェアード・ディスクは共有ディスク方式とも呼ばれ複数ノード間で1つのディスクを共有する方式です。 ・シェアード・ナッシング 専用ディスク方式とも呼ばれ共有ディスクを塚技にそれぞれのノードが専用ディスク方式とも呼ばれ共有ディスクを塚技にそれぞれのノードが専用のディスクを使用する方式。
    3. クラスタアーキテクチャの設計
      1. スプリットブレイン(splitBran)
        1. スプリットブレインはネットワークの不具合などが原因でノード間のハートビート通信が途絶えた場合に複数ノードがマスターになってしまったり、サービスの二十起動がなどがしょうじてしまう現象です。スプリットブレインが発生するとクラスタ内でさまざまな問題が発生します。解くに共有ディスクに対して複数のノードやノードグループが同時にマスターとして書き込みを行うような場合にはファイルしてステムの破損やデータの所うっしつ整合性の破綻などの深刻な問題を引き起こします。
      2. フェンシング(Fencing)
        1. フェンシングとは囲うという意味。障害ノードをクラスタから切断する仕組み。 フェンシングの機能はクラスタ基盤が提供する、「フェンスデーモン」と呼ばれるサービスによって実行されます。
          1. サブトピック 1