101−5デバイスとLinuxファイルシステム

デバイスファイル

sda第 1 ハードディスク
sdb第 2 ハードディスク
sda1最初のハードディスクの最初のパーティション
sdb72番目のハードディスクの7番目のパーティション
sr0第 1 CD-ROM
sr1第 1 CD-ROM

ブロックデバイス (block device)
           データのまとまりごとに処理をするデバイス。ハードディスクやSSD等
           lsblk:ブロックデバイスを一覧表示する
キャラクタデバイス (character device)
           ひとつの文字(単位)ごとに処理をするデバイス。キーボードやマウス等

パーティションの種類

・BIOSとMBRによる管理の場合
    ・基本パーティション:最大4個
    ・拡張パーティション:基本パーティション一つを拡張パーティションにすることが可能
    ・論理パーティション:拡張パーティション内に作られたパーティション。最大12個
               作成済基本パーティションの数に関わらず/dev/sda5となる。

・パーティション分割のメリット
    ・システムに障害が発生した場合障害による被害を1つのパーティションに限定できる
    ・バックアップしやすい。

ルートファイルシステム

・Linuxのディレクトリはツリー状の階層構造になっている。
・ディレクトリツリーの頂点となるのが/ディレクトリ。
・ルートファイルシステム用の現実的な最小のディレクトリ

ディレクトリ説明パーティションの分離
/bin /sbinシステムに必要なコマンド、プログラム不可
/etc システム設定ファイル不可
/lib プログラム実行に使う共有ライブラリ不可
/devデバイス,I/O の実行に必要不可
/usrその他のユーティリティやアプリケーション
/procproc ファイルシステムに必要なディレクトリ
/mnt 他のディスクを扱うためのマウントポイント

パーティション管理コマンド

・fdisk [−l] デバイス名

操作コマンド
lパーティションタイプを一覧表示する。
nパーティションを作成する。
dパーティションを作成する。
pパーティションテーブルを作成する。
tパーティションタイプを変更する。
aブートフラグのオン/オフを切り替える
wパーティションテーブルの変更を保存して終了する。
qパーティションテーブルの変更を保存しないで終了する。
mヘルプメニューを表示する。

・gdisk [−l] デバイス名: GPTに対応したパーティションを作成。
              容量2TB以上。パーティション128個作成可能
・partedデバイス名 [−sサブコマンド]: 管理方式MBRとGPTの両方に対応。

mklabel [gpt | msdos]新しいパーティションテーブルを作成。
mkpart 種類 開始 終了指定した種類のパーティションを作成
printパーティション情報を表示する
quitpartedを終了する
rm パーティション番号指定した番号のパーティションを削除する
help利用できるコマンドを表示する

ファイルシステムの作成

・ファイルシステムの種類: 

ファイルシステム説明
ext2 Linuxの標準ファイルシステム
ext3 ext2にジャーナルリンク機能を加えたファイルシステム
ext4 ext3を機能拡張したファイルシステム
XFS SGI社が開発したジャーナルリンクファイルシステム
JFS IBM社が開発したジャーナルリンクファイルシステム
Btrfs 高度な機能を備えたファイルシステム
iso9660 CD-ROMのファイルシステム

・mkfs [オプション] デバイス名: ファイルシステムを作成する

オプション意味
-tファイルシステムのタイプを指定。
指定しなかった場合は、ext2が用いられる。
-cファイルシステムを作成する前にデバイスに対して
不良ブロックの検査を行う。

・mkfs [オプション] デバイス名: ext2/ext3/ext4ファイルシステムを作成する

オプション意味
-t(ファイルシステムタイプ)
ext2,ext3,ext4
ファイルシステムのタイプを指定。
指定しなかった場合は、ext2が用いられる。
-jext3のファイルシステムを作成。
-c実行前に不良ブロックを検査する

・mkswap [オプション] device/swapfile: スワップ(swap)領域を作成する

オプション意味
-cスワップ領域を作る前に、デバイスに対して不良ブロックのチェックを行う。
不良ブロックが見つかった際は、そのカウント数を表示する。
-L labelラベルを指定し、そのラベルで swapon できるようにする。

ファイルシステムの管理

・df [オプション] [ファイル]: ディスクの空き領域を表示する

オプション意味
-hサイズに応じて読みやすい単位で表示する
-H読みやすい単位で表示する。1000単位の値を使用する
-k–block-size=1Kと同じ
-iブロック使用量の代わりにiノード情報を表示する
-aダミーファイルシステムを含めて表示する

・du [オプション] ディレクトリ・ファイル: ファイルのディスク使用量を表示するコマンド

オプション名説明
-a, –allディレクトリ以外にファイルについても表示する。
-l, –count-linksリンクを含めて集計する。
-c, –total全ての容量の合計を表示します。
-k, –kilobytesキロバイト単位で表示します。
-m, –megabytesメガバイト単位で表示します。
-s, –summarize指定したファイルやディレクトリのみに合計を表示します。
-S, –separate-dirsサブディレクトリを含めて表示する。
-h, –human-readable容量を読みやすい単位で表示する

・fsck [オプション]デバイス名: ファイルシステムを検査、修復するコマンド

オプション意味
-t ファイルシステム名ファイルシステムの種類を指定する(無指定時は自動判定)
-a自動的に修復を実行する
-A /etc/fstabにあるファイルシステムを全て検査する
-r対話的に修復を実行する
-N実際には処理を実行せず、何を行うかだけを表示する

・e2fsck [オプション]デバイス名: ext2,ext3,ext4ファイルシステムを検査、修復するコマンド

-p問い合せなしで自動的にファイルシステムの修復を行う
-yすべての問い合せにyesと応答する
-nファイルシステムに変更を加えない(チェックのみ)

・tune2fs [オプション]デバイス名: ext2、ext3、ext4ファイルシステムのパラメータを変更する

オプション意味
-c 回数チェック無しでマウント出来る最大回数を指定する
-i 間隔ファイルシステムを検査する間隔を整数で指定する
-jext2ファイルシステムをext3ファイルシステムに変換する
-L ラベルボリュームラベルを設定する

・XFS: ext2、ext3、ext4ファイルシステムのパラメータを変更する

コマンド意味
mkfs.xfsXFSファイルシステムを作成する
xfs_infoXFSファイルシステムの情報を表示する
xsf_dbXFSファイルシステムのデバッグを行う
xfs_checkXFSファイルシステムをチェックする
xfs_adminXFSファイルシステムのパラメータを変更する
xfs_fsrXFSファイルシステムのデフラグを行う
xfs_repairXFSファイルシステムを修復する

ファイルシステムのマウントとアンマウント

・/etc/fstab: ファイルシステムの情報を保存しているファイル

項番フィールド設定内容
マウントするデバイスファイル名 マウントするデバイスファイル名またはボリュームラベルを指定
マウントポイント マウントポイントとなるディレクトリの絶対パスを指定
ファイルシステムの種類 ①のファイルシステムの指定。下表1を参照。
マウントオプション ①のマウントオプションの指定。下表2を参照。
dump dumpコマンドによるバックアップ対象となるかどうかを指定
 0 : バックアップする必要がない
 1 : バックアップする必要がある
fsck システム起動時にfsckコマンドでチェックを行う時の順序を指定
 0 : fsckコマンドでファイルシステムをチェックしない
 1 : ルートファイルシステム ( / ) に指定する数値
 2以上 : その他のファイルシステムに指定する数値
ファイルシステム説明
ext2 Linuxの標準ファイルシステム
ext3 ext2の機能拡張版 ( 現在の主流 )
ext4 ext2の機能拡張版 ( 現在の主流 )
reiserfs 高速なジャーナリングファイルシステム
xfs SGI 開発によるジャーナリングファイルシステム
jfs IBM 開発によるジャーナリングファイルシステム
iso9660 CD-ROMのファイルシステム
msdos MS-DOSのファイルシステム
オプション説明
async ファイルシステムの入出力を非同期で実行
auto mount -a コマンドの実行時にマウントする
noauto mount -a コマンドの実行時にマウントしない
defaults デフォルトのオプションを設定 ( async、auto、dev、exec、nouser、rw、suid )
exec バイナリの実行を許可
noexec バイナリの実行を禁止
ro 読み取り専用モードでマウント 
rw 読み書き可能モードでマウント
unhide 隠しファイルも表示
suid SUIDとSGIDの有効化
user 一般ユーザーにマウントを許可する
users マウントを実行していないユーザにもアンマウントを許可
nouser 一般ユーザーのマウントを許可しない

・mount [オプション] デバイス [マウントポイント]: ファイルシステムをマウントする

-a/etc/fstabに記載されているファイルシステムを全てマウント。
-t ファイルタイプファイルタイプを指定します。
-o マウントオプションマウントする際のオプション(読み込み専用など)を指定。

・umount [オプション] デバイス名またはマウントポイント: ファイルシステムをアンマウントする

-a/etc/fstabに記載されているファイルシステムを全てアンマウント。
-t ファイルタイプ指定した種類のファイルシステムのみアンマウント。

FHS(Filesystem Hierarchy Standard)

/ (ルートディレクトリ) 
├──  bin   : 基本的なコマンドファイル
├──  boot  : 初期起動時に必要な処理の設定ファイル
├──  dev   : デバイスファイル
├──  etc   : システムに関わる設定ファイル
├──  home  : 各ユーザーのディレクトリ
├──  lib   : 共有ライブラリファイル
├──  media : リムーバブル媒体のマウントポイント
├──  mnt   : 一時的なマウントポイント
├──  opt   : ソフトウェアやパッケージなどのプログラムが
├──  proc  : カーネルやプロセス情報にアクセスできる仮想的なファイルシステム
├──  root  : スーパーユーザーである「root」のホームディレクトリ
├──  run   : 動作させた時に実行される一時的なデータ
├──  sbin  : システムに関するコマンドファイル
├──  tmp   : テンポラリファイル(一時的に作成されるファイル)
├──  usr   : ユーザー共有のコマンドやライブラリ
└──  var   : ログファイルやスプールファイル

・find [パス] [検索条件]: ファイルを検索するコマンド

-maxdepth レベル 指定したパスから数えて、最大何段階下まで検索するかを指定。
-mindepth レベル指定したパスから数えて、何段階下まで検索しないかを指定。
-mountマウントしている他のファイルシステムを検索対象から除外。
-name 文字列指定した文字列のファイルやディレクトリ。
-atime nファイルの最終アクセス日時がn日前。
-mtime nファイルの最終修正日時がn日前。
-perm モード指定したモードにマッチするファイル。
-size サイズ指定したサイズより大きい。
-type ファイルタイプ ファイルタイプを指定。
b ブロックファイル / c キャラクタファイル / d ディレクトリ
f ファイル / l シンボリックリンク / s ソケット
-user ユーザーファイルの所有者で検索。
-printフルパスのファイル名を標準出力に表示。
-exec コマンド ;見つけたファイルを引数にコマンドを実行する

・updatedb [オプション] : あらかじめ作成されたファイル名データベースに基づいて、
              指定されたパターンにマッチするファイルを検索

-eパスデータベースに取り込まないパスを指定する

・which [オプション] コマンド名 : 実行コマンドのフルパスを表示する

オプション意味
-a環境変数PATHにある全ての実行ファイルを表示する
-i標準入力からエイリアスを読み込み、合致したものを表示する

・whereis [オプション] コマンド : コマンド本体と関連ファイルを検索する

オプション意味
-bバイナリファイル(コマンド本体やライブラリなど)だけを探す
-mマニュアルファイルだけを探す
-sソースファイルだけを探す

・type [オプション] コマンド名 : シェルがどのコマンドを起動しているかを知る