(Linuxの基本1)Linuxのパーティショニング、ファイルシステム

数年Linuxを使用してそれなりに慣れ親しんだのですが、このへんで知識を総まとめしておいたほうが良いと考え「Linuxの基本」と題しておさらいをやっております。今更?って驚かないでほしいし、自分なりの理解を書いているので「間違い」と思われるものもあると思います。ツッコミは大歓迎しますので、よろしくおねがいします。

第1回は「Linuxのファイルシステム」を中心にしました。

1.HDDのパーティショニング、フォーマットとは

購入してきたばかりのHDDは未開拓の原野のようなもので、ここに境界を作り縄を張り、これを不動産登記簿に登記しなければなりません。これがパーティショニング(領域確保)です。

fdisk、cgdisk コマンドに /dev/sda などのドライブ名の引数を渡してやって領域を確保します。

2.Linuxのファイルシステム、ディレクトリ構造とその役割

次に、あっちはグランド、こっちは宅地などのように区画を分けて、それぞれに適した土地に仕立て上げる必要があります。

これが mkfs コマンドで、この作業を通常はフォーマットと読んでいますが、Linuxのファイルシステムを作成することです。

HDD(二次記憶装置)にはルートファイルシステムとスワップ領域が確保される必要がある

この ルートファイルシステムによって全体がツリー構造を持ったディレクトリ、ファイルで管理されている。

https://ja.wikipedia.org/wiki/Filesystem_Hierarchy_Standardを参照。

ファイルシステムディレクトリその役割
swap  メモリ(一時記憶装置)の退避(※)
root file system/ root ディレクトリ ↓その配下のディレクトリ
 bin基本的なコマンドの実行ファイル
 sbinシステム管理者が利用するコマンド
 lib共有ライブラリ
 etcシステムの環境設定ファイル
 devデバイスファイル
 bootLinuxの起動ファイル
 procデバイスやプロセス情報などが参照するためのファイル
 usr共有ファイル
 home一般ユーザのホームディレクトリ
 rootシステム管理者(root)のホームディレクトリ
 varログなど常に内容が変更するファイルなど
 tmp一時ファイル。再起動で消滅。
※ スワップ領域を確保せず、」スワップファイル」というファイルで同一の機能をもたせる方法もあります。

ちなみにこの構成を基本としながらも、ディストリビューションによって異なっている。

ArchLinuxの場合は binやsbin、libが全て/usr/ の配下に集約されている。ユーザが基本的なコマンド、システム管理者のコマンドなどと意識しないで操作できるので、このほうが合理的に思える。

# ls -al

drwxr-xr-x  17 root root  4096 Aug 28 17:49 .
drwxr-xr-x  17 root root  4096 Aug 28 17:49 ..
lrwxrwxrwx   1 root root     7 Aug 21 23:21 bin -> usr/bin
drwxr-xr-x   4 root root  4096 Sep 21 08:36 boot
drwxr-xr-x  21 root root  3440 Sep 27 02:28 dev
drwxr-xr-x  82 root root  4096 Sep 21 08:42 etc
drwxr-xr-x   4 root root  4096 Oct 26  2017 home
lrwxrwxrwx   1 root root     7 Aug 21 23:21 lib -> usr/lib
lrwxrwxrwx   1 root root     7 Aug 21 23:21 lib64 -> usr/lib
drwx------   2 root root 16384 Oct 26  2017 lost+found
drwxr-xr-x   2 root root  4096 Mar 27  2017 mnt
drwxr-xr-x   6 root root  4096 May  9 11:31 opt
dr-xr-xr-x 224 root root     0 Sep 27 02:28 proc
drwxr-x---   6 root root  4096 Nov  2  2017 root
drwxr-xr-x  23 root root   640 Sep 27 02:28 run
lrwxrwxrwx   1 root root     7 Aug 21 23:21 sbin -> usr/bin
drwxr-xr-x   4 root root  4096 Oct 26  2017 srv
dr-xr-xr-x  13 root root     0 Sep 27 02:28 sys
drwxrwxrwt  14 root root   500 Sep 27 07:00 tmp
drwxr-xr-x   9 root root  4096 Sep 21 08:41 usr
drwxr-xr-x  12 root root  4096 Sep 21 08:42 var

一台のHDDの領域を分けてfile systm を構築するだけでなく、別のHDDにfile system作成することも可能。それを /homeや /var に割り当てるのが合理的だと思われる。

 3.ファイルシステムの種類

(1)Linuxのファイルシステムには主に 8 種類が用意されている

通常は迷わずext4を使用すればよい。

ファイルシステム名その機能
ext長いファイル名、大きなiノードに対応したローカルファイルシステム
ext2extの拡張
ext3ext2の拡張。アクセスログを記録するジャーナリングなどの機能を持つ
ext4ext3の拡張。最大16Tiビットのファイル、最大1Eiビットの領域をサポート
XFS大規模データを効率良く扱える高性能ファイルシステム
BtrfsXFS以上の高信頼性なスナップショットなどの機能を持つ
VFATWindowsパーティションであるFAT互換
LVM補助記憶装置の上に「論理ボリューム」と呼ばれる仮想化されたボリュームに束ねて利用するためのシステム。物理的なドライブを束ねて取り扱うことができる

注:iノードとは、VFSの一機能で、ファイルに関する様々な上を含んでいる構造化されたデータ領域で、iノード番号やファイル名が書かれている。OSは ファイルの特定にこのiノード番号を用いる。

(2)VFS(Virtual File System)

異なったファイルシステムだけでなく、様々なデバイスへもファイルのようにアクセスできるのは、ファイルシステムやデバイスとユーザの間に介在し、「ファイルの抽象化」を担っているVFSの機能

https://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0参照

3.mkfs、mkswap コマンドのオプション、引数

(1)mkfs -t ファイルシステムタイプ デバイスファイル名

【使用例】

# mkfs -t ext4 /dev/sdb1

注:-t オプションのあとに  ext4などの引数を渡すと、mkfs.ext4コマンドが呼び出されることになるが、mkfs.ext4コマンドを直接実行することもできる。

(2)mkswap デバイスファイル名

【使用例】

# mkswap /dev/sdb2

 4.マウント作業

ここまででHDDに物理的区画を決め、それにファイルシステムを作成できました。でもこれだけではまだ不十分です。生活道具や工作機械(コマンド群)を収める家や納屋(ディレクトリ)とファイルシステムを関連付ける必要があります。これをマウントという。また外付けデバイスを取り外す場合はマウントを解除しますが、これはアンマウントと呼ぶ。

(1)マウントできるのは、ext ext2 ext3 ext4 XFS Bttrfs VFATファイルシステムの他、以下のものがある

  • CIFS — Windowネットワーク共有のファイルシステム
  • ISO9660 — CD-ROMドライブのファイルシステム
  • UDF — DVD-ROMドライブのファイルシステム

(2)mount -t マウントするファイルシステム デバイスファイル名 マウントするディレクトリ(マウントポイント)

【使用例】

CD-ROMのファイルシステムiso9660 を /media にマウント

 # mount -t iso9660 /dev/cdrom /media

(3)umount マウントポイントのディレクトリ名

# umount /media

(4)swapon(swapoff) デバイス名

# swapon /dev/sdb2

# swapoff /dev/sdb2

5.マウントの自動登録

起動ごとに重要なディレクトリを手動でマウントしていたら面倒でしょうがない。そこで自動でマウントする機能が fstab ファイル。ここに記載すれば起動ごとに自動的にマウントしてくれる。

最近では、/dev/sdx 型ではなく UUID でマウントするのが通常。これだとドライブがユニークドライブ名が使われている。

https://wiki.archlinux.jp/index.php/%E6%B0%B8%E7%B6%9A%E7%9A%84%E3%81%AA%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AE%E5%91%BD%E5%90%8D#by-uuid

$ cat /etc/fstab

# setting example

# UUID=497e6d6b-cd7c-41ad-8ba7-6085da304ca4
/dev/sda2 / ext4      	rw,relatime,data=ordered	0 1

# UUID=5665-EEE9
/dev/sda1  /boot/efi vfat      	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro	0 2

# UUID=5634a1d7-6abf-4a51-a2ab-36db3b43538a
/dev/sda3    none  swap      	defaults  	0 0

# 解説-----------------------------------------
# 書式は filesystem dir type option dump pass

# filesystem_ マウントしたいデバイスのファイル
# dir マウントポイント
# type マウントするシステムのタイプ
# option マウント時のオプション
# dump dumpコマンドによるバックアップ対象
[0]対象としない[0以外の数値]バックアップ対象
# pass ファイルシステムの整合性をチェック
[0]実行しない[1]ルートファイルシステムをチェック[2]その他のファイルシステムをチェック

第2回に続きます

コメント

タイトルとURLをコピーしました