ディレクトリ構成
先に軽く復習。まずは感覚でもいいからおさえるべき。
Linuxはルート(/)を起点としたディレクトリ構造をとっており、主要なディレクトリの構造はディストリビューションに限らず同様となっています。
細かいところはディストリビューション次第なところもあるっぽいのでLPIC視点で必要なものを。
・実機の例
lrwxrwxrwx. 1 root root 7 8月 19 2019 bin -> usr/bin dr-xr-xr-x. 5 root root 4096 5月 23 00:02 boot drwxr-xr-x. 21 root root 3240 6月 18 22:15 dev drwxr-xr-x. 149 root root 12288 6月 18 22:15 etc drwxr-xr-x. 5 root root 49 2月 24 18:14 home lrwxrwxrwx. 1 root root 7 8月 19 2019 lib -> usr/lib lrwxrwxrwx. 1 root root 9 8月 19 2019 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 4月 11 2018 media drwxr-xr-x. 2 root root 6 4月 11 2018 mnt drwxr-xr-x. 3 root root 16 8月 19 2019 opt dr-xr-xr-x. 181 root root 0 6月 18 22:14 proc dr-xr-s---. 11 root root 4096 5月 22 00:24 root drwxr-xr-x. 45 root root 1400 6月 18 22:16 run lrwxrwxrwx. 1 root root 8 8月 19 2019 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 4月 11 2018 srv dr-xr-xr-x. 13 root root 0 6月 18 22:14 sys drwxrwxrwt. 17 root root 4096 6月 18 22:18 tmp drwxr-xr-x. 13 root root 155 8月 19 2019 usr drwxr-xr-x. 23 root root 4096 10月 10 2019 var
/bin
一般ユーザ及び管理者ユーザの両方が使用できるコマンドの実行ファイル(いわゆるコマンド)を置くディレクトリ。
コマンドを実行するためのファイルはLinuxシステム上には様々な場所に配置されていますが、/binディレクトリはその中でも特にLinuxシステムの動作に最低限必要な重要度の高いコマンドが格納されている。
/sbin
/binと同様にLinuxシステムの動作に最低限必要な重要度の高いコマンドが格納されている。
違いはこちらのコマンドは管理者向けであること。
shutdwonなど主にrootで実行するもの。
/dev
デバイスファイルを格納するディレクトリ。
マウスとかインタフェースの管理、詳しくは以下も参照。
/etc
ざっくりいうと設定ファイルを格納するディレクトリ。
後からインストールしたアプリケーションの設定の他にLinuxシステム自体に関する設定ファイルも格納されている。
起動設定、ネットワーク設定etc..
私もそんな詳しくはないですが、少し踏み込んだ内容とか環境構築を行うようになるとめっちゃ覗くようになる印象。
/home
Linuxユーザごとのホームディレクトリが格納されるディレクトリ。
ユーザディレクトリはユーザ名がそのままディレクトリ名になっている。
/tmp
名前の通り、一時的なファイルを格納するディレクトリ。
ディストリビューションの設定など次第で定期的に削除されるため永続ファイルは配置しない。
/usr
各種アプリケーションとそれに付随するファイルを格納するディレクトリ。
追加でインストールしたアプリの実行ファイルやドキュメント、ライブラリなどが配置される。
/var
変化が大きいファイルなどを格納するディレクトリ。
変化とはシステムが稼働することによって発生する各種ログファイルなど。
その特徴から容量を圧迫する可能性もあり、管理上の注意が必要。
/boot
システム起動(ブート)に必要なファイルが配置されるディレクトリ。
ブートローダのgrubフォルダなどもここにある。grubについてはまた今度。
/lib
カーネルモジュールファイルとプログラムファイルに必要な各種ライブラリを配置するディレクトリ。
/mnt
ユーザがマウントを行うマウントポイントとして使用するディレクトリ。
/media
DVDやCD-ROMなどのメディアをシステムがマウントするパスとして使用するディレクトリ。
メディアの内容がディレクトリに展開される。
/opt
追加でインストールしたアプリケーションを格納するディレクトリ。
/proc
現在実行されているプロセスの情報が格納されているディレクトリ。
実行されているプロセスなので、メモリ上に展開された仮想ファイルとなる。
/root
rootユーザ用のホームディレクトリ。
用途的には通常ユーザのと同様の使われ方。
Linuxにおけるパーティション
Linuxのハードディスクは論理的に分割されたパーティションによって分割され管理されている。
・パーティション
コンピュータのハードディスクのパーティション (Partition) とは、ハードディスクの記憶領域を論理的に分割すること、あるいは分割された個々の領域を指す。パーティションを作成することをパーティショニング (Partitioning) ともいう。
ディスクパーティショニングは基本的な技術であり、論理ボリュームマネージャに発展したと見ることもできる。
※いろいろ調べまわっていたら、実践的には最近のシステムではパーティションの区切りよりもHDD故障の方に注意すべきでパーティションはそんなに細かく分けなくてもいいよなんてのも見ました。考え方だけ覚えておけばいいのかもしれません。
パーティション自体はWindowsPCにもあるCドライブとかDドライブの区切りのこと。
Linuxでのパーティションについてはこれから少し詳しく見ていきます。
必須パーティション
Linuxの起動には最低限以下の2つのパーティションが必要と言われています。
・ルートパーティション ( / ):ルートファイルシステムを割り当てるパーティション
・スワップ領域:物理メモリ不足時に、仮想的なメモリ領域として一時的に使用するパーティション
パーティションとディレクトリ
Linuxでは以下のような思想でディレクトリがパーティションで分割されています。
・柔軟なシステム管理を行うため
・ディスクに障害が発生した際に被害を最小限に抑えるため
・障害発生時の復旧作業をスムーズに行えるようにするため
ようはディスクの一部分が壊れたときにアプリのデータが保持できるようにとか。
アプリのデータがシステム稼働に必要な領域を圧迫しないようにとかって感じですかね。
試験的にはパーティションの設計などは丸々覚えるのも手ですが、
ディレクトリの役割と設計の思想が分かっていれば比較的答えが導けるのではないかと思っています。
上記のような観点から以下のディレクトリはパーティションをルートファイルシステムから分割し独立されることが推奨されています。
・/home
・/var
・/usr
・/boot
・/tmp
・スワップ領域
またそれとは逆に、システム起動に必要な以下のディレクトリはルートファイルシステムから分割することができません。
・ルートから分割できないディレクトリ
・/bin
・/sbin
・/etc
・/lib
・/dev
・パーティション分割の例
MBRの場合、基本パーティションの数は4つに限られているため、それ以上に分ける場合には拡張パーティションとして設定する。
また「/boot」はシステム起動に関わるものではあるが、分割が推奨されているのはbootの際に必要なファイルが格納されているため、他のディレクトリに障害などが発生した場合にも「/boot」を分割することで最低限bootができるようにするためと考えた。
細かいところはコマンドも含めてまた別の項で。
・実機の例
[wantan@docker-host ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 16G 0 disk tqsda1 8:1 0 1G 0 part /boot mqsda2 8:2 0 15G 0 part ┠centos-root 253:0 0 13.4G 0 lvm / ┗mqcentos-swap 253:1 0 1.6G 0 lvm [SWAP] sr0 11:0 1 1024M 0 rom
パーティションの容量設計
パーティションには推奨される容量があります。
この辺はなじみがないと感覚的に分かりにくいかもしれません。(私がそう)
■SWAP
SWAP領域の容量はマシンのメモリに応じて割り当てる容量を決めるのが定石となっています。
メモリサイズの等倍から2倍を基準として例えば以下ぐらいとなっています。
メモリ | SWAP |
---|---|
2GB 以下 | RAM 容量の 2 倍 |
2GB から 8GB | 等倍 |
8GB から 64GB | 最低 4GB |
64GB 以上 | 最低 4GB |
■/boot
試験的にはおまけ程度?
100MBとか250MBとか。起動に必要な分はしっかり確保しておきましょうぐらい。
■/root
ext2/ext3/ext4ファイルシステムの場合はrootユーザ用に全体の5%が必要。
必要というよりは予約領域として確保されるらしく、全体容量が大きい場合などにはパーセンテージを再設定することもできると。
LPICレベル1というよりはレベル2ぐらいの内容っぽい。
参考:9.15.5. パーティション設定に関する推奨 Red Hat Enterprise Linux 6 | Red Hat Customer Portal
その他関連情報
レベル1的にはそこまで重要ではないっぽい内容。参考程度で。
ESP(EFIシステムパーティション)
EFIシステムパーティション (EFI system partition; ESP) とはデータ記憶装置(ハードディスクドライブやソリッドステートドライブなど)のパーティションの一つで、UEFIに準拠するコンピュータで使われる。コンピュータの電源を入れて起動するとき、UEFIファームウェアはESPに記憶されているファイルを読み込み、インストールされているオペレーティングシステムや様々なユーティリティをブートする。
引用元:EFIシステムパーティション - Wikipedia
ブートローダにBIOSではなく、UFFIを採用しているシステムで使用される。
UFFIシステムの場合はパーティションもEFIとその他のパーティションという考え方になるらしい。
LVM(論理ボリュームマネージャ)
論理ボリュームマネージャ(ろんりボリュームマネージャ、logical volume manager、LVM)は、「物理ボリューム」を提供するハードディスクなどのストレージメディア・デバイス(補助記憶装置)に、直接ファイルシステムをマップするのではなく、粗粒度(典型的には、メビバイト単位程度)のブロックにより一旦「論理ボリューム」と呼ばれる仮想化されたボリュームに束ねて利用するためのシステムである。一般的な議論については、英語版の en:Logical volume management の記事を参照のこと。この記事では、HP-UX由来で、いくつかの商用UNIXとGNU/Linuxシステムで使われている一連の実装としてのLVMについて述べる。
物理的ボリュームを束ねることによって、ボリュームグループを生成しそこから論理的に区切ることによって適切なサイズで切り出し提供する。
これによって柔軟に管理が行えるようになる。
レベル1的には一応知っておいてほとんど気にしなくてもいい模様。
-------------
・前回(第三回)
www.wantanblog.com
・次回(第五回)
www.wantanblog.com