本稿ではLinux認定試験のLPICで必要とされる知識のうち見直すべきポイントをまとめます。
完全仮想化・準仮想化
仮想化方式のType1とType2の違いを説明せよ
- Type1(ハイパーバイザ型):ホストOSを必要としない。パフォーマンスが高い。XenやHyper-Vなど。
- Type2(ホスト型):ホストOSが必要。VMwareやVirtualBoxなど。
準仮想化と完全仮想化を仮想化方式に対して位置付けよ
ハイパーバイザ型のうちゲストOSを改変してパフォーマンスを高めるものを準仮想化,ゲストOSを改変せずに忠実に再現するものを完全仮想化とよぶ
Xenは準仮想化と完全仮想化のどちらを実現するか
どちらも
KVMは準仮想化と完全仮想化のどちらを実現するか
主に完全仮想化
Intel-VTやAMD-Vは何を行うものか
CPUの仮想化支援機能
KVMは仮想化支援機能を前提として設計されています。
IngtelとAMDの判別方法を述べよ
egrep '(vmx|svm)' /proc/cpuinfoを実行して出現する文字列のCPUフラグから判別する。
CPUの情報が羅列されますが,Intelの場合はvmxがヒットして,AMDの場合はsvmがヒットします。
KVMとQEMUの関係を説明せよ
KVMはカーネルの一部として動作する仮想化モジュールで,QEMUはKVM上で動作するハードウェアのエミュレータ。1つの仮想マシンに対して1つのQEMUプロセスが対応する。KVMで作成された仮想マシンからの命令は物理CPUには飛ばずQEMUがエミュレートするハードウェアに飛ぶ。ただし,仮想化支援機能が有効化されている場合は,仮想CPU命令が実際のCPU命令に動的に変換されて物理CPUを利用することもある。
QEMUと仮想化支援機能の関係を説明せよ
- QEMU:メモリやディスクO/Oについてハードウェアをエミュレートする
- 仮想化支援機能:QEMUがCPUをカバーしてもよいが,パフォーマンス向上のためCPUはホストOSが仮想化支援機能でカバーする
ISOファイルとイメージファイルの違いをざっくり説明せよ
- ISOファイル:OSのインストーラ
- イメージファイル:仮想マシンの状態
libvirtとは
仮想マシンの作成・管理・監視・ネットワーク/ストレージ・管理などを行うためのインターフェース
libvirtとvirshの関係性を説明せよ
libvirtのCLIツールがvirsh
virshの設定ファイル
/etc/libvirt/qemu
SMPとは
Symmetric Multi-Processingの略称で,複数のCPUを使用した並列処理において全てのCPUに均一に処理を割り当てる方式のこと
KVMでは最大で16の仮想CPIを扱えます。
Xenの特徴を説明せよ
ハイパーバイザを軽量化し,管理用OSを実行する仮想マシンに仮想デバイス(バックエンド)やデバイスドライバをインストールする方式をとっている。管理用仮想マシンによる集中管理のようなイメージ。
XenのDomainとは
仮想マシンの実行単位
XenのDomainを分類せよ
- Domain-0:管理用ドメイン
- Domain-U:ゲストドメイン
HVMドメインとは
Hardware Virtual Machineの略称で,CPU仮想支援機能を利用した完全仮想化ドメインのことを指す
完全仮想化を指定するための設定
/etc/xen/domain1.cfgにbuilder='hvm'を記述する
準仮想化を指定するための設定
/etc/xen/domain1.cfgなどにbuilder='generic'を記述する(デフォルト)
Domain-1を自動起動するための設定
ln -s /etc/xen/domain1 /etc/xen/auto/domain1
autoディレクトリ上にシンボリックリンクを作成しています。
Domain-0に割り当てるメモリを512Mにするための設定
GRUB2の場合は/etc/default/grubにGRUB_CMDLINE_XEN_DEFAULT="dom0_mem=512M"を記述する
ブートローダの設定ファイルに定義するという意味です。
Xenで新しい仮想ブロックデバイスを作成するコマンド
xl block-attach
block-createではない点に注意です。
XAPIを説明する際のキーワード
- XenServerの管理ツールとインタフェース
- Xenツールスタックの拡張機能(ツールチェーン)
xeコマンドでdomain1を起動する方法
xe vm-start vm=domain1
TAPとTUNを説明せよ
- TAP:L2の仮想化デバイス(Terminal Access Point)
- TUN:L3の仮想化デバイス(TUNnel)
TAPを作成するコマンド
tunctl -p -t tap1(今ではip tuntapが利用される)
TUNを作成するコマンド
tunctl -n -t tun1(今ではip tuntapが利用される)
QEMUの起動パラメータを指定するオプション
-boot
vagrantを使って仮想マシンを停止するコマンド
vagrant halt
一時停止はsuspendです。
VirtualBoxを開発した企業
Oracle
CPUアフィニティの設定方法
virsh vcpupin domain1 1 4(domain1の仮想CPU1と物理CPU4の関連付け)
KVMの管理ツール
oVirt
Linuxベースの仮想化テクノロジーに対する包括的な管理インフラストラクチャ
oVirt
libvirtはKVMを管理するか
管理する
virt-imgというコマンドは存在するか
存在しない。virt-imageであれば存在する。
virt-viewerとvirt-managerの違い
- virt-viewer:コンソールをグラフィカルに見るだけ
- virt-manager:VMの作成や管理を行う
SASLとは
Simple Authentication and Security Layerの略称で,認証を標準化するフレームワークのことを指す。libvirtが対応している認証プロトコルの一つ(SSH/SASL/Kerberos)
XAPIの主要デーモンとCLIコマンド名を答えよ
- 主要デーモン:xapi
- CLIコマンド名:xe
xlの主要デーモンとCLIコマンド名を答えよ
- 主要デーモン:xenstored・xenconsoled
- CLIコマンド名:xl
ライブマイグレーションを行うコマンド
xl migrate
--liveがつくのはxmという旧コマンドです。xlはデフォルトでライブマイグレーション。
Domain-Uは完全仮想化と準仮想化のどちらで構築するか
どちらの方式も利用できる
/etc/xen/xl.confでbootに指定される-c/-d/-nオプションを説明せよ
- -c:ハードディスク
- -d:CD-ROM
- -n:ネットワーク(PXEブート)
xlコマンドで停止中の仮想マシンを再開させるコマンドはunpauseとresumeのどちらか
unpause
resumeを使うのはvagrantやvirshです。
xlコマンドで停止中の仮想マシンを終了させるコマンドはhaltとshutdownのどちらか
shutdown
haltを使うのはvagrantです。virshはshutdownを利用します。
準仮想化ゲストの仮想CDROMを入れ替えるコマンド
block-detachとblock-attach
cd-ejectとcd-insertは完全仮想化で利用されるコマンドです。
xlで起動時にコンソール接続するサブコマンド
xl create -c
--consoleというオプションは存在しないため注意してください。
KVMとXenの違いとは
- KVM:Linuxカーネルに組み込まれた仮想化機能で,主に完全仮想化をサポートする
- Xen:独立したハイパーバイザーで,完全仮想化と準仮想化の両方をサポートする
XenとQEMUは連携するか
完全仮想化(HVM)では連携する。QEMUは名前の通りレミュレータなので完全仮想化のようにエミュレーションが必要になるユースケースで連携すると理解する。
KVM向けに拡張されたQEMUのコマンドユーティリティを述べよ
- Red Hat系:qemu-kvm
- Debian系:kvm
いずれもディスクイメージの作成はqemu-imgを利用します。Red Hatは2つの単語に分かれているイメージからqemu-kvmであると覚えてしまいましょう。
virshで仮想マシンを停止・再開するコマンド
suspend・resume
virshで仮想マシンを開始するコマンド
start
bootではない点に注意してください。
virshで仮想マシンを再起動するコマンド
reboot
Intel CPUアーキテクチャを使用するために必要なカーネルモジュールの名前
kvm-intel.ko
intel-kvm.koとしないように注意してください。
Proxmoxとは
KVMとLXCを利用して複数の仮想環境を効率的に管理できるWebインタフェース
systemd-machinedとは
systemdの一部でコンテナや仮想マシンを管理するためのデーモン。machinectlを利用する。
Xenノードとは
物理サーバのこと
/etc/xen/xl.confと/etc/xen/xl.cfgの違い
- /etc/xen/xl.conf:グローバルな設定ファイル
- /etc/xen/xl.cfg:ドメイン個別の設定ファイル
brctlとtunctlの違い
いずれもQEMUが仮想マシンにネットワーク接続を提供するためのツール
- brctl:ブリッジインターフェースを管理。現在ではip linkが利用される。
- tunctl:仮想ネットワークインターフェースを管理。現在ではip tuntapが利用される。
virtlogdとvirtlockdを説明せよ
- virtlogd:仮想マシンのログを集中管理するためのデーモン
- virtlockd:仮想マシンのファイルロックを担当するデーモン
VMDKとは
VMwareで使用される仮想ディスクイメージのファイルフォーマット
libguestfishとは
ディスクイメージを操作・管理するためのライブラリ。guestfishで操ることができる。
virt-sysprepとは
仮想マシンのディスクイメージを一般化して再利用可能な状態にするためのツール
prepはprepareの略称でしょう。
ダイレクトLinuxブーティングとは
ブートローダを迂回して直接Linuxカーネルと初期RAMディスクをロードする機能
KVM仮想マシン内でダイレクトLinuxブーティングを利用するためのLinuxカーネルに対するオプション
-append
KVMのドライブをアタッチする際にrcyncは使えるか
使えない。rsyncはディレクトリをコピーするためのコマンド。
qemuモニタでスナップショットから仮想マシンを復元するためのコマンド
loadvm
仮想マシンにアタッチされたCD-ROMのイメージファイルを変更するvirshのサブコマンド
change-media
KVMのIDEとは
Integrated Drive Electronicsの略称で,仮想マシンに接続される仮想ディスクやCD-ROMのインターフェースのことを指す
KVMで1つ目のIDEに接続されたCD-ROMを取り出すためのコマンド
eject ide 1 -cd0
xl listとは何を表示するコマンドか
Xen ハイパーバイザで動作している仮想マシン(ドメイン)の一覧
xl listのpは何を表すか
paused
xl listのsは何を表すか
shutdown
xl listのcは何を表すか
crashed
xl listのdは何を表すか
dying
「XenStoreはXenに関する実行時情報を格納する」は正しい説明か
正しい
virsh-imgとvirsh-imageはどちらが正しいコマンドか
virsh-image
利用可能な仮想マシン一覧を表示するにはvirsh listとvirsh showのどちらが正しいコマンドか
virsh list
vcpupinの引数では仮想CPUと物理CPUはどちらを先に指定するか
仮想CPU。対象のゲスト→仮想CPU→物理CPUの順。
KVMパラメータで-drive file=sample.imgと同様のオプションを挙げよ
-hda sample.img
-hdbでもOKです。=が入らない点に注意してください。
「最近の全てのx86ベースのマシンではハードウェアベースの仮想化に対応している」は正しいか
正しい
Xenゲストドメインにアタッチされているブロックデバイスを表示するxlのサブコマンド
block-list
KVMで仮想化ホストをセットアップする際に必要ないのはlibvirtとvirshのどちらか
virsh
「virshは仮想マシンの運用を担う」と理解しましょう。
virshでsnapshotから復元するコマンド
virsh snapshot-revert
virshのnwfilterコマンドを列挙せよ
- virsh nwfilter-dumpxml <フィルター名>
- virsh nwfilter-list
- virsh nwfilter-define <ファイル名>
- virsh nwfilter-undefine <フィルター名>
- virsh nwfilter-set-uuid <フィルター名>
- virsh nwfilter-apply <フィルター名> <ドメイン名>
guestmountとは
qemuやlibvirtで利用される仮想マシンのディスクイメージをマウントすることにより,仮想マシンのディスク内容をホストマシンから直接見ることができるようになるツール
コンテナ仮想化
namespaceを作成するコマンド
unshare
namespaceに入るコマンド
nsenter
namespaceへのシンボリックリンクが格納されている場所
/proc/[pid]/ns
コンテナを作成するLXCのコマンド
lxc-create
upではない点に注意です。
コンテナ内で実行可能なシステムコールをフィルタリングする機能
seccomp
OCIとは
Open Container Initiativeの略称で,コンテナの標準仕様を策定する組織やその営みを指す
runcとは
OCI準拠のコンテナランタイム
dockerは内部でruncを実行しています。
Kubernetesのコンテナランタイムを列挙せよ
- CRI-O:軽量だがDockerと互換性なし
- containerd:汎用でDockerと互換性あり
CRI-OはContainer Runtime Interface for OCIの略称です。
CRIとは
Kubernetes Container Runtime Interfaceの略称で,Kubernetesがコンテナランタイムと通信するための標準 APIを指す。DockerなしでKubernetesを動作させるために導入された。
kubeletとは
各ノード上でコンテナ化されたアプリケーションの実行と管理を担当するコンポーネント
Podとは
Kubernetesの最小単位で,1つ以上のコンテナが動作する単位
Nodeとは
Kubernetesクラスタの実行単位で,物理マシンまたは仮想マシンのことを指す
Clusterとは
複数のNodeをまとめた集合で,Kubernetesはクラスタ全体の管理を行う
podmanとは
コンテナ管理ツール
dockerはデーモン型ですがpodmanはデーモンレス型で,かつrootを必要としません。
buildahとは
コンテナイメージのビルドツール
skopeoとは
コンテナイメージの操作・管理ツール
Linuxカーネルがcgroupの管理に使用する仮想ファイルシステムのマウントポイント
/sys/fs/cgroup
lxcの管理ツール
lxd
Dockerデーモンがコンテナ・イメージ・ボリューム・ネットワーク設定などを保存するディレクトリ
/var/lib/docker/
Docker ComposeとDocker Swarmの違い
- Docker Compose:開発環境向けで,簡易的なコンテナ管理を実現
- Docker Swarm:本番環境向けで,複数ホストにまたがるコンテナオーケストレーションを実現
Kubernetesリソースの定義や管理を簡素化するためのツール
Helm
Kubernetesの管理プラットフォーム
Rancher
HelmはKubernetes上のアプリケーション管理ツールであり,Rancherはクラスタ管理ツールです。
Red Hatが提供するエンタープライズ向けのKubernetesディストリビューション
OpenShift
データセンターやマルチクラウドにおけるインフラ全体を管理するプラットフォーム
Mesosphere DC/OS
「Linux VServerはコンテナ型仮想化ソフトウェアである」は正しいか
正しい
「vagrantとdockerはデフォルトでコンテナを扱う」は正しいか
正しくない。Vagrantは仮想マシンがデフォルト。
unshareコマンドのオプションを列挙せよ
- -m --mount(マウント名前空間を分離)
- -u --uts(ホスト名・ドメイン名を分離)
- -i --ipc(プロセス間通信名前空間を分離)
- -n --net(ネットワーク名前空間を分離)
- -p --pid(プロセスID名前空間を分離)
- -U --user(ユーザ名前空間を分離)
- -C --cgroup(cgroup名前空間を分離)
- -f --fork(指定した名前空間内で新しいプロセスをフォーク)
VMのデプロイとプロビジョニング
Horizonとは何か
OSSのクラウドコンピューティングサービスであるOpenStackのWebインタフェース
OpenStackはローカルで動かせる簡易版AWSのイメージです。
AWSのEC2に相当するOpenStackのコンポーネントは何か
- Nova:仮想インスタンスの制御や物理マシンのプロビジョニング
- Glance:仮想マシンのイメージ管理
AWSのEBSに相当するOpenStackのコンポーネントは何か
Cinder
AWSのIAMに相当するOpenStackのコンポーネントは何か
Keystone
AWSのVPCに相当するOpenStackのコンポーネントは何か
Neutron
AWSのS3に相当するOpenStackのコンポーネントは何か
Swift
Packerとは何か
HCL2(Terraformと同じ仕様)やJSONの設定ファイルを用いてマシンイメージを作成するツール
Terraformと同じくHashiCorpによって開発されました。Ansible・Chef・Puppetなどのプロビジョニングツールと統合することが可能です。
NASAが開発してRackSpace社のストレージサービスを組み入れたソフトウェア
OpenStack
マネジメントサーバに管理されるリソースで構成されるソフトウェア
CloudStack
カリフォルニア大学サンタバーバラ校で開発されAWSと同等のクラウド環境を構築できるソフトウェア
Eucalyptus
ユーカリの早い成長からAWSのようなスケーラビリティを追い求めると覚えてしまいましょう。
主要な仮想化ソフトウェアに対応した仮想データセンタ管理向けのソフトウェア
OpenNebula
データセンターを宇宙と見立てて星雲を意味するNebulaを使っていると覚えてしまいましょう。
cloud-initの動作状態や処理済みのデータを保存するディレクトリ
/var/lib/cloud/
ldirectordとは
Linux Virtual Server(LVS)の一部であり,バックエンドのサーバ群にトラフィックを分散するためのロードバランサ
Packerの書式はJSONとHCLのどちらか
両方。最近ではHCL。
NUMAとは
Non-Uniform Memory Accessの略称で,コンピュータのメモリアーキテクチャの一つ。複数のプロセッサやコアがあるシステムにおいて,それぞれのプロセッサが直接アクセスできるメモリ領域が異なる方式。
引っかかったポイント
kvmやqemu-kvmで初期RAMディスクをロードするためのオプション
-initrd
PVという語について
Physicalを想起しがちだがParavirtualizedで準仮想化を表すため真逆。virt-p2vのpはphysicalだから厄介。
lxc-checkpointはコンテナを一時停止させるか
一時停止させる
「oVirtは複数の異なる仮想化技術を共通化するライブラリ」は正しいか
正しくない。KVMを利用した仮想マシンの管理ツールと理解する。
「KubernetesはPodに障害が発生すると別のノードでPodを再起動する」は正しいか
正しくない。デフォルトでは同じノード上でPodが再起動される。
「Podのすべてのコンテナは同じノード上で実行される」は正しいか
正しい
「QEMUは仮想CPUを利用して仮想マシンを物理CPUにマッピングする」は正しいか
正しくない。QEMUはあくまでもエミュレーションだけでマッピングは行わない。マッピングを行うのはKVMなどのハイパーバイザ。
DockerfileでCOPY data/ /data/した後にVOLUME /data/すると何が起きるか
コンテナ側の/data/をボリューム化してホスト側の/var/lib/docker/volumes/にマウントする。このマウントの種類はボリュームマウントで,docker側で勝手に名前を付けてくれると理解すればよい。
コメント