ハードディスクのレイアウト設計
LVM (Logical Volume Manager)
・物理的な記憶デバイスの領域を複数まとめて大きな仮想的な領域とする仮想的なパーティション領域を作成
・従来の物理的なパーティションを用いた方法よりも柔軟に記憶領域を管理することができるようにする仕組。
・各論理ボリュームのサイズを後から変更可能
・単体のハードディスクの容量を超えるサイズの論理ボリュームの製作が可能
・後から新たな物理ボリュームを追加してボリュームグループ全体のサイズを増やす事が可能
・不要な特定の物理ボリュームだけをボリュームグループから削除が可能。
・スナップショット
LVへの変更前の情報を保持する機能
バックアップの対象をスナップショットにすることで運用を停止することなく安全にバックアップする。
物理ボリューム (PV:Physical Volume)
・物理的なハードディスクやパーティション
・pvcreateコマンドを使用して作成
ボリュームグループ (VG:Volume Group)
・物理ボリュームを集めて作る、仮想的な領域(仮想的なハードディスクのようなものだと思ってよいです)
・vgcreateコマンドを使用して作成
論理ボリューム (LV:Logical Volume)
・ボリュームグループの一部(または全部)を使って作る、仮想的なパーティション。
・従来のパーティションと同じように、この論理ボリューム上にファイルシステムを作って利用可能
・lvcreateコマンドを使用して作成。
・論理ボリューム(LV)のデバイスファイルは「/dev/VG名/LV名」となる
・作成した論理ボリューム(LV)を実際に使用するには
> mkfsコマンドで、作成した論理ボリュームにファイルシステムを作成
> mountコマンドでマウントする
ESP(EFIシステムパーティション)
・UEFIを使ったシステムの領域。
・UEFIシステムで物理的なマシンを起動しファームウエアが読み込まれた後最初にアクセスされる領域。
・FATでフォーマットされブートローダや起動に必要なドライバなどが置かれている
Linuxシステムを構築するに当たって、推奨構成として必要なパーティション
・ルートパーティション
・スワップ領域(推奨) ー> 物理メモリの2倍程度のサイズ(目安)
主なディレクトリのまとめ
ディレクトリ名 | 分割適否 | 用途 |
/ | ルートディレクトリ | |
/home | ○ | ユーザのホームディレクトリ(頻繁に書き込み有り) |
/usr | ○ | ユーザーが使用する各種プログラムなど(頻繁に読み込み) 起動には不要はプログラム |
/var | ○ | ログファイルやメールなど可変ファイルを格納(頻繁に書き込み有り) 高速に書き込みできるディスクに割り当てる |
/opt | ○ | 追加でインストールしたパッケージを格納(容量が大きくなる可能性がある) |
/boot | △ | Linuxカーネルなど起動に必須のファイルを格納 |
/tmp | △ | 一時的なファイル(再起動時に消去される) |
/bin | ✕ | 一般ユーザー用のコマンドを格納 |
/sbin | ✕ | 管理者用のコマンドを格納 |
/dev | ✕ | デバイスファイル(usb,cdrom,disk等) |
/etc | ✕ | 設定ファイル |
/lib | ✕ | 共有ライブラリー(基本コマンドの実行に必要なライブラリ群) |
/media | リムーバブルメディア用マウントポイント(cdrom等のマウントポイント) | |
/mnt | ハードディスク等の一時的なマウントポイント | |
/proc | カーネルやプロセス情報 | |
/root | root用ホームディレクトリ | |
/run | 実行時の可変データ群。再起動時に消去される | |
/srv | HTTP、FTP 用データが置かれている。 | |
/sys | デバイスやドライバーの設定ファイルなど |
ブートローダーのインストール
GRUBのインストール
・ /dev/sdaのMBRにGRUBをインストール # grub-install /dev/sda/
・ ブートローダはHDDのMBR(第一段階のブートローダが通常格納される場所)に格納
GRUB の特徴
・ 多数のファイルシステムを認識可能。
・ シェル機能を搭載しコマンドによる高度か管理が可能
GRUB Legacyの設定
・ 設定ファイル /boot/grub/menu.lst または /boot/grub/grub.conf
・ ルートパーティションを指定 : root (hdディスク番号,パーティション番号) 番号はどちらも0から
・ 設定ファイルで用いられるパラメータ
パラメータ | 説明 |
timeout | メニューを表示している時間(秒) |
default | デフォルトで起動するエントリの番号 |
title | メニューに表示されるエントリー名 |
root | ルートデバイスの指定 |
kernel | 起動するカーネルイメージファイルと起動オプションの指定 |
makeactive | ルートパティションをアクティブ化 |
chainloader | 指定されたセクタの読み込みと実行 |
hiddenmenu | 起動時にメニューを表示しない |
・ 以下は「/boot/grub/menu.lst」の例
GRUB2の設定
・ 設定ファイル /boot/grub/grub.cfg
・ 設定ファイルの編集:/etc/default/grub ファイル または /etc/default/grub.dディレクトリ内のファイル
grub-mkconfig コマンドで /boot/grub/grub.cfgファイルに反映
・ GRUBのバージョンが1.9以降のものを「GRUB2」と呼ぶ
・ パーティションを指定:hdディスク番号,パーティション番号
ディスク番号は0、パーティション番号は1から
パラメータ | 説明 |
GRUB_TIMEOUT | 起動メニューがタイムアウトするまでの秒数 |
GRUB_DEFAULT | 起動メニューがタイムアウトしたときにデフォルトOSとして選択されるエントリ |
GRUB_CMDLINE_LINUX | カーネルに渡される起動オプション |
ブートオプションの設定
・ 起動時の画面でEキーを押す
パラメータ | 説明 |
root=デバイス | ルートパティションとしてマウントするディバイス |
nousb | USBデバイスを使用しない |
single / (s) | シングルユーザーモードで起動する |
1〜5 | 指定したランレベルで起動する |
Linuxカーネルの主な起動オプション
起動オプション | 説明 |
init=パス | initの代わりに指定コマンドを実行 |
root=デバイス | ルートパティションを設定 |
数字(0−6) | 指定したランレベルで起動する |
quiet | 起動中のカーネルからの情報出力を抑制する |
・ systemd.unit=rescue : systemdの動作するシステムにおいて、シングルユーザーモードで起動
その他
・insmod : GRUB2の設定ファイルにおいて、ロードするモジュールを指定する項目
・menuentry : GRUB2の設定ファイルにおいてメニューに表示するエントリ名を指定する項目
・set : GRUB2の設定ファイルにおいて設定項目を指定するキーワード
共有ライブラリの管理
項目 | 説明 |
共有ライブラリ | 実行時にロードされ複数のプラグラムで共有される |
静的ライブラリ | 実行ファイルに組み込まれる |
ライブラリの場所 | 一般:/lib または /usr/lib。 64ビット版は「/lib64」と「/usr/lib64」 |
/etc/ld.so.conf | 共有ライブラリの検索パスが記述 |
/etc/ld.so.cache | 共有ライブラリの場所を検索するために使用されるファイル ファイルはバイナリファイルであるため「/etc/ld.so.conf」ファイルより早く検索できる |
LD_LIBRARY_PATH | 共有ライブラリの検索パスを設定する環境変数 |
ldconfigコマンド | 共有ライブラリの検索パスが記述されている「/etc/ld.so.conf」ファイルを参照し「/etc/ld.so.cache」ファイルを更新 |
lddコマンド | 実行するときに必要となる共有ライブラリを調べる |
Debianパッケージの管理
dpkg
・ Debian系ディストリビューションで使用されるDebian形式のパッケージを管理するためのツール
・ Debian形式のパッケージファイル名の見方
・設定ファイルは /etc/dpkg/dpkg.cfg
・コマンド dpkg[オプション]アクション
オプション | 説明 |
-E | 同じバージョンがすでにインストールされている場合、インストールは行わない |
-G | 新バージョンがすでにインストールされている場合、インストールはしない |
-R (–recursive) | ディレクトリ構造を再帰的に処理する |
アクション | 説明 |
-i パッケージ名 –install パッケージ名 | 指定したdebパッケージをインストールする |
–unpack パッケージ名 | 指定したdebパッケージを展開するが、設定は行わないGRUB2の設定ファイルに おいてメニューに表示するエントリ名を指定する項目 |
–configure パッケージ名 | 指定したdebパッケージを設定する。 パッケージ名の代わりに-aオプションもしくは –pengingオプションをつけると、未設定なパッケージすべてを設定する |
-r パッケージ名 –remove パッケージ名 | 指定したパッケージを設定ファイルを残して削除する |
-P パッケージ名 –purge パッケージ名 | 指定したパッケージを設定ファイルを含め、完全に削除する |
-p パッケージ名 –print-avail パッケージ名 | 指定したパッケージの情報を表示する |
-l パターン –list パターン | マッチした名前のパッケージを表示する。 パッケージを指定しない場合は、/var/lib/dpkg/statusになるインストール済の 情報をすべて表示する |
-s パッケージ名 –status パッケージ名 | 指定したパッケージの状態を表示する |
-L パッケージ名 –listfile パッケージ名 | 指定したパッケージのインストールファイル一覧を表示する |
-S パターン –search パターン | 指定したパターンが属しているパッケージ名を表示する |
-C –audit | インストールが完了していないパッケージの表示 |
・ dpkg-reconfigure : インストール済みのパッケージを、インストールした時と同じように
再設定するコマンド
APTツール
・ dpkgツールを拡張した、Debian系パッケージを管理するツール群
・ apt-cache : パッケージ情報の検索・参照などを行うコマンド
・ apt-get : ネットワーク経由でパッケージを取得したり、
パッケージのインストール・アンインストールなどを行うコマンド
・ apt : apt-getコマンドとapt-cacheコマンドの機能を統合したコマンド
・ パッケージの取得元(リポジトリ)は /etc/apt/sources.list ファイルで設定
apt-cache [サブコマンド]
サブコマンド | 説明 |
---|---|
search キーワード | 指定したキーワードを含むパッケージを検索する |
show パッケージ名 | パッケージについての一般的な情報を表示する |
showpkg パッケージ名 | パッケージについての詳細な情報を表示する(依存関係を含む) |
depends パッケージ名 | 指定したパッケージの依存関係情報を表示する |
apt-get [オプション] コマンド
コマンド | 内容 |
---|---|
install [package] | パッケージのインストール/更新 |
update | パッケージリストの更新 |
upgrade | インストールされてるパッケージの更新 |
dist-upgrade | インストールされてるカーネルの更新(Ubuntu) /ディストリビューションの更新(Debian) |
remove [package] | パッケージの削除 |
autoremove | 使ってないパッケージの削除 |
purge [package] | パッケージの削除(設定ファイルも) |
clean | アーカイブファイルの削除 |
autoclean | 使ってないパッケージのアーカイブファイルの削除 |
apt [オプション] コマンド
コマンド | 内容 |
---|---|
update | パッケージ一覧を更新 |
upgrade | パッケージを更新 |
full-upgrade | パッケージを更新 |
autoremove | 更新に伴い必要なくなったパッケージを削除 ( apt 実行時にこのコマンドを実行するよう表示されたら実行する) |
install | パッケージやdebファイルをインストール |
remove {パッケージ名} | パッケージを削除 |
remove –purge {パッケージ名} | パッケージを完全削除 |
show {パッケージ名} | パッケージの詳細情報を表示 |
list {パッケージ名} | パッケージを検索(完全一致) |
search {パッケージ名} | パッケージを検索(部分一致) |
autoclean | キャッシュされているが、インストールはされていないdebファイルを削除 |
clean | キャッシュされている全てのdebファイルを削除 |
オプション | 内容 |
no-install-recommends | パッケージに対する「推奨」パッケージを依存パッケージとしてインストールしない |
-b | ソースパッケージをダウンロードした後にビルドする |
-d | ダウンロードだけを実行する。展開やインストールは行わない |
-f | 壊れた依存関係の修復を試みる |
–no-remove | パッケージが削除される場合に中断する |
-q | 進捗表示などを表示しない。 -q=[1-2]のようにレベル指定が可能 |
–reinstall | すでにインストールされていても再インストールする |
-s | シミュレーションをする。変更はしない |
-t | 指定したリリースを利用する。stable以外のbackportsやunstableから パッケージを取得する場合に利用する |
-y | 問い合わせに自動でyesで答える |
–asuume-no | 問い合わせに自動でnoで答える |
-u | アップデートするパッケージの一覧を表示する |
RPMとYUMパッケージ管理
RPM (Red Hat Package Manager)
・ Red Hat系のLinuxディストリビューションで使われているパッケージ管理コマンド。
・ RPMパッケージのファイル名 Ex.) apache-1.3.22-2.i386.rpm
apache | パッケージ名 |
---|---|
1.3.22 | ソフトウェアのバージョン |
2 | 同一バージョンでのリリース番号 |
i386 | アーキテクチャ |
rpm | 拡張子(Redhat Package Manager) |
・コマンド rpm[オプション]
インストール/アップグレードモード | ||||
オプション | 説明 | |||
-i –install パッケージファイル名 | パッケージをインストールする | |||
-U –upgrade パッケージファイル名 | パッケージをアップグレードするなければインストールする | |||
-F –freshen パッケージファイル名 | 以前のバージョンがインストールされているときのみパッケージをアップグレードする | |||
併用オプション | ||||
-v | 詳細な情報を表示する | |||
-h (–hash) | 進行状況を「#」で表示する | |||
–nodeps | 依存関係を無視してインストールする | |||
–force | 既存のファイルを新しいものに置き換える | |||
–test | 実際にはインストールせずにテストを実施する | |||
アンインストールモード | ||||
オプション | 説明 | |||
-e –erase パッケージ名 | パッケージをアンインストール(削除)する | |||
併用オプション | ||||
–nodeps | 依存関係を無視してアンインストールする | |||
参照モード | ||||
オプション | 説明 | |||
-q –query パッケージ名 | 指定したパッケージがインストールされているか参照 | |||
-V –verify パッケージ名 | パッケージを検査する | |||
併用オプション | ||||
-a –all | インストールされているパッケージを一覧表示する | |||
-i –info | パッケージの情報を表示する | |||
—provides | パッケージが提供する機能(ライブラリなど)を表示する | |||
-R –requires | 依存しているファイル名を表示する | |||
–changelog | パッケージの更新情報を表示する | |||
-l –list | パッケージに含まれるファイルを表示する | |||
-c –configfiles | 設定ファイルのみを表示する(「-l」を指定したものと見なす) | |||
-d –docfiles | 文書ファイルのみを表示する(「-l」を指定したものと見なす) | |||
–f ファイル名 –file ファイル名 | 指定したファイルがどのパッケージからインストールされた のかを表示する(フィールドあるいはフルパスで指定) | |||
–nomd5 | MD5によるファイルの改ざんを検査しない | |||
-p –package | パッケージ名ではなく、RPMパッケージファイルを指定して 問い合わせる |
Yum(Yellowdog Updater Modified/ ヤム)
・ YUMツールの設定ファイルは「/etc/yum.conf」
・ LinuxのRedHat系ディストリビューション(CentOSやFedoraなど)で利用されるパッケージ管理
・ Debian系ディストリビューション(Ubuntuなど)で利用される「APT」に相当
・ RPMの高機能版。パッケージの自動更新機能と、依存性の解決機能を加えたパッケージ管理ツール
・ インターネット上ないしはメディア上のパッケージ情報のデータベースを使い、依存関係を調整しながら、
パッケージのインストール・アンインストールなどを行う
・ パッケージの集合であるリポジトリーと連動しており、リポジトリから未インストール
のパッケージを検索できる
機能 | RPM | Yum |
---|---|---|
依存性の解決 | なし | あり |
自動更新 | なし | あり |
リポジトリ連携 | なし | あり |
・ YUMツールのリポジトリの設定
> 各リポジトリごとの詳細設定ファイルを「/etc/yum.repos.d」ディレクトリ内に配置する
> リポジトリの設定ファイルでは変数「$releasever」と「$basearch」を活用している
> ネットワーク経由で、依存関係を解決しながら最新のパッケージを取得できる
・コマンド yum[サブコマンド]
サブコマンド | 説明 |
check-update パッケージ名 | アップデート対象のパッケージリストを表示する |
update パッケージ名 | 指定したパッケージをアップデートする |
install パッケージ名 | 指定したパッケージをインストールする |
remove パッケージ名 | 指定したパッケージをアンインストールする |
info パッケージ名 | 指定したパッケージの情報を表示する |
list パッケージ名 | 全パッケージ情報をリスト表示する |
repolist | リポジトリ一覧を表示する |
search キーワード | パッケージ情報をキーワードで検索する |
search all キーワード | パッケージをキーワードで検索する(パッケージ名及び説明文等すべて) |
grouplist | パッケージグループをリスト表示する |
groupinstall グループ | 指定したグループのパッケージをインストールする |
dnf(Dandified Yum)
・ yumの後継となるコマンドという位置付
・ yumと同じサブコマンド、オプションを使用可能
・コマンド dnf[オプション]
オプション | 実行内容 |
---|---|
check-update | 更新に利用できるパッケージを確認する |
clean | キャッシュデータを削除する |
upgrade (update) | パッケージを更新する |
upgrade パッケージ名 | 指定したパッケージを更新する |
install パッケージ名 | 指定したパッケージに加え、依存関係があるパッケージもインストールする (既にインストールされていた場合は更新する) |
remove パッケージ名 | パッケージを依存関係のあるパッケージとともに削除する |
info パッケージ名 | パッケージの情報を表示する |
list | パッケージを一覧表示する |
search キーワード | 指定した文字列でパッケージの詳細を検索する |
history | パッケージのインストールや削除の履歴を表示 |
updateinfo | 不リポジトリの更新情報を表示する |
Zypper(Libzypp)
・ openSUSE(Slack Ware系ディストリビューション)でデフォルトで採用されているRPMパッケージ
管理ツール
・ システム全体の設定は「/etc/zypp/zypper.conf」、ユーザ固有の設定は「~/.zypper.conf」に記述。
・コマンド dnf[オプション]
サブコマンド | 説明 |
---|---|
install | in パッケージ名 | 指定したパッケージをインストールする。 |
remove | rm パッケージ名 | 指定したパッケージをアンインストールする。 |
info パッケージ名 | 指定したパッケージの情報を表示する |
update | up | システム全体のアップデートする。 |
update | up パッケージ名 | 指定したパッケージをアップデートする。 |
list-updates | lu オプション | アップデート対象のパッケージリストを表示する |
dist-upgrade | dup | ディストリビューションをアップグレードする |
search | se キーワード | パッケージ情報をキーワードで検索 |
repos | lr | リポジトリの一覧表示 |
refresh | リポジトリの更新 |
その他
・ rpm2cpio
RPM系パッケージをcpio形式のアーカイブに変換するコマンド
・ rpmコマンドの「-V(–verify)」オプション
> 検査する内容ファイルのサイズ、MD5チェックサム、所有ユーザ、所有グループ、タイムスタンプ
> RPMデータベースに格納されているファイルに関する情報と、インストールされた
パッケージのファイルに関する情報を比較して変更(改ざんなど)が無いか検査する
仮想化のゲストOSとしてのLinux
クラウドコンピューティング
・ サーバ/ストレージ/アプリケーションなどのリソースをすべてクラウドに置き、
それらのリソースをサービスとして利用するコンピューティング環境
インスタンス(instance)
・ クラウド上に新しく設計された仮想サーバー
IaaS(Infrastructure as a Service)
・ 別名HaaS(Hardware as a Service)
・ 情報システムの構築に必要な下記をインターネット上で提供するサービス
・仮想マシン
・ブロックストレージ
・仮想ネットワーク
・ ミドルウェアやアプリケーションは管理書が必要に応じてインストールする
PaaS(Platform as a Service)
・ IaaSに更にミドルウェア(ソフトウエアの開発、実行環境)が提供されたサービス
・ すぐに開発に利用することができる
SaaS(Software as a Service)
・ PaaSに更にアプリケーションそのものが提供されたサービス
・ すぐに利用することができる
その他
・ 仮想化(Virtualization)
コンピュータリソースを実際の物理的な構成にとらわれず、論理的に分割・統合して提供する技術
・ 仮想化環境
・仮想マシンのことをインスタンスと呼ぶ
・仮想マシンへのOSのインストールはテンプレートを利用できる
・ブログサービス環境などのように、ユーザの用途に応じて利用可能なコンテナを
アプリケーションコンテナと呼ぶ
・ ハイパーバイザー型
・物理マシン上でハイパーバイザーを起動し、その上で仮想マシンとゲストOSを動作させる
・ハイパーバイザーがサポートしていれば、動作させるゲストOSの種類に制限はない
・「インスタンス」と呼ばれる仮想マシンにOSをインストールして使用
・OSのインストールは、あらかじめ用意されたテンプレート(OSイメージ)から行うのが一般的
・ソフトウェアの例:KVM、Xenなど
・ コンテナ型
・OSのリソースを「コンテナ」という単位で隔離して共有する方式。アプリケーションコンテナ
・オーバーヘッドが少なく、リソース・構築・管理の面がシンプル
・Linuxカーネルの機能によってコンテナごとのユーザ管理やリソース制限ができる
・ソフトウェアの例:LXC、OpenVZ、Dockerなど
・ 仮想マシンのクローン間で重複してはならないもの
・UUID
・ Universally Unique Identifier: 汎用一意識別子
・ 全世界で重複が起きないように生成される一意な値
・IPアドレス
・SSHホスト鍵
・ 公開鍵、秘密鍵。SSH接続時に使用
・マシンID
・ /etc/machine-idに格納。
・ マシンを再起動するかsystemd-machine-id-setupコマンドを実行
・ Cloud-init
・クラウドインスタンスを展開するためにインスタンスの構成やカスタマイズを行う
・UUID / IPアドレス / SSHホスト鍵 / マシンID等を設定
・ D-Bus マシンID
・インスタンスの識別に使用。インスタンス毎に異なる値。
・/etcmachine-idファイルに格納