104.2 レッスン 1
Certificate: |
LPIC-1 |
---|---|
Version: |
5.0 |
Topic: |
104 デバイス、Linuxファイルシステム、ファイルシステム階層標準 |
Objective: |
104.2 ファイルシステムの整合性を維持する |
Lesson: |
1 of 1 |
はじめに
最近のLinuxファイルシステムは、ジャーナリングファイルシステムです。ファイルシステム操作をいったんログ(ジャーナル)に記録して、後に(ファイルシステム管理において非常に重要な)メタデータをまとめて書き換えます。これにより、カーネルパニックや電源喪失などのシステムエラーにより処理が中断した場合であっても、ジャーナルの記録を参照して処理をやり直すことでメタデータの整合性を維持して、ファイルシステム全体の破損を防ぎます。
この仕組みのおかげでファイルシステムの整合性をチェックをする頻度を大幅に減らすことができますが、それでも手動でチェックを行う必要があり得ます。現れる症状は実にさまざまですが、たとえばあるディレクトリのファイルにアクセスすると出会ったことがないエラーが表示されるとか、大きなファイルを途中のある位置までしか読み込めないといった不可解な状況に出会ったときには、ファイルシステムのチェックを行ってみるとよいでしょう。
このレッスンでは、ファイルシステム管理の第一歩として、まずファイルシステムの使用量を監視するツールを紹介します。その後に、ファイルシステムの破損をチェックして修復する方法を説明します。
ディスク使用量の確認
ファイルシステムの使用量を表示する du
(Disk Usage)コマンドと、空き容量を表示する df
(Disk Free) コマンドを紹介します。
du
は、引数に指定したディレクトリが使用している容量を表示するコマンドです。引数を省略した場合には、カレントディレクトリを指定したものとみなして、そこに含まれるすべてのファイルならびにサブディレクトリが使用しているディスク容量をキロバイト単位で表示します。たとえば、いくつかのファイルだけが存在するディレクトリで du
コマンドを実行すると、それらのファイルが使用している合計量をキロバイト単位で表示します。ファイルの長さの合計ではなく、実際に使用しているディスクブロックの数に基づく容量であることに注意してください。
$ du 4816 .
これではわかりづらいので、-h
オプションを指定して人間が読みやすい(human readable)単位で表示します。
$ du -h 4.8M .
デフォルトではディレクトリが使用している合計量を表示しますが、-a
オプションを指定するとディレクトリ内の各ファイルの使用量を表示します。
$ du -ah 432K ./geminoid.jpg 508K ./Linear_B_Hero.jpg 468K ./LG-G8S-ThinQ-Mirror-White.jpg 656K ./LG-G8S-ThinQ-Range.jpg 60K ./Stranger3_Titulo.png 108K ./Baidu_Banho.jpg 324K ./Xiaomi_Mimoji.png 284K ./Mi_CC_9e.jpg 96K ./Mimoji_Comparativo.jpg 32K ./Xiaomi FCC.jpg 484K ./geminoid2.jpg 108K ./Mimoji_Abre.jpg 88K ./Mi8_Hero.jpg 832K ./Tablet_Linear_B.jpg 332K ./Mimoji_Comparativo.png 4.8M .
サブディレクトリがある場合には、その使用量を表示してから、最後に サブディレクトリの使用量を含めて 指定したディレクトリ(この場合はカレントディレクトリ)全体の使用量を表示します。
$ du -h 4.8M ./Temp 6.0M .
上の例では、Temp
サブディレクトリが4.8MBの使用量で、Temp
サブディレクトリを含めたカレントディレクトリが6.0MBの使用量だとわかります。-S
オプションを指定すると、ディレクトリごとに使用量が集計され、親ディレクトリの使用量に、そこに含まれるサブディレクトリの使用量が含まれなくなります(訳注:端数処理の関係で、サブディレクトリを含めた親ディレクトリの使用量からサブディレクトリの合計使用量を引いた値と、-S
オプションを指定して表示される値とが一致しないことがあります)。
$ du -Sh 4.8M ./Temp 1.3M .
Tip
|
オプションは大文字と小文字を区別しますから、 |
-S
オプションと -c
オプションを併用すれば、親ディレクトリ自体の(サブディレクトリを含まない)使用量と、サブディレクトリを含む合計使用量の両方が表示されます。
$ du -Shc 4.8M ./Temp 1.3M . 6.0M total
表示するサブディレクトリの深さは、-d N
オプションを指定することで調整できます。Nは表示する最大深度です。例えば、-d 1
オプションを指定すると、カレントディレクトリとカレントディレクトリ直下のサブディレクトリは表示しますが、サブディレクトリのサブディレクトリ(孫ディレクトリ)以下は表示しません。
-d
オプションなしでは次のように表示します。
$ du -h 216K ./somedir/anotherdir 224K ./somedir 232K .
-d 1
オプションを指定して最大深度を1にすると、次のように表示します(訳注:-d
と数値の間に半角スペースがあってもなくても同じように動作します)。
$ du -h -d1 224K ./somedir 232K .
深度2の anotherdir
を表示していませんが、その使用量は表示しているディレクトリ(somedir)の使用量に含まれています。
ある種のファイルを除外して使用量を知りたい場合には、--exclude="PATTERN"
オプションを指定します。PATTERN
にはグロブパターンを記述します。カレントディレクトリ内のファイルが次のとおりだとします。
$ du -ah 124K ./ASM68K.EXE 2.0M ./Contra.bin 36K ./fixheadr.exe 4.0K ./README.txt 2.1M ./Contra_NEW.bin 4.0K ./Built.bat 8.0K ./Contra_Main.asm 4.2M .
--exclude
を指定して .bin
サフィックスのファイルを除外します。
$ du -ah --exclude="*.bin" 124K ./ASM68K.EXE 36K ./fixheadr.exe 4.0K ./README.txt 4.0K ./Built.bat 8.0K ./Contra_Main.asm 180K .
除外したファイルは、最終行の合計からも除外されています。
空き容量の確認
du
はファイルシステムの使用量を表示しますが、df
コマンドはファイルシステムの空き容量を表示します。
df
コマンドは、システム上で使用できる(マウントされている)ファイルシステムのリストを表示します。サイズ、使用量、空き容量、使用率、マウントポイントを表示します。
$ df Filesystem 1K-blocks Used Available Use% Mounted on udev 2943068 0 2943068 0% /dev tmpfs 595892 2496 593396 1% /run /dev/sda1 110722904 25600600 79454800 25% / tmpfs 2979440 951208 2028232 32% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 2979440 0 2979440 0% /sys/fs/cgroup tmpfs 595888 24 595864 1% /run/user/119 tmpfs 595888 116 595772 1% /run/user/1000 /dev/sdb1 89111 1550 80824 2% /media/carol/part1 /dev/sdb3 83187 1550 75330 3% /media/carol/part3 /dev/sdb2 90827 1921 82045 3% /media/carol/part2 /dev/sdc1 312570036 233740356 78829680 75% /media/carol/Samsung Externo
1KBブロック単位でサイズを表示されてもわかりづらいので、du
と同様に -h
オプションを指定するとわかりやすい出力になります。
$ df -h Filesystem Size Used Avail Use% Mounted on udev 2.9G 0 2.9G 0% /dev tmpfs 582M 2.5M 580M 1% /run /dev/sda1 106G 25G 76G 25% / tmpfs 2.9G 930M 2.0G 32% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup tmpfs 582M 24K 582M 1% /run/user/119 tmpfs 582M 116K 582M 1% /run/user/1000 /dev/sdb1 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 89M 1.9M 81M 3% /media/carol/part2 /dev/sdc1 299G 223G 76G 75% /media/carol/Samsung Externo
-i
オプションを指定すると、ブロックサイズの代わりにinode(iノード)の情報を表示します。inodeというのは、それぞれのファイルのメタデータ(ファイル本体を収めたディスクブロックの位置、所有者、所有グループ、パーミッションなど)を収めたデータ構造で、mkfsでファイルシステムを作成する際に、ディスクサイズに応じて適当な個数の領域が準備されます。ファイルやディレクトリごとに1つのinodeが消費されますので、小さなデータファイルが大量に収められるファイルシステムでは、データ領域が余っているにもかかわらず、inodeが足りないためにファイルを作成できないということもあり得ます。空き容量と合わせて、時々は使用状況をチェックしておきましょう。
$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on udev 737142 547 736595 1% /dev tmpfs 745218 908 744310 1% /run /dev/sda6 6766592 307153 6459439 5% / tmpfs 745218 215 745003 1% /dev/shm tmpfs 745218 4 745214 1% /run/lock tmpfs 745218 18 745200 1% /sys/fs/cgroup /dev/sda1 62464 355 62109 1% /boot tmpfs 745218 43 745175 1% /run/user/1000
-T
オプションを指定すると、それぞれのファイルシステムのタイプも表示します。
$ df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 2.9G 0 2.9G 0% /dev tmpfs tmpfs 582M 2.5M 580M 1% /run /dev/sda1 ext4 106G 25G 76G 25% / tmpfs tmpfs 2.9G 930M 2.0G 32% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup tmpfs tmpfs 582M 24K 582M 1% /run/user/119 tmpfs tmpfs 582M 116K 582M 1% /run/user/1000 /dev/sdb1 ext4 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 ext4 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 ext4 89M 1.9M 81M 3% /media/carol/part2 /dev/sdc1 fuseblk 299G 223G 76G 75% /media/carol/Samsung Externo
ファイルシステムのタイプがわかれば、その情報で出力をフィルタリングできます。-t TYPE
オプションを指定すると指定したタイプだけを、-x TYPE
オプションを指定すると指定したタイプ以外を表示します。次の例を見てみましょう。
tmpfs
ファイルシステム以外を表示します。
$ df -hx tmpfs Filesystem Size Used Avail Use% Mounted on udev 2.9G 0 2.9G 0% /dev /dev/sda1 106G 25G 76G 25% / /dev/sdb1 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 89M 1.9M 81M 3% /media/carol/part2 /dev/sdc1 299G 223G 76G 75% /media/carol/Samsung Externo
ext4
ファイルシステムだけを表示します。
$ df -ht ext4 Filesystem Size Used Avail Use% Mounted on /dev/sda1 106G 25G 76G 25% / /dev/sdb1 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 89M 1.9M 81M 3% /media/carol/part2
df
で --output=
オプションを指定すると、何をどの順番で表示するかをカスタマイズできます。=
の後には出力する項目を ,
(カンマ)区切りで順番に書きます。以下の項目があります。
source
-
ファイルシステムが置かれているデバイス名
fstype
-
ファイルシステムのタイプ
size
-
ファイルシステムのサイズ
used
-
ファイルシステムの使用量
avail
-
ファイルシステムの空き容量
pcent
-
ファイルシステムの使用率
target
-
マウントポイント(ファイルシステムがどこにマウントされているか)
マントポイント、デバイス名、ファイルシステムタイプ、使用率を表示するなら次のコマンドを実行します。
$ df -h --output=target,source,fstype,pcent Mounted on Filesystem Type Use% /dev udev devtmpfs 0% /run tmpfs tmpfs 1% / /dev/sda1 ext4 25% /dev/shm tmpfs tmpfs 32% /run/lock tmpfs tmpfs 0% /sys/fs/cgroup tmpfs tmpfs 0% /run/user/119 tmpfs tmpfs 1% /run/user/1000 tmpfs tmpfs 1% /media/carol/part1 /dev/sdb1 ext4 2% /media/carol/part3 /dev/sdb3 ext4 3% /media/carol/part2 /dev/sdb2 ext4 3% /media/carol/Samsung Externo /dev/sdc1 fuseblk 75%
--output=
オプションの後に以下の項目を指定すると、inodeの情報を表示できます。
itotal
-
ファイルシステムのinode総数
iused
-
ファイルシステムの使用済みinode数
iavail
-
ファイルシステムの空きinode数
ipcent
-
ファイルシステムのinode使用率
デバイス名とタイプに加えて、inodeの総数、使用数、使用率を表示するには、次のコマンドを実行します。
$ df --output=source,fstype,itotal,iused,ipcent Filesystem Type Inodes IUsed IUse% udev devtmpfs 735764 593 1% tmpfs tmpfs 744858 1048 1% /dev/sda1 ext4 7069696 318651 5% tmpfs tmpfs 744858 222 1% tmpfs tmpfs 744858 3 1% tmpfs tmpfs 744858 18 1% tmpfs tmpfs 744858 22 1% tmpfs tmpfs 744858 40 1%
ext2、ext3、ext4ファイルシステムの保守
ファイルシステムの整合性を確認し、必要に応じて修復するには fsck
(FileSystem ChecK)コマンドを使用します。ファイルシステムが正常であることはシステムにとって極めて重要ですから、実行条件や頻度はディストリビューションによって異なりますが、Linuxの起動時には必要に応じて自動的にfsckを実行する仕組みが備わっています。すなわち、手動でfsckを実行することは多くありませんが、システム管理者は何ができるかを知っておく必要があります。
fsck
でファイルシステムの整合性を確認するには、コマンドの引数にチェック対象のデバイス名を指定して実行します。
# fsck /dev/sdb1 fsck from util-linux 2.33.1 e2fsck 1.44.6 (5-Mar-2019) DT_2GB: clean, 20/121920 files, 369880/487680 blocks
Warning
|
マウントされているファイルシステムに対して |
fsck
はファイルシステムのタイプに応じて適切なプログラムを呼び出すラッパーコマンドです。上の例では、ファイルシステムのタイプを指定していないので、ext2/3/4に対応する e2fsck
をデフォルトで呼び出します。
ファイルシステムを指定するには、fsck -t vfat /dev/sdc
のように、-t
オプションに続けてファイルシステムのタイプ名を指定します。あるいは、ファイルシステム固有のユーティリティを直接呼び出しても構いません。例えば、FATファイルシステムなら、fsck.msdos
を実行するということです。
Tip
|
ターミナルで |
fsck
のオプションのうち、利用頻度が高いものを紹介します。
-A
-
/etc/fstab
に記載されているすべてのファイルシステムをチェックします。 -C
-
ファイルシステムのチェック中にプログレスバーを表示します。ext2/3/4でしかプログレスバーは表示されません。
-N
-
呼び出すファイルシステムに固有のプログラム名を表示します。
-R
-
-A
と組み合わせて指定すると、ルートファイルシステムのチェックをスキップします。 -V
-
冗長モードです。通常よりも表示される情報が増えます。
ext2、ext3、ext4ファイルシステムに固有のユーティリティは e2fsck
です(fsck.ext2
、fsck.ext3
、fsck.ext4
はどれも e2fsck
へのシンボリックリンクです)。デフォルトでは対話モードになります。ファイルシステムのエラーが見つかれば、そこでいったん停止して、ユーザーの入力を待ちます。問題を修復するなら y
、そのままにするなら n
、見つかった問題をすべて修復するなら a
と入力します。
サイズの大きなファイルシステムのチェックをするときに、入力を求められるまでターミナルの前で待つのは時間の無駄です。以下のオプションを指定すると、e2fsck
を非対話モードで実行します。
-p
-
見つかったエラーの自動修復を試みます。システム管理者の介在が必要なエラーが見つかった場合には、その説明を表示して終了します。
-y
-
すべての問いに対して
y
(yes)を選択します。 -n
-
-y
とは逆に、すべての問いに対してn
(no)を選択します。ファイルシステムを読み取り専用で開くので、修復は行われません。 -f
-
ファイルシステムがcleanな場合(正常にアンマウントされた場合)でもファイルシステムのチェックを行います。
extファイルシステムの微調整
ext2、ext3、ext4ファイルシステムには必要に応じて調整できるパラメータがあります。パラメータの表示や変更を行うユーティリティは tune2fs
です。
ファイルシステムの現在のパラメータを表示するには、tune2fs
コマンドに -l
オプションとデバイス名を指定して実行します。次の例では最初のディスクの最初のパーティション(/dev/sda1
)のパラメータを表示しています。
# tune2fs -l /dev/sda1 tune2fs 1.44.6 (5-Mar-2019) Filesystem volume name: <none> Last mounted on: / Filesystem UUID: 6e2c12e3-472d-4bac-a257-c49ac07f3761 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 7069696 Block count: 28255605 Reserved block count: 1412780 Free blocks: 23007462 Free inodes: 6801648 First block: 0 Block size: 4096 Fragment size: 4096 Group descriptor size: 64 Reserved GDT blocks: 1024 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 8192 Inode blocks per group: 512 Flex block group size: 16 Filesystem created: Mon Jun 17 13:49:59 2019 Last mount time: Fri Jun 28 21:14:38 2019 Last write time: Mon Jun 17 13:53:39 2019 Mount count: 8 Maximum mount count: -1 Last checked: Mon Jun 17 13:49:59 2019 Check interval: 0 (<none>) Lifetime writes: 20 GB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 32 Desired extra isize: 32 Journal inode: 8 First orphan inode: 5117383 Default directory hash: half_md4 Directory Hash Seed: fa95a22a-a119-4667-a73e-78f77af6172f Journal backup: inode blocks Checksum type: crc32c Checksum: 0xe084fe23
extファイルシステムでは マウント回数(mount count) が記録されていて、最大マウント回数(maximum mount count) に達すると、システム起動時に e2fsck
が実行されてファイルシステムの整合性がチェックされます(訳注:上の例のように最大マウント回数(maximum mount count)が-1に設定されていると、マウント回数のチェックが行われなくなくなります。現在、主要なディストリビューションのほとんどは、マウント回数によるチェックを行いません)。
-c N
オプションは最大マウント回数をNに設定し、-C N
オプションは現在のマウント回数をNに設定します(N
の部分には設定したい数値を指定します)。
ファイルシステムのチェックを行うタイミングを、期間で定めることもできます。-i
オプションの後に数値と期間の単位を表す文字(日は d
、月は m
、年は y
)を指定します。例えば、-i 10d
と指定すると、10日ごとにファイルシステムをチェックします。数値に0を指定すると、一定期間ごとにファイルシステムのチェックを行うことはなくなります。
-L
オプションの後に16文字以下の文字列を指定すると、ファイルシステムにボリューム名(ラベル)を付けられます。また -U
オプションの後に16進数表記の128ビットの数値であるUUIDを指定すると、ファイルシステムのUUIDを設定できます。上の例でUUIDは 6e2c12e3-472d-4bac-a257-c49ac07f3761
です。ボリューム名とUUIDは、ファイルシステムをマウントする際に、/dev/sda1
のようなデバイス名の代わりに使えます。
-e BEHAVIOUR
オプションで、ファイルシステムのエラーが見つかったときにカーネルがどう対処するかを指定します。3種類の対処法があります。
continue
-
エラーが見つからなかったときと同じように実行を継続します。
remount-ro
-
読み取り専用(read-only)で再マウントします。
panic
-
カーネルパニックを発生させます。
デフォルトは continue
です。特に重要なデータを扱う場合は、エラーが発生したときに被害が拡大しないよう remount-ro
にしてもよいかもしれません。いずれの場合も、次回の起動時にe2fsckによってファイルシステムの整合性がチェックされます。
ext3ファイルシステムは、ext2ファイルシステムにジャーナリング機能を追加したもので、上位互換性があります。tune2fs
コマンドで、ext2ファイルシステムをext3ファイルシステムに変換できます。tune2fs
コマンドで -j
オプションを指定し、ファイルシステムに対応するデバイス名を入力して実行します。例を示します。
# tune2fs -j /dev/sda1
このコマンドを実行するとファイルシステムタイプが ext3 に変更されますから、マウント時には ext2 ではなく、ext3 を指定してください(トピック104.3で解説します)。
ジャーナリングファイルシステムでは、-J
オプションでジャーナルに関するパラメータを変更できます。ジャーナルサイズを変更するには、-J size=
に続けてMB単位でサイズを指定します。ジャーナルを置く位置(ディスクブロック)を変更するには、-J location=
に続けてブロック番号、あるいはファイルシステム先頭からの位置を M
や G
などの単位を付けて指定します。また、ジャーナルを置くディスクデバイスを変更するには、-J device=
に続けてデバイス名を指定します。
これらのパラメータは、,
(カンマ)で区切って複数を指定できます。例えば、-J size=10,location=100M,device=/dev/sdb1
を実行すると、/dev/sdb1
デバイスの先頭から100MBの位置に10MBのサイズのジャーナルを作成します。
Warning
|
|
XFSファイルシステムの保守
XFSファイルシステムで fsck
に相当するコマンドは xfs_repair
です。ファイルシステムに問題があると感じたら、まずこのコマンドを実行してスキャンしてみてください。
xfs_repair
で -n
オプションに続けてデバイス名を指定するとスキャンできます。-n
オプションはno modify(修正しない)に由来しています。ファイルシステムのチェックをしてエラーの報告をしますが、修復は行いません。
# xfs_repair -n /dev/sdb1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan (but do not clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 1 - agno = 3 - agno = 0 - agno = 2 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... No modify flag set, skipping filesystem flush and exiting.
エラーが見つかったときは、-n
オプションを指定せずに実行してエラーを修復します。つまり、xfs_repair /dev/sdb1
のようなコマンドを実行するということです。
xfs_repair
には様々なオプションがあります。以下で紹介します。
-l LOGDEV
、-r RTDEV
-
ログセクション(ジャーナルが置かれる)やリアルタイムセクション(ストリーミング用のリアルタイムデータが置かれる)が外部デバイスに置かれている場合に、それぞれのデバイスを指定します。
LOGDEV
とRTDEV
の部分にデバイス名を指定します(訳注:リアルタイム機能は一般に利用されません)。 -m N
-
xfs_repair
が使うメモリの量をN
メガバイトに制限します。サーバー環境ではメモリを使いすぎてサーバー機能に支障が出ないように制限をかけたほうがよいことがあります。マニュアルによると、デフォルトではxfs_repair
がシステムの物理メモリの75%まで使うことがあるとのことです。 -d
-
読み取り専用でマウントされたファイルシステムを修復するdangerous(危険な)モードです。ルートファイルシステムの修復を行う場合などに使用することがあります。
-v
-
冗長モードです。
-v
の数を増やすとそれだけverbosity(冗長さ)が増します(例えば、-v -v
は-v
よりも多くの情報を出力します)。
xfs_repair
では、同じCPUアーキテクチャを持つマシンでしかdirty(汚い)ログ(メタデータの変更を含むログ)を持つファイルシステムを修復することができません(エラーが表示されます)。最後の手段 として、-L
オプションで破損したログをクリアすることができますが、ファイルシステムが破損してデータを失う可能性が高くなります。
XFSは1990年代の商用UNIXに起源を持つファイルシステムであり、独特の機能やツールが多く備わっています。たとえば、ファイルシステムの管理構造を詳細に分析して変更する xfs_db
や、ファイルが連続したブロックに格納されるように並び替えて(デフラグ)シーケンシャルアクセスを高速化する xfs_fsr
などがあります。(いずれもLPICの出題範囲を超えています。)
演習
-
du
コマンドでカレントディレクトリにあるファイルのディスク使用量の合計だけを表示してください。 -
df
コマンドで、全てのext4ファイルシステムを対象として、デバイス名、マウントポイント、inode総数、空きinode数、ファイルシステムの空き容量の割合(使用率)を、この順番に表示してください(訳注:ファイルシステムの空き容量の割合を知りたいときは、ファイルシステムの使用率を表示して、100%からその値を引いて求めます)。 -
e2fsck
コマンドを、/dev/sdc1
のファイルシステムを対象として、自動的にエラーを修復するように非対話モードで実行してください。 -
/dev/sdb1
はext2ファイルシステムです。このファイルシステムをext3に変換し、マウント回数をリセットして、ボリューム名をUserData
に変更するコマンドを実行してください。 -
XFSファイルシステムを、修復せずにエラーチェックしてください。
発展演習
-
/dev/sda1
にext4ファイルシステムがあり、tune2fs -l /dev/sda1
の実行結果(一部抜粋)は次のとおりでした。Mount count: 8 Maximum mount count: -1
tune2fs -c 9 /dev/sda1
を実行すると、次回のシステム起動時に何が起こるでしょうか。 -
du -h
を実行すると次のように表示されました。$ du -h 216K ./somedir/anotherdir 224K ./somedir 232K .
カレントディレクトリにあるファイルのディスク使用量はいくらですか? また、カレントディレクトリにあるファイルのディスク使用量を明示するコマンドを実行してください。
-
次のコマンドを実行すると、
/dev/sdb1
のext2ファイルシステムはどうなりますか?# tune2fs -j /dev/sdb1 -J device=/dev/sdc1 -i 30d
-
/dev/sda1
にあるXFSファイルシステムのエラーチェックを実行してください。ログセクションは/dev/sdc1
にあります。修復はせずにチェックだけを行います。 -
df
の-T
オプションと-t
オプションはどう違いますか?
まとめ
このレッスンでは、次のことを学びました。
-
ファイルシステムの使用量と空き容量の確認方法
-
df
の出力項目の調整方法 -
fsck
とe2fsck
によるファイルシステムの整合性チェックと修復方法 -
tune2fs
によるextファイルシステムの調整方法 -
xfs_repair
によるXFSファイルシステムのチェックと修復方法
このレッスンでは、次のコマンドを説明しました。
du
-
指定したディレクトリ以下のディスク使用量を確認します。
df
-
ファイルシステムの空き容量を確認します。
fsck
-
ファイルシステムをチェックして修復します(ファイルシステムのタイプに応じて適切なプログラムを呼び出すラッパーコマンドです)。
e2fsck
-
ext2/3/4ファイルシステムをチェックして修復します。
tune2fs
-
ext2/3/4ファイルシステムのパラメータを調整します。
xfs_repair
-
XFSファイルシステムをチェックして修復します。
演習の解答
-
du
コマンドでカレントディレクトリにあるファイルのディスク使用量の合計だけを表示してください。サブディレクトリを含まないカレントディレクトリ内のファイル使用量の合計を表示するために
-S
オプションを指定します。-d 0
オプションを指定して、表示する最大深度を0(サブディレクトリを表示しない)にします。人間が読みやすい(human readable)単位で表示するよう、-h
オプションも指定します。まとめると、次のコマンドになります。$ du -S -h -d 0
または
$ du -Shd 0
-
df
コマンドで、全てのext4ファイルシステムを対象として、デバイス名、マウントポイント、inode総数、空きinode数、ファイルシステムの空き容量の割合(使用率)を、この順番に表示してください(訳注:ファイルシステムの空き容量の割合を知りたいときは、ファイルシステムの使用率を表示して、100%からその値を引いて求めます)。-t
オプションの後にファイルシステムのタイプを指定するとともに、--output=source,target,itotal,iavail,pcent
と指定して出力を調整します。次のコマンドになります。$ df -t ext4 --output=source,target,itotal,iavail,pcent
-
e2fsck
コマンドを、/dev/sdc1
のファイルシステムを対象として、自動的にエラーを修復するように非対話モードで実行してください。-p
オプションを指定すると自動的にエラーを修復するので、次のコマンドを実行します。# e2fsck -p /dev/sdc1
-
/dev/sdb1
はext2ファイルシステムです。このファイルシステムをext3に変換し、マウント回数をリセットして、ボリューム名をUserData
に変更するコマンドを実行してください。ext2ファイルシステムからext3ファイルシステムへの変換は、ジャーナリング機能を追加するということなので、
-j
オプションを指定します。マウント回数をリセットするオプションは-C 0
です。ボリュームを変更するオプションは-L UserData
です。まとめると、次のコマンドになります。# tune2fs -j -C 0 -L UserData /dev/sdb1
-
XFSファイルシステムを、修復せずにエラーチェックしてください。
xfs_repair -n /dev/sdb1
のように-n
オプションを指定して、その後にデバイス名を指定します。
発展演習の解答
-
/dev/sda1
にext4ファイルシステムがあり、tune2fs -l /dev/sda1
の実行結果(一部抜粋)は次のとおりでした。Mount count: 8 Maximum mount count: -1
tune2fs -c 9 /dev/sda1
を実行すると、次回のシステム起動時に何が起こるでしょうか。このコマンドはファイルシステムの最大マウント回数を9に設定します。現在のマウント回数は8ですから、次回のシステム起動時に
e2fsck
が自動的に起動してファイルシステムのチェックを行います。 -
du -h
を実行すると次のように表示されました。$ du -h 216K ./somedir/anotherdir 224K ./somedir 232K .
カレントディレクトリにあるファイルのディスク使用量はいくらですか? また、カレントディレクトリにあるファイルのディスク使用量を明示するコマンドを実行してください。
合計の使用量が232Kで、
somedir
サブディレクトリ(その中のサブディレクトリも含む)の使用量が224Kですから、232K−224K=8Kがカレントディレクトリのファイルによるディスク使用量です。-S
オプションを指定して実行すると、サブディレクトリを含まないカレントディレクトリ内のファイルによる使用量の合計を表示します。 -
次のコマンドを実行すると、
/dev/sdb1
のext2ファイルシステムはどうなりますか?# tune2fs -j /dev/sdb1 -J device=/dev/sdc1 -i 30d
/dev/sdb1
のファイルシステムにジャーナリング機能が追加されて、ext3に変換されます。ジャーナルは/dev/sdc1
に保存され、ファイルシステムのチェックが30日ごとに行われます。 -
/dev/sda1
のXFSファイルシステムのエラーチェックを実行してください。ログセクションは/dev/sdc1
にあります。修復はせずにチェックだけを行います。xfs_repair
コマンドで、ログセクションの場所を-l /dev/sdc1
オプションで指定し、修復はせずにチェックだけを行う-n
オプションを指定します。まとめると、次のコマンドになります。# xfs_repair -l /dev/sdc1 -n /dev/sda1
-
df
の-T
オプションと-t
オプションはどう違いますか?-T
オプションは各ファイルシステムのタイプも表示するようにします。-t
オプションはその後に続けて指定したタイプのファイルシステムだけを表示するフィルターです。