主題2.04:システムの保守と運用管理

  • 2022年6月8日
  • 2022年6月8日
  • IT
目次

2.04.1 makeによるソースコードからのビルドとインストール

gitコマンド

主なgitコマンド

圧縮およびアーカイブユーティリティ

解凍、展開の処理

# tar xzf example.tar.gz
# tar xjf example.tar.bz2
# tar xJf example.tar.xz
# gzip -dc example.tar.gz | tar xf –
# bzip2 -dc example.tar.bz2 | tar xf –
# xz -dc example.tar.xz | tar xf –
# gunzip -c example.tar.gz | tar xf –
# bunzip2 -c example.tar.bz2 | tar xf –
# unxz -c example.tar.xz | tar xf –

tarコマンドの主なオプション

patchコマンド

patchコマンドの使い方

・リダイレクトを使う
patch [オプション] < パッチファイル
・パイプを使う
cat パッチファイル | patch [オプション]
・patchの引数にすべて指定する
patch [オプション] 対象 パッチファイル

主なオプション

プログラムをソースファイルからインストール

実行順序

./congigure → make → su → make install

GNUのmakeが指示ファイルとして探すファイル

・GNUmakefile
・makefile
・Makefile

Makefileに含まれるターゲット

・clean
・install
・uninstall

2.04.2 バックアップとリストア

バックアップ

バックアップの対象と方法

・ファイル単位のバックアップ:tarコマンド、rsyncコマンドなど
・ファイルシステム、デバイス単位のバックアップ:dumpコマンド、xfsdumpコマンドなど
・イメージ(システム全体)のバックアップ:ddコマンド、dumpコマンド、バックアップツール

バックアップの種類

・フルバックアップ
必要なデータを全て一括で複製します。バックアップに時間がかかり、バックアップ先(バックアップメディア)に大きな容量が必要です。

・差分バックアップ
前回のフルバックアップ以降、新たに作成されたファイルや変更があったファイルのみを複製します。バックアップにかかる時間は短くなります。復元にはフルバックアップと、最新の差分バックアップが必要です。

・増分バックアップ
前回のフルバックアップ、もしくは増分バックアップ以降、新たに作成されたファイルや変更があったファイルのみを複製します。バックアップにかかる時間は非常に短くなります。復元にはフルバックアップと全ての増分バックアップが必要です。

バックアップ先のメディア

・ハードディスクドライブ
大容量(数十GB~数十TB)で、転送速度も高速。
ただし機器がデリケートであり、ハードウェア障害に弱い。

・光学メディア
DVD-R/RW、BD-R/RE(Blu-ray Disk)などのメディア(Rは追記型(ライトワンス)、RW,REは上書き可能)。1枚あたりの単価は安く、小型であり持ち運びが容易。DVDのデータ容量は数GB程度だが、Blu-rayは数百GBと大容量になっている。
ただし、熱や湿気、紫外線などに弱い。

・磁気テープ
UNIX系の環境や汎用機で使用されてきたメディア。大容量(数十GB~数十TB)で、容量あたりのメディア単価が安く、持ち運びも容易。基本的にシーケンシャルアクセス(先頭から順にデータにアクセスする方式)であり、大容量のフルバックアップ時には高速に書き込みできる。
ただし、記録装置は高価なので初期費用が高い。また、劣化しやすい(テープの摩耗、たるみ等)ため、定期的なメンテナンスが必須。

オープンソースのバックアップツール

・Amanda
1台のAmandaサーバでネットワーク内の複数のクライアントをテープ/ディスクドライブにバックアップできます。標準のdump、tarユーティリティを採用しており独自のフォーマットでないため、Amandaが無い環境でも標準ユーティリティでリカバリ可能です。

・Bacula
1台のBaculaサーバでネットワーク内の複数のクライアントを様々な記録メディアにバックアップできます。CUIのbconsole、GUIのbatというコンソールからBaculaを操作します。

・Bareos
Baculaプロジェクトから派生したバックアップツールです。Baculaと同様にCUIのbconsoleや、Webサーバと連携したWeb UIを使用できます。

・BackupPC
いくつかの標準プロトコルを利用するのでクライアント不要のバックアップツールです。Webサーバと連携したWeb UIを使用できます。

rsyncコマンド

構文

rsync [オプション] 送信元 送信先

主なオプション

ddコマンド

例文

# dd if=/dev/sda of=/dev/sdb

主なオプション

mtコマンド

書式

mt -f テープデバイス 操作

テープデバイスのデバイスファイル名(SCSI接続1番目)

・/dev/st0
・/dev/nst0

主な操作

2.04.3 ユーザへの通知

システムからユーザへ通知を行う方法

ログイン時に通知する

特定のファイルに記述した内容が表示されます。表示させるタイミングによって、記述するファイルが異なります。

・/etc/issue
ログインプロンプトの手前に表示される内容を設定するファイルです。
このファイルの内容はログイン画面に表示されるので、ログインを行わなくても閲覧される点に気をつけましょう。

・/etc/issue.net
SSHなどネットワーク経由でのログインプロンプトの手前に表示される内容を設定するファイルです。

・/etc/motd
ユーザがシステムにログインした直後に、コンソールに表示される内容を設定するファイルです。
/etc/issue とは違い、ログインが成功して初めて表示されるので、正しいユーザにのみ表示したいような内容ならばこちらが適します。

コマンドで通知する

ログイン中の他のユーザーに、任意のタイミングで通知できます。

・wall
書式
 wall 表示するメッセージ
ログインしているユーザ全員のコンソールに、引数で指定したメッセージを表示します。
システムを再起動する際の予告などに利用することができるでしょう。

・shutdownコマンドの-kオプション
書式
 shutdown -k now “message”
wallと同様にログインしているユーザ全員にメッセージを送ることができます。
shutdownは第一引数にシャットダウンや再起動を行うタイミングを、第二引数にメッセージを指定して実行すると、まずそのメッセージをユーザに表示してから、指定したタイミングでシャットダウン・再起動などを行うコマンドでした。
しかし、-kオプションを指定した場合にはシャットダウン・再起動などの動作はキャンセルされ、実際には行われません。そのため、-kオプションをつけておけば、メッセージをユーザに伝達する役割のみを果たすコマンドとして利用できるというわけです。

・write
書式
 write ユーザ
writeコマンドの後に入力したメッセージを、指定したログイン中のユーザのターミナルに表示します。Ctrl+Dで入力を終了します。

・talk
書式
 talk ユーザ
指定したログイン中のユーザとチャットができるコマンドです。Ctrl+Cでtalkを終了します。

通知メッセージの受け取り設定

他のユーザーからの通知は、mesgコマンドで制御できます。

書式
 mesg [ y | n ]
使用中のターミナルへ、他のユーザがwriteコマンドやtalkコマンドでメッセージを送信できるかどうかを制御します。
引数無しで実行した場合は現在の設定を表示します。

2.04.4 リソース使用状況の把握

リソースの測定

システムのパフォーマンスを計測

sarコマンド

書式:sar [オプション] [表示間隔(秒) [回数]]

sadfコマンド

書式:sadf [オプション] [対象データ] — [sarのオプション]

vmstatコマンド

vmstatコマンドの実行例およびその表示項目

「procs」欄:プロセスの統計情報を表示
・r 実行待ちプロセスの数
・b I/O待ちなどで割り込み不可のスリープ状態にあるプロセスの数
・w スワップアウトされているプロセスの数(w列が表示されない場合もある)

「memory」欄:メモリの使用状況を表示
・swpd 使用中のスワップ領域のサイズ
・free 空いている物理メモリのサイズ
・buff バッファキャッシュのサイズ
・cache ページキャッシュのサイズ

「swap」欄:スワップイン・アウトの状況を表示
・si スワップインされているメモリのサイズ(KB/秒)
・so スワップアウトされているメモリのサイズ(KB/秒)

「io」欄:ディスクI/Oの状態を表示
・bi デバイスからの読み取りブロック数/秒
・bo デバイスへの書き込みブロック数/秒

「system」欄:割り込み回数やコンテキストスイッチ回数を表示
・in 1秒あたりの割り込み回数(クロック割り込み含む)
・cs 1秒あたりのコンテキストスイッチ回数

「cpu」欄:CPUの使用状況を表示
・us ユーザプロセスの割合
・sy システムプロセス(カーネル)の割合
・id アイドル時間の割合
・wa I/O待ち時間の割合
・st バーチャルマシンに使用された時間の割合

2.04.5 死活監視、リソース監視、運用監視ツール

監視ツール

複数の対象機器の死活監視やリソース監視を行う統合監視ツール

・Nagios
サーバの死活監視や、ネットワークサービスの状態やリソースの使用状況などを統合的に監視するツールです。ApacheなどのWebサーバと連携してWebインタフェースから監視を行います。コミュニティサイトで公開されているプラグインを追加して監視する項目を増やせたり、ユーザが独自のプラグインを開発することもできます。

・Icinga2
Nagios互換の監視ツールとして開発が始まったツールです。Version2になって互換性はなくなりましたが、WebAPIを使って監視情報のやりとりを行うなど、Nagiosにない機能が追加されています。

・Zabbix
死活監視や、ネットワークサービスの状態やリソースの使用状況、クラウドなどを統合的に監視するツールです。Zabbix社によって開発、サポートが行われています。
多くのプラットフォームや以下のように複数の監視方法に対応しているため、システム全体の集中監視が可能です。
 ・ICMPやHTTPによる死活監視
 ・監視対象機器にZabbixエージェントをインストールしての情報収集
 ・SNMPやSSHを利用したエージェントレスの監視

対象機器のリソース監視を行うリソース監視ツール

・collectd
監視対象機器の統計情報を収集するデーモンです。小さなプログラムであるため、システムにかかる負荷が少ないのが特徴です。プラグインとしてモジュールを追加して収集項目を設定します。収集したデータは他のWebサーバなどのツールを利用してグラフ化できます。

・MRTG(Multi Router Traffic Grapher)
ネットワークやリソースの使用状況を監視し、グラフ化するツールです。ルータのネットワークトラフィックを監視するために開発されましたが、SNMPマネージャとして動作し、通信データ量だけでなく、CPU・メモリ・ディスクの使用率などの情報をSNMPで取得できます。設定はテキストファイルで行い、収集したデータはHTMLで出力されるので、Webサーバを利用して表示できます。

・Cacti
ネットワークやリソースの使用状況を監視し、グラフ化するツールです。SNMPマネージャとして動作します。Webインタフェースで設定できるためMRTGより設定が容易で、MRTGの代替として使用されます。

SNMP

SNMP関連の用語

・SNMPはcollectdやMRTGなどのツールがリソースの状態を測定(監視)する際に使用するプロトコル
・トラップはSNMPエージェントからSNMPマネージャに対してエラー発生などの通知を行うこと
・ポーリングはSNMPマネージャからSNMPエージェントに対して情報収集のリクエストを送信すること

2.04.6 システム構成ツール

Ansible(アンシブル)

Ansibleを構成する要素

・インベントリ(Inventory)
管理対象ノード(Managed nodes)を記述するファイルです。デフォルトのインベントリは「/etc/ansible/hosts」です。

・モジュール
タスク(実行したい処理の単位)で実行する処理の本体です。タスクプラグインやライブラリプラグインとも呼ばれます。
コマンドラインから、もしくはプレイブック(タスクの集合)のタスクで実行できます。
VMwareの仮想マシンやDockerのコンテナを作成・管理できるモジュールや、CiscoやJuniperなど主要なネットワーク機器の情報を収集・設定できるモジュールも多数用意されています。

・プレイブック(Playbook)
複数のタスクをPlaybookというファイルにYAML(構造化データの形式)で記述します。演劇の台本に例えられます。
構造化データとは、ある決まった形式に従って記述されたデータです。

ansibleコマンド

 1つのモジュール(タスクで実行する処理の本体)を指定して実行するアドホック(その場限りの)コマンドです。

ansible-playbookコマンド

 複数のタスクを記述したファイルであるプレイブック(Playbook)を実行するコマンドです。複数の管理対象ノードに一度に多くのタスクを実行できます。

ansibleコマンドとansible-playbookコマンドの書式、主なオプション

プレイブックの書式

yumコマンドでCentOSにhttpdパッケージをインストールするプレイブックの例