LPIC あずき本v5.0 ch5 デバイスとLinuxファイルシステム ch5.2-ch5.4
ファイルシステムの管理
- TODO: 雑なのでそのうち勉強しなおす
ディスクの利用状況の確認
- ファイルシステムに書き込めなくなった場合、すみやかに原因を特定して復旧しなければならない
- 空き容量不足
- iノード枯渇
df
コマンド- 空き容量確認
du
コマンド- ファイルやディレクトリが占めている容量の確認
ファイルシステムのチェック
fsck
コマンド- ディスクチェック
- 必要であれば修復
- アンマウントするか、読み取り専用でマウントして実施すること
- 書き込み中に実施するとファイルシステムが壊れる
e2fsck
コマンド
ファイルシステムの管理
tune2fs
コマンド
XFS: eXtents File System
ファイルシステムのマウントとアンマウント
マウントの仕組み
- マウント
- マウントポイント
/etc/fstabファイル
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda2 during installation UUID=bbddb2bb-7fde-4777-88b4-d762aadc173d / ext4 errors=remount-ro 0 1 # /boot/efi was on /dev/sda1 during installation UUID=9A29-BDC2 /boot/efi vfat umask=0077 0 1 /swapfile none swap sw 0 0
- 書式
- UUID: Universally Unique IDentifier
- デバイスの識別に使われる
sudo blkid
... /dev/loop6: TYPE="squashfs" /dev/loop7: TYPE="squashfs" /dev/sda1: UUID="9A29-BDC2" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="5352c0a6-f610-48e5-9887-d63a6e227709" /dev/sda2: UUID="bbddb2bb-7fde-4777-88b4-d762aadc173d" TYPE="ext4" PARTUUID="78d3dda3-2950-49fe-bf58-0ed9282a458f" /dev/loop8: TYPE="squashfs" /dev/loop9: TYPE="squashfs" ...
マウントとアンマウント
mount
MOUNT(8) System Administration MOUNT(8) NAME mount - mount a filesystem SYNOPSIS mount [-l|-h|-V] mount -a [-fFnrsvw] [-t fstype] [-O optlist] mount [-fnrsvw] [-o options] device|dir mount [-fnrsvw] [-t fstype] [-o options] device dir
- マウント情報取得
mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,relatime,size=4000356k,nr_inodes=1000089,mode=755) ...
- USBメモリをマウントしたときのコマンド備忘録
sudo mkdir /mnt/sdb1 sudo mount /dev/sdb1 /mnt/sdb1 df -a
/mnt
を使うのは間違っている気がする/media
を使うのが正しそう
...
+ /dev/sdb1 7558460 343500 7214960 5% /mnt/sdb1
- デバイスファイルとマウントポイントのどちらかを省略すると、
/etc/fstab
を参照して補完する /etc/fstab
にしたがって全マウント
sudo mount -a
umount
- ファイルシステムをアンマウント
sudo umount /mnt/sdb1
/etc/mtab
- マウントされているファイルシステムの情報が格納されている
ls -l /etc/mtab
/proc
下ファイル(に見えるやつ)へのシンボリックリンクだった
lrwxrwxrwx 1 root root 19 2019-02-24 02:13 /etc/mtab -> ../proc/self/mounts
/etc/mtab
ファイルに記述されているファイルシステムを全アンマウント
sudo umount -a
ディスククォータの管理
- LPIC 101 ver5.0で丸ごと消えた
- そのうち勉強する
クォータの制限
クォータの適用
クォータの管理コマンド
quota
quotacheck
quotaon
quotaoff
edquota
repquota
ファイルの配置と検索
FHS: Filesytem Hierarchy Standard(ファイルシステム階層標準)
- ファイルシステム内のレイアウトの標準
/bin
- 基本的なコマンド配置
- 一般ユーザでも実行可能
/sbin
- システム管理に必須のコマンドが配置
- rootのみ実行可能
/etc
- 設定ファイル、スクリプトファイル等
/dev
- デバイスファイルが配置される
- udev: Userspace DEVice management の仕組みにより自動配置
/lib
- 共有ライブラリ
- カーネルモジュール
- とりわけ、
/bin
,/sbin
にあるコマンドが必要とするもの
/media
- リムーバブルメディアのマウントポイント
/mnt
- 一時的にマウントするファイルシステムのマウントポイント
/opt
- パッケージ管理の仕組みを使ってプログラムがインストールされる
- ディストリによっては無い
/proc
/root
- root氏の
~
- オプション
/home
と分けるメリット/home
がマウントできなくなってもシステムのメンテをできる
/boot
/home
- 一般ユーザの
~
- オプション
- 独立したファイルシステムにするメリット
- クォータを設定できる
- 保守性向上
/tmp
/var
- 頻繁に書き換えられる
/var/cache
- 一時的なキャッシュファイル
man
コマンドで表示するために整形したデータ等
/var/lock
- 排他制御用ファイルを配置
/var/log
- ログ書き出し
/var/run
- システムの状態を示すファイル
*.pid
ファイルにはPIDが格納されているkill
コマンドに渡したりできる
- ソケットファイルとかも
*.sock
/var/spool
- 処理待ちデータ
- 印刷待ちデータ
/var/spool/lpd
- 予約されたジョブ
/var/spool/at
- 印刷待ちデータ
/usr
- コマンドやユーティリティ
/usr/bin
- ユーザーが一般的に使うコマンド
- 緊急時のシステム保守に必須ではないもの
/usr/sbin
- システム管理コマンド
- 緊急時のシステム保守に必須ではないもの
/usr/lib
- プログラムに必須な共有ライブラリ
/usr/local
- ローカルシステムで必要とされるもの
- コマンド
- ライブラリ
- ドキュメント
- さらにbin, sbin, lib等細分
/usr/share
- アーキテクチャ非依存のファイル
/usr/share/man
man
コマンドで使うマニュアル
/usr/src
ファイルの検索
find
FIND(1) General Commands Manual FIND(1) NAME find - search for files in a directory hierarchy SYNOPSIS find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting- point...] [expression]
- 指定したディレクトリ以下、検索式によりファイルやディレクトリを検索
- 検索式(expression)
-name ファイル名
- ファイル名検索
-atime n
- アクセス時刻が
n*24
時間以内
- アクセス時刻が
-mtime n
- 更新時刻が
n*24
時間以内
- 更新時刻が
-perm [/-]?mode
- アクセス権で検索
mode
: 完全一致-mode
: 包含/mode
: どれか含まれる
- アクセス権で検索
-size n[cwbkMG]?
- ファイルサイズで検索
- デフォルト
b
...512バイトブロック単位 c
: char ... 1バイトw
: word ... 2バイトk
,M
,G
: KiB, MiB, GiB
-type c
-user uname
,-group gname
- 所有ユーザ、グループで検索
-exec command {} \;
- マッチしたファイルに対してコマンド実行
xargs
的なことできる
-ok command {} \;
- マッチしたファイルに対してコマンド実行
- プロンプト
locate
find
よりも速い検索- 検索データベースを更新しておく必要あり
updatedb
locate
で使用するデータベースの更新- 多くのディストリで
cron
で定期実行されるそう
/etc/cron.daily/mlocate
#! /bin/bash set -e [ -x /usr/bin/updatedb.mlocate ] || exit 0 if which on_ac_power >/dev/null 2>&1; then ON_BATTERY=0 on_ac_power >/dev/null 2>&1 || ON_BATTERY=$? if [ "$ON_BATTERY" -eq 1 ]; then exit 0 fi fi # See ionice(1) if [ -x /usr/bin/ionice ] && /usr/bin/ionice -c3 true 2>/dev/null; then IONICE="/usr/bin/ionice -c3" fi # See nocache(1) NOCACHE= if [ -x /usr/bin/nocache ]; then NOCACHE="/usr/bin/nocache" fi flock --nonblock /run/mlocate.daily.lock $NOCACHE $IONICE /usr/bin/updatedb.mlocate
- 設定
/etc/updatedb.conf
PRUNE_BIND_MOUNTS="yes" # PRUNENAMES=".git .bzr .hg .svn" PRUNEPATHS="/tmp /var/spool /media /var/lib/os-prober /var/lib/ceph /home/.ecryptfs /var/lib/schroot" PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs devtmpfs fuse.mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ceph fuse.ceph fuse.rozofs ecryptfs fusesmb"
which
whereis
- 指定されたコマンドについて、下記構成要素のパスを検索
- バイナリ
- ソースコード
- 設定ファイル
- マニュアル
whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
type
type type
type はシェル組み込み関数です
type bash
bash は /bin/bash です
type ls
ls は `ls --color=auto' のエイリアスです