linuCレベル1ver.10 101試験対策
仮想マシンとコンテナ
仮想マシン
仮想マシンとは、物理的なサーバーと同等の機能・動作を再現(エミュレート)した仮想的なハードウェア環境。この機能を実現するのがハイパーバイザー
ハードウェア上で直接動作 | Type1(ネイティブ型) |
OS上で稼働するアプリケーションが仮想マシンを再現する | Type2(ホスト型) |
仮想マシンの特徴
- それぞれの仮想マシンには個別にOS(ホストOS)、ライブラリ(実行環境)、ミドルウェア、アプリケーションをインストールして、独立したコンピューティングを構築できる。
- ハードウェアをエミュレートするため、CPUやメモリのリソースを多く消費する。
- ホストOSと独立しているため、実行環境が変わってもそのまま動作させられる。
- ホストOSとは異なる種類のOSを実行できる。
仮想マシンの作成(KVM)
CPUが仮想化支援機能に対応しているかを確認できるファイル:/proc/cpuinfo
(vmx, またはcvmが記載されていれば対応)
lsmodでカーネルにkvmのモジュールが組み込まれていることを確認
rpmでKVMの実行に必要なパッケージを確認
qemu-kvm, qemu-img, libvirt, virt-install, virt-manager, virt-viewer
仮想化デーモン(libvirtd)の起動状態:Active:active(runnning)
起動していなければ systemctl start libvirtd
ゲストOSのISOイメージをダウンロード
cd /tmp
curl -LO http://ftp.riken.jp/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal- 2003.iso
仮想マシンのイメージファイル作成
qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.img 10G
仮想マシンの作成とゲストOSのインストール
virt-install –connect=qemu:///system\
–name=centos7\
–vcpus=1 \
–ram=1024 \
–hvm \
–os-type=linux \
–os-variant=rhel7 \
–virt-type=kvm \
–disk path=/var/lib/libvirt/images/centos7.img \
–location=/tmp/CentOS-7-x86_64-Minimal-2003.iso
仮想マシン名 | centos7 |
CPU数 | 1 |
メモリ | 1024MB |
–disk path | 作成したストレージのイメージファイルを指定 |
location | ダウンロードした CentOS7 の ISO イメージを指定 |
CentOSのバージョンを確認するファイル:cat /etc/redhat-release
仮想マシンの起動・停止のコマンド
KVMはvirshコマンドを使って操作する。ドメインとは、CPU,メモリ,仮想ディスク,仮想マシンを実行するネットワークなど一連のリソースを含む仮想マシンの構成。
list –all | 定義されているドメインの一覧を表示 |
start ドメイン名 | ドメイン名の仮想マシンを起動 |
shutdown ドメイン名 | シャットダウン |
reboot ドメイン名 | 再起動 |
suspend ドメイン名 | 一時停止 |
resume ドメイン名 | 一時停止状態から再開 |
destroy ドメイン名 | 強制停止 |
virt-viewer ドメイン名 | ドメイン名で指定した起動中の 仮想マシンの操作画面を開く |
dominfo 仮想マシン | 仮想マシンの現在のCPUを確認するコマンド (ドメインに関する基本情報を返す) |
domstate | ドメインに関する状態を返す |
domid | ドメイン名(またはUUID)をドメインIDに変換する |
dumpxml | 設定ファイルの中を確認する |
コンテナ
コンテナとは、物理的なコンピュータ上で稼働するOS(ホストOS)のリソースの一部を隔離し、仮想的に作られた実行環境。代表的なコンテナはDocker。ホストOSのカーネルを共有しながら、完全に隔離されたアプリケーション実行環境を構築できる。
コンテナの特徴
- ホストOSとは隔離されたプロセスを作成し、その上にライブラリ(実行環境)、ミドルウェア、アプリケーションをインストールして、独立したコンピューティング環境を構築。
- ホストOSのプロセスとして動作するので、CPU,メモリのリソース消費が少なく、起動するまでの時間がかからない。
- コンテナ管理ソフトウェアがハードウェアやOSごとの違いを吸収するため、他の実行環境へコンテナを容易に移動・配布できる。
- コンテナ内部で実行されるOS環境はホストOSと同じものに限定される。
コンテナの作成(Docker)
1 | yum install docker | dockerをインストール |
2 | rpm -q docker | インストールされているか? |
3 | docker -v | バージョンは? |
4 | systemctl start docker | 起動 |
5 | systemctl status docker | 起動しているか? |
6 | systemctl enable docker | Linux起動時にdockerが自動起動される |
7 | systemctl is-enable docker | 自動起動の設定が有効か? |
OSイメージのダウンロードとコンテナの基本操作
コンテナイメージ(centos最新版)をダウンロードするコマンド
:docker pull centos:latest
コンテナイメージを確認するコマンド
:docker images
次にイメージからコンテナを作成してbashを起動してログインする。
docker run -it centos:latest /bin/bash
exit で終了
コンテナの起動・停止のコマンド
ps | 起動中のコンテナの一覧を表示 |
ps -a | 停止中も含めたコンテナ一覧表示 |
start コンテナID | 起動 |
stop コンテナID | 停止 |
restart コンテナID | 再起動 |
pause コンテナID | 一時停止 |
unpause コンテナID | 一時停止したコンテナを再開 |
kill コンテナID | 強制的に終了 |
attach | /bin/bash実行中のコンテナにアタッチ |
システムアーキテクチャ
ハードウェア設定の決定と構成
PCIデバイスとUSBデバイスの操作
認識しているpciデバイスの一覧を表示する:lspci (-v)
詳細表示(-v)の内容:
- ベンダー名
- IRQ番号
- I/Oポートアドレス
- カーネルモジュールの名前
認識しているusbデバイスの一覧を表示する:lsusb (-v)
Audio | マイク、スピーカー |
HID | キーボード、マウス |
Mass Storage | ハードディスク、USBメモリ |
Hub | USBハブ |
usb情報確認ファイル:/proc/bus/usb/devices
ランレベル/ブートターゲットの変更とシステムのシャットダウン
ランレベル | Red Hat系ディストリビューション |
0 | 停止 |
1 | シングルユーザーモード |
3 | マルチユーザーモード(CUI) |
5 | マルチユーザーモード(GUI) |
6 | 再起動 |
デフォルトのランレベルは、/etc/inittabファイルに記述。
ランレベルを切り替えるコマンド:init、telinit
initの設定ファイルを再読み込み:telinit -q
現在起動中と1つ前のランレベルを確認:runlevel
スクリプトでサービスを制御:/etc/init.d/ スクリプト名 引数
コマンドで:service スクリプト 引数
start | 起動 |
stop | 停止 |
restart | 再起動 |
status | 状態の確認 |
/etc/init.d/ ディレクトリ内のスクリプト宛てリンクファイルが用意されている、該当ランレベルにおいてサービスの自動起動を制御するためのディレクトリ:/etc/rc0~6.d/
これらのリンクファイル名を変更し、自動起動を制御するコマンド
:chkconfig (–list) サービス名 on|off
systemd
特徴
- 並列処理による高速な起動と終了処理
- cgroupsによるプロセス管理
- 設定ファイルによるシステム管理
- ユニットによる様々な処理の管理
systemdを制御するコマンド:systemctl
start | 起動 |
stop | 停止 |
restart | 再起動 |
status | 状態の確認 |
enable | 自動起動の有効化 |
disable | 自動起動の無効化 |
is-enabled | 自動起動の状態の確認 |
get-default | 規定のターゲットを表示 |
set-default | 規定のターゲットを変更 |
isolate | 現在のターゲットを変更 |
list-unit-files | ユニットの状態を表示 |
システムのシャットダウンと再起動
shutdown オプション タイミング [“メッセージ"]
-h | シャットダウン |
-r | 再起動 |
-k | テスト用 |
-c | 予約をキャンセル |
-f | 次回起動時にfsckを行わない |
-F | 次回起動時にfsckを行う |
タイミング、5分後にしたい:+5
他のシャットダウンコマンド
- init 0
- halt
- poweroff
再起動コマンド
- init 6
- reboot
- systemctl reboot
メッセージをユーザーに送信するコマンド:wall
Linuxのインストールとパッケージ管理
ブートローダ
GRUB Legacyの構成
default | 規定で起動するエントリ |
timeout | システムが自動起動するまでの秒数 |
splashimage | 起動時のGRUB設定画面の背景画像 |
hiddenmenu | 起動時、規定でGRUBメニューを非表示にする |
title | 起動するエントリ名 |
root | ルートデバイスの指定 |
kernel | カーネルイメージの指定 kernel /カーネルイメージ/ オプション (※) |
initrd | 初期RAMディスクの指定 |
(※)のオプション部分が格納されたファイル:/proc/cmdline
GRUB 2の構成
GRUB Legacy | /boot/grub/menu.lst (シンボリックリンク) /boot/grub/grub.conf (本体) |
GRUB 2 | /boot/grub/grub.cfg |
設定ファイルへ反映:grub-mkconfig
後から書き込み:grub-install
アプリケーション管理
Debianパッケージ管理システム
コマンド:dpkg オプション パッケージ名|ファイル名
(ファイル名指定は-Sオプションのみ)
-i | –install | インストール |
-r | –remove | アンインストール |
-P | –purge | 設定ファイルごとアンインストール |
-l | –list | インストール済みパッケージの検索 |
-L | –listfiles | インストールされたファイルの一覧表示 |
-s | –status | パッケージの情報表示 |
-S | –search | ファイルのインストール元パッケージの検索 |
RPM形式からdeb形式へ:alien ファイル名
deb形式からRPM形式へ:alien -r ファイル名
パッケージのインストール時に設定を行うタイプのツールの設定コマンド
:dpkg-reconfigure パッケージ名
Debian系インターネット上リポジトリにあるパッケージ利用コマンド(3つ):apt-get, apt-cache, (2つを合わせた): aptitude
update | パッケージ情報の更新 |
install | パッケージのインストール |
upgrade | パッケージのアップグレード |
search | パッケンジの検索 |
show | パッケージ情報の表示 |
RPMパッケージ管理システム
コマンド:rpm
-i | –install | インストール |
-U | –upgrade | アップグレード。なかったらインストール |
-F | –freshen | アップグレード。インストールはしない |
-e | –erase | アンインストール |
-q | –query | パッケージの検索 |
-v | 詳細表示 | |
-h | –hash | 「#」で進行状況を表示 |
–nodeps | 依存関係を無視する |
-a | –all | インストール済みの全てのパッケージを表示 |
-i | –info | パッケージ情報を表示 |
-l | –list | インストールされたファイルの一覧表示 |
-f | –file | ファイルのインストール元パッケージの検索 |
-p | –package | パッケージファイルを指定して検索 |
–changelog | 更新履歴を表示 | |
–configfiles | パッケージファイルに含まれる設定ファイルの一覧を表示 |
RPM系インターネット上リポジトリにあるパッケージ利用コマンド:yum
install | パッケージのインストール/アップグレード |
check-update | 更新パッケージの有無をチェック |
update | パッケージのアップグレード |
search | パッケージの検索 |
info | パッケージ情報の表示 |
list | パッケージの一覧を表示 |
localinstall | RPM形式のパッケージファイルを指定してインストール |
groupinstall | パッケージグループによるインストール |
grouplist | パッケージグループの一覧を表示 |
GNUとUnixのコマンド
コマンドラインの動作
変数
LANG | 利用している言語、文字コード(ロケール情報) |
PATH | コマンドの実行ファイルの格納先 |
PS1 | プロンプトに表示する内容 |
SHELL | 現在利用しているシェル |
変数の値を参照:echo $変数名
変数に値を定義:変数名 = 値
デバイス、Linuxファイルシステム、ファイルシステム階層標準
パーティションとファイルシステムの作成
パーティション管理方式
MBR | fdisk, parted |
GPT | gdisk, parted |
ファイルシステムの作成
ファイルシステムの作成で使うコマンド
- mkfs ;ファイルシステムを作成
- mke2fs ;ext2/ext3ファイルシステムを作成
- mkswap ;スワップ領域を作成
- swapon ;スワップ領域の状態を確認、もしくは有効化
ファイルシステムのマウントとアンマウントの制御
マウントを実行、確認するコマンド
:mount オプション デバイスファイル
マウントポイント
-a | /ect/fstabでautoオプションが指定されているデバイスを全てマウントする |
-t ファイルシステム | デバイスのファイルシステムを指定する |
-o オプション | マウントオプションを指定する |
ro | 読み取り専用でマウントする |
remount | 一度マウントした後、再マウントする |
マウントした領域を確認するコマンド
- df
- mount
- cat /proc/mounts
- cat /etc/mtab
/etc/fstabファイル
次回起動時も有効なマウント情報を構成したい場合はこのファイルにマウント情報を記述。
1 | 2 | 3 | 4 | 5 | 6 |
デバイス | マウントポイント | ファイルシステム | オプション | dump | fsck |
システムファイルの確認と適切な位置へのファイルの配置
FHS
/var/ | ログファイルなど可変ファイル |
/etc/ | システムが参照する設定ファイル |
/proc/ | カーネルやプロセスの状態を表すファイル |
/home/ | ユーザのホームディレクトリ |
ディスカッション
コメント一覧
まだ、コメントがありません