SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【LPIC101】 ディレクトリ構成とパーティションの基本 LPICで学ぶLinux④

www.wantanblog.com

ディレクトリ構成

先に軽く復習。まずは感覚でもいいからおさえるべき。

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

デバイスファイルを格納するディレクトリ。
マウスとかインタフェースの管理、詳しくは以下も参照。

www.wantanblog.com

/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について述べる。

引用元:論理ボリュームマネージャ - Wikipedia

物理的ボリュームを束ねることによって、ボリュームグループを生成しそこから論理的に区切ることによって適切なサイズで切り出し提供する。
これによって柔軟に管理が行えるようになる。

f:id:wantanBlog:20200620032954p:plain

レベル1的には一応知っておいてほとんど気にしなくてもいい模様。


-------------

参考:Linux - ハードディスクのレイアウト設計


・前回(第三回)
www.wantanblog.com