2 基本的なファイル・システム管理の実行
この章では、ファイル・システムを管理する際の基本タスクについて説明します。また、アクセス制御リスト(ACL)の構成方法と、ディスク割当ての構成方法および管理方法についても説明します。
ファイル・システムの構築
mkfsコマンド構文を使用すると、ブロック・デバイス上にファイル・システムを構築できます。
sudo mkfs [options] device
通常、-t fstype
と-L label
オプションは、mkfsコマンドで使用されます。次の例では、Projectというラベルが付いたext4
ファイル・システムを構築します。
sudo mkfs -t ext4 -L Projects /dev/sdb1
ファイル・システム・タイプを指定しないと、デフォルトでext2
ファイル・システムが作成されます。
-t fstype
を省略し、かわりに、/sbin
でリストされる適切な完全mkfs.<extension>コマンドを使用することもできます。次のコマンドは、前述のコマンドと同じ結果を生成します。
sudo mkfs.ext4 -L Projects /dev/sdb1
ファイル・システム・タイプを表示する場合は、blkidコマンドを使用します。次に例を示します。
sudo blkid /dev/sdb1
前述のコマンドの出力は、次のようになります。
/dev/sdb1: UUID="ad8113d7-b279-4da8-b6e4-cfba045f66ff" BLOCK_SIZE="512" TYPE="ext4" PARTUUID="PARTUUID="6a0cf5e9-09e5-40cf-ab47-3166e1c60f24" LABEL="Projects"
各ファイル・システム・タイプでは複数の機能がサポートされており、それらは、mkfsコマンド形式または完全mkfs.<extension>コマンドでさらにオプションを指定することで有効または無効にできます。たとえば、-Jオプションを使用すると、ext*
ファイル・システム・タイプで使用されるジャーナルのサイズと場所を指定できます。
詳細は、blkid(8)
、mkfs(8)
およびmkfs.fstype(8)
のマニュアル・ページを参照してください。
ファイル・システムのマウント
ファイル・システムの内容にアクセスするには、ファイル・システムのブロック・デバイスをディレクトリ階層のマウント・ポイントにアタッチする必要があります。任意のディレクトリをマウント・ポイントとして使用できます。
通常は、マウント・ポイント用にディレクトリを作成します。既存のディレクトリを使用する場合は、その上にあるファイル・システムをアンマウントするまで、コンテンツは非表示のままになります。
mountコマンドについて
mountコマンドを使用して、ファイル・システムが格納されたデバイスをマウント・ポイントにアタッチします。次に例を示します。
sudo mount [options] device mount_point
デバイスは、その名前、UUIDまたはラベルを参照することでマウントできます。たとえば、前の項で作成したファイル・システムを/var/projects
にマウントする場合は、次のコマンドを実行してディレクトリを作成してから、その次のいずれかのコマンドを使用できます。
sudo mkdir /var/projects
sudo mount /dev/sdb1 /var/projects
sudo mount UUID="ad8113d7-b279-4da8-b6e4-cfba045f66ff" /var/projects
sudo mount LABEL="Projects" /var/projects
mountコマンドを単独で発行すると、マウントされているすべてのファイル・システムが表示されます。次の例では、コマンドの出力の抜粋で次の内容を示しています。
-
ext4
ファイル・システムの/dev/sdb1
は、読取りと書込みの両方のために/var/projects
にマウントされます。 -
LVM論理ボリューム
/dev/mapper/vg_host01-lv_root
もext4
ファイル・システムで、読取りと書込みの両方のために/
にマウントされます。
sudo mount
前述のコマンドの出力は、次のようになります。
/dev/sdb1 on /var/projects type ext4 (rw) /dev/mapper/vg_host01-lv_root on / type ext4 (rw) ...
または、cat /proc/mountsコマンドを使用して、マウントされているファイル・システムについて情報を表示できます。
df -hコマンドは、ファイル・システムとそのディスク領域の使用状況に関する情報を表示します。
Filesystem Size Used Avail Use% Mounted on ... /dev/sda3 46G 18G 29G 39% / /dev/sda2 795M 452M 344M 57% /boot /dev/sda1 100M 5.7M 95M 6% /boot/efi ...
複数のマウント・ポイントに単一のブロック・デバイスをアタッチまたはバインドするには、mount -Bコマンドを使用します。
完全なファイル・システムではない、ある場所のディレクトリ階層の一部を再マウントすることもできます。たとえば、/var/projects/project1
を/mnt
にマウントする場合は、次のコマンドを使用します。
sudo mount -B /var/projects/project1 /mnt
各ディレクトリ階層は、他のミラーとして機能します。同じファイルは、いずれの場所でもアクセスできます。ただし、サブマウントはレプリケートされません。これらのミラーでは、データ冗長性は提供されません。
ファイルを別のファイルにマウントする場合は、次のコマンドを使用します。
sudo touch /mnt/foo
sudo mount -B /etc/hosts /mnt/foo
前述の例のマウント・ポイント/etc/hosts
と/mnt/foo
は同じファイルを表します。マウント・ポイントとして機能する既存のファイルは、その上にあるファイルをアンマウントするまでアクセスできません。
ミラーにサブマウントを含めるには、-Rオプションを使用して再帰バインドを作成します。
-Bまたは-Rオプションを使用すると、ファイル・システムのマウント・オプションは元のマウント・ポイントのオプションと同じままになります。mountのオプションを変更するには、別個のremountコマンドを使用します。次に例を示します。
sudo mount -o remount,ro /mnt/foo
マウント・ポイントにあるサブマウントを、共有、プライベートまたはセカンダリとしてマークできます。次のオプションを指定できます。
- mount --make-shared mount_point
-
指定したマウント・ポイントの下でのマウントまたはアンマウントは、作成したあらゆるミラーに伝播され、このマウント階層には、他のミラーに適用したマウント変更やアンマウント変更が反映されます。
- mount --make-private mount_point
-
指定したマウント・ポイントの下でのマウントまたはアンマウントは他のミラーに伝播されず、このマウント階層には、他のミラーに適用したマウント変更やアンマウント変更は反映されません。
- mount --make-slave mount_point
-
指定したマウント・ポイントの下でのマウントまたはアンマウントは他のミラーに伝播されませんが、このマウント階層には、他のミラーに適用したマウント変更やアンマウント変更が反映されます。
-Bまたは-Rオプションを使用してマウントがミラーリングされないようにするには、そのマウント・ポイントをバインド不可(unbindable)としてマークします。
sudo mount --make-unbindable mount_point
マウントされたファイル・システム、ディレクトリ階層またはファイルをマウント・ポイント間で移動するには、-Mオプションを使用します。たとえば:
sudo touch /mnt/foo
sudo mount -M /mnt/foo /mnt/bar
ファイル・システムをアンマウントするには、umountコマンドを使用します。
sudo umount /var/projects
または、ブロック・デバイスが単一マウント・ポイントにのみマウントされている場合は、そのブロック・デバイスを指定できます。
詳細は、mount(8)
およびumount(8)
の各マニュアル・ページを参照してください。
mountコマンドのその他のオプションの使用
mountコマンドの動作は、-oオプションを使用してカンマ区切りリストでオプションを指定することで特定できます。これらのオプションの一部を次に示します。
ノート:
こうしたオプションは、/etc/fstab
ファイルに入力することもできます。
-
auto
-
mount -aコマンドを使用することで、ファイル・システムの自動マウントを許可します。
-
exec
-
ファイル・システムにあるバイナリ・ファイルが実行されるようにします。
-
loop
-
ループ・デバイス(
/dev/loop*
)を使用して、ファイル・システム・イメージが格納されたファイルをマウントします。ファイル・システムのイメージを含むファイルのマウント、別のファイル・システム内のファイルへのファイル・システムの作成およびlosetup(8)
のマニュアル・ページを参照してください。ノート:
使用可能なループ・デバイス数のデフォルトは8です。カーネル・ブート・パラメータ
max_loop=N
を使用して、最大255個のデバイスを構成できます。または、次のエントリを/etc/modprobe.conf
に追加します。options loop max_loop=N
前述の例では、Nは、必要なループ・デバイスの数(0から255)でシステムを再起動します。
-
noauto
-
mount -aが発行されたときに、ファイル・システムが自動的にマウントされないようにします。
-
noexec
-
ファイル・システムにあるバイナリ・ファイルが実行されないようにします。
-
nouser
-
root
ユーザー以外のユーザーがファイル・システムをマウントまたはアンマウントできないようにします。 -
remount
-
ファイル・システムがすでにマウントされている場合にそれを再マウントします。通常は、このオプションを
ro
やrw
などの別のオプションと組み合せて、マウント済のファイル・システムの動作を変更します。 -
ro
-
ファイル・システムを読取り専用でマウントします。
-
rw
-
ファイル・システムを読取り/書込み用でマウントします。
-
user
-
任意のユーザーによるファイル・システムのマウントまたはアンマウントを許可します。
次の例は、mount -oコマンド構文の様々な使用方法を示しています。
-
/dev/sdd1
ファイル・システムを読取り専用アクセス権で/test
としてマウントし、そのファイル・システムのマウントまたはアンマウントをroot
ユーザーにのみ許可します。sudo mount -o nouser,ro /dev/sdd1 /test
-
ループ・ドライブを使用して読取り専用アクセスでISOイメージ・ファイルを
/mount/cdrom
にマウントします。sudo mount -o ro,loop ./Linux-Server-dvd.iso /media/cdrom
-
/test
ファイル・システムを読取り/書込みアクセス権で再マウントし、そのファイル・システム内のすべてのバイナリ・ファイルの実行を禁止します。sudo mount -o remount,rw,noexec /test
ファイル・システムのイメージを含むファイルのマウント
ループ・デバイスを使用すると、ブロック・デバイスとしてファイルにアクセスできます。たとえば、次のように、DVD ISOイメージを含むファイルをマウント・ポイント/ISO
ディレクトリにマウントできます。
sudo mount -t iso9660 -o ro,loop /var/ISO_files/V33411-01.iso /ISO
必要に応じて、ファイル・システムの永続エントリを/etc/fstab
ファイルに作成します。次に例を示します。
/var/ISO_files/V33411-01.iso /ISO iso9660 ro,loop 0 0
ファイル・システムのマウント表について
/etc/fstab
ファイルにはファイル・システムのマウント表が含まれています。この表では、ブロック・デバイスをマウントするためやマウントのバインドを実装するためにmountコマンドで必要となる情報がすべて示されます。ファイル・システムを追加する場合は、そのファイル・システムが起動時に確実にマウントされるように、/etc/fstab
ファイルに適切なエントリを作成する必要があります。次に、このファイルの一般的なエントリを示します。
/dev/sda1 /boot ext4 defaults 1 2 /dev/sda2 / ext4 defaults 1 1 /dev/sda3 swap swap defaults 0 0
前の出力の各フィールドの説明は次のとおりです。
-
最初のフィールドはマウントするデバイスを示します。これは、デバイス名、UUID、デバイス・ラベルまたはリモート・ファイル・システムの仕様によって指定されます。デバイス名が変わる可能性がある場合は、デバイス名ではなくUUIDまたはデバイス・ラベルを使用してください。たとえば:
LABEL=Projects /var/projects ext4 defaults 1 2
なお、最初のフィールドでは、2番目のフィールドで示されているマウント・ポイントにマウントされるファイル・システム、ディレクトリ階層またはファイルのパスが示されます。3番目と4番目のフィールドには、
none
およびbind
を指定します。 -
2番目のフィールドは、ファイル・システムのマウント・ポイントまたはスワップ・パーティションを示す
swap
です。このマウント・ポイントは、ファイルまたはディレクトリへのパスにする必要があります。 -
3番目のフィールドは、ファイル・システム・タイプ(
ext4
、swap
など)です。 -
4番目のフィールドにはマウント・オプションを指定します。
-
5番目の列では、dumpコマンドでファイル・システムがダンプされる(
1
)かダンプされない(0
)が示されます。 -
6番目の列は、fsckコマンドがブート時にファイル・システムのチェックを実行する順序を示します。rootファイル・システムのその値は
1
ですが、他のファイル・システムは2
です。値が0
の場合は、チェックがスキップされます。これは、スワップの場合、起動時にマウントされていないファイル・システムの場合、および既存のマウントのバインドの場合に適しています。
バインド・マウントの場合は、先頭から4個のフィールドのみを指定します。たとえば:
path mount_point none bind
詳細は、fstab(5)
マニュアル・ページを参照してください。
自動マウンタの構成
自動マウンタを使用すると、ファイル・システムのマウントのために常に接続が維持されるのではなく、ファイル・システムがアクセスされたときにそのファイル・システムがマウントされます。ファイル・システムが一定期間非アクティブになると、自動マウンタによってそれがアンマウントされます。自動マウントを使用することで、システム・リソースが解放され、システム・パフォーマンスが向上します。
自動マウンタは、autofs
カーネル・モジュールとautomount
ユーザー空間デーモンの2つのコンポーネントで構成されます。また、自動マウンタ構成ファイル/etc/auto.master
のエントリも参照されます。
自動マウンタ構成ファイルについて
/etc/auto.master
構成ファイルで、各マップ・エントリは、マウント・ポイントとマウントできるリモート・ファイル・システムの定義を含むマップ・ファイルを指定します。次に例を示します。
/- /etc/auto.direct /misc /etc/auto.misc /net -hosts
前述の例では、次のタイプのマップ・エントリが示されています。
-
/-
: 直接マップ・エントリ。直接マップ・エントリでは、マウント・ポイントとして必ず/-
を指定します。 -
/misc
: 間接マップ・エントリ。 -
/net
: ホスト・マップ・エントリ。ホスト・マップでは、マップ・ファイルではなく、必ずキーワード-hosts
を指定します。
直接マップには、指定された絶対パスで自動マウントされるディレクトリの定義が含まれます。この例のauto.direct
マップ・ファイルには、次のようなエントリが含まれています。
/usr/man -fstype=nfs,ro,soft host01:/usr/man
このエントリは、次の操作を実行するディレクティブです。
-
ファイル・システム
/usr/man
をマウントします。これは、ro
オプションとsoft
オプションを指定することでhost01
によってエクスポートされます。 -
/usr/man
マウント・ポイントを作成します(まだ存在していない場合)。このマウント・ポイントが存在する場合、マウントしたファイル・システムに含まれている既存のファイルは非表示になります。
ファイル・システムのデフォルト・タイプはNFSです。そのため、前述の例は次のように短くできます。
/usr/man -ro,soft host01:/usr/man
間接マップには、/etc/auto.master
ファイル内で指定されているマウント・ポイント(/misc
)を基準にして自動マウントされる、ディレクトリまたはキーの定義が含まれています。たとえば、/etc/auto.misc
マップ・ファイルには、次のようなエントリが格納されます。
xyz -ro,soft host01:/xyz cd -fstype=iso9600,ro,nosuid,nodev :/dev/cdrom abc -fstype=ext3 :/dev/hda1 fenetres -fstype=cifs,credentials=credfile ://fenetres/c
なお、/misc
ディレクトリがすでに存在している必要があります。ただし、キーxyz
やcd
などのマウント・ポイントがまだ存在しない場合は、自動マウンタによって、それらのマウント・ポイントが作成され、ファイル・システムがアンマウントされるときに削除されます。
たとえば、ls /misc/xyzコマンドを使用すると、自動マウンタはhost01
により/misc/xyz
としてエクスポートされた/xyz
ディレクトリをマウントします。
cd
およびabc
エントリは、ローカル・ファイル・システム(/misc/cd
のCD-ROMドライブからのISOイメージと/misc/abc
の/dev/hda1
からのext3ファイル・システム)をマウントします。fenetres
エントリにより、Samba共有が/misc/fenetres
としてマウントされます。
ホスト・マップ・エントリが存在し、コマンドでマウント・ポイント(/net
)を基準にしてNFSサーバーが名前で参照されている場合は、自動マウンタにより、そのサーバーでエクスポートされるすべてのディレクトリが、そのサーバー用に指定されたマウント・ポイントのサブディレクトリ内にマウントされます。たとえば、cd /net/host03コマンドでは、host03
からのすべてのエクスポートが、自動マウンタによって/net/host03
ディレクトリの下にマウントされます。デフォルトでは、ホスト・マップ・エントリでオプションを上書きしないかぎり、nosuid,nodev,intr
のマウント・オプションが使用されます。次に例を示します。
/net -hosts -suid,dev,nointr
ノート:
NFSサーバーの名前は、DNSまたは/etc/hosts
ファイルのIPアドレスに解決できる必要があります。
NFS管理の詳細は、『Oracle Linux 8 共有ファイル・システムの管理』、『Oracle Linux 9 共有ファイル・システムの管理』で、「Oracle LinuxでのNFSの使用」の章を参照してください。hosts.master(5)
およびauto.master(5)
のマニュアル・ページも参照してください。
自動マウンタのインストールと有効化
-
autofs
パッケージ、およびリモート・ファイル・システムのサポートに必要なその他のパッケージをインストールします。sudo dnf install autofs
-
/etc/auto.master
構成ファイルを編集してファイル・システムに応じたマップ・エントリを定義します。詳細は、自動マウンタ構成ファイルについてを参照してください。
-
autofs
サービスを開始し、システムの再起動後にサービスが開始するように構成します。sudo systemctl start autofs sudo systemctl enable autofs
/etc/sysconfig/autofs
ファイルではautofs
の各種設定を構成できます。これには、ファイル・システムが自動的にアンマウントされるまでのアイドル・タイムアウト値が含まれます。
/etc/auto.master
ファイルまたは/etc/sysconfig/autofs
ファイルを変更した場合は、autofs
サービスを再起動して該当するファイルを再読込みします。
sudo systemctl restart autofs
詳細は、automount(8)
およびautofs(5)
のマニュアル・ページを参照してください。
別のファイル・システム内のファイルへのファイル・システムの作成
-
次のように、必要なサイズの空のファイルを作成します。
sudo dd if=/dev/zero of=/fsfile bs=1024 count=1000000
前のコマンドの出力は、次のようになります。
1000000+0 records in 1000000+0 records out 1024000000 bytes (1.0 GB) copied, 8.44173 s, 121 MB/s
-
ファイルにファイル・システムを作成します。
sudo mkfs.ext4 -F /fsfile
前のコマンドの出力は、次のようになります。
mke2fs 1.44.6 (5-Mar-2019) Discarding device blocks: done Creating filesystem with 250000 4k blocks and 62592 inodes Filesystem UUID: 17ef1d96-c595-4f19-891b-112a56b54c82 Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done
-
ループ・デバイスを使用して、ファイルをファイル・システムとしてマウントします。
sudo mount -o loop /fsfile /mnt
このファイルは、sudo mountコマンドを実行すると通常のファイル・システムとして表示されます。
... /fsfile on /mnt type ext4 (rw,loop=/dev/loop0)
sudo df -h
Filesystem Size Used Avail Use% Mounted on ... /fsfile 962M 18M 896M 2% /mnt
必要に応じて、ファイル・システムの永続エントリを
/etc/fstab
に作成します。/fsfile /mnt ext4 rw,loop 0 0
アクセス制御リストについて
POSIXアクセス制御リスト(ACL)は、所有者、グループおよび他のすべてのシステム・ユーザーの読取り、書込み、実行権限を設定する従来のUNIX任意アクセス制御(DAC)よりも豊富なアクセス制御モデルを提供します。複数のユーザーまたはグループについてアクセス権を定義しプログラム、プロセス、ファイルおよびディレクトリについて権限を指定する、ACLを構成できます。ディレクトリにデフォルトのACLを設定すると、その子孫が同じ権限を自動的に継承します。ACLは、btrfs
、OCFS2
、ext3
、ext4
およびXFS
ファイル・システム(マウントされたNFSファイル・システムを含む)で使用できます。
ACLは、ACLが関連付けられているファイルまたはディレクトリに対して、特定のユーザーまたはグループがどのようにアクセスできるかを指定する一連のルールで構成されます。通常のACLエントリは、単一のファイルまたはディレクトリついてアクセス情報を指定します。デフォルトACLエントリは、ディレクトリに対してのみ設定され、アクセスACLがないディレクトリ内のファイルにはデフォルトのアクセス情報を指定します。
ACLサポートの有効化
-
acl
パッケージがインストールされていることを確認します。そうでない場合は、次のコマンドを使用します。sudo dnf install acl
-
/etc/fstab
ファイルを編集して、ACLを使用するファイル・システムのエントリを変更します。これにより、ACLをサポートする適切なオプションが含まれます。次に例を示します。LABEL=/work /work ext4 acl 0 0
マウントされたSamba共有には、
acl
のかわりにcifsacl
オプションを使用します。 -
ファイル・システムを再マウントします。
sudo mount -o remount /work
ACLの設定および表示
ファイルに対するACLルールを追加または変更するには、次の構文でsetfaclコマンドを使用します。
sudo setfacl -m rules file ...
ACLルールでは、次の形式を使用できます。
- [d:]u: user[: permissions]
-
名前またはユーザーIDで指定されたユーザーのアクセスACLを設定します。これらの権限は、ユーザーが指定されていない場合は所有者に適用されます。
- [d:]g: group[: permissions]
-
名前またはグループIDで指定されたグループのアクセスACLを設定します。これらの権限は、グループが指定されていない場合は所有グループに適用されます。
- [d:]m[:][: permissions]
-
所有グループの権限すべてとユーザーおよびグループのエントリすべてを結合した、有効な権限マスクを設定します。
- [d:]o[:][: permissions]
-
その他(他のいずれのルールも適用されない全員)のアクセスACLを設定します。
それらの権限を次に示します。それらはchmodコマンドで使用されます。
-
r
: 読取り -
w
: 書込み -
x
: 実行
d:接頭辞を使用して、ディレクトリのデフォルトACLにルールを適用します。
ファイルのACLを表示するには、getfaclコマンドを使用します。たとえば:
sudo getfacl foofile
このコマンドの出力は、次のようになります。
# file: foofile # owner: bob # group: bob user::rw- user::fiona:r-- user::jack:rw- user::jill:rw- group::r-- mask::r-- other::r--
拡張ACLがファイルに対してアクティブな場合は、ls -lコマンドを使用すると、権限の後にプラス記号(+
)が表示されます。
-rw-r--r--+ 1 bob bob 105322 Apr 11 11:02 foofile
次の例では、ディレクトリおよびファイルのACLを設定する方法と表示する方法を示します。
-
ユーザーにファイルまたはディレクトリへの読取りアクセス権を付与するには、次のようにします。
sudo setfacl -m u:user:r file
-
ファイルまたはディレクトリの名前、所有者、グループおよびACLを表示するには、次のようにします。
sudo getfacl file
-
ACLではなく有効な権限マスクを変更することで、すべてのグループおよびユーザーの、ファイルへの書込みアクセス権を削除します。
sudo setfacl -m m::rx file
-xオプションでは、ユーザーまたはグループのルールを削除します。
-
ファイルのACLからユーザーのルールを削除するには、次のようにします。
sudo setfacl -x u:user file
-
ファイルのACLからグループのルールを削除するには、次のようにします。
sudo setfacl -x g:group file
-
ファイルまたはディレクトリからすべての拡張ACLエントリを削除するには、次のように、-bオプションを指定します。
sudo setfacl -b file
-
ファイルf1のACLをファイルf2にコピーするには、次のようにします。
sudo getfacl f1 | setfacl --set-file=- f2
-
ディレクトリ上のその他について読取りおよび実行アクセス権のデフォルトACLを設定するには、次のようにします。
sudo setfacl -m d:o:rx directory
-
ディレクトリのACL設定を、継承可能なデフォルトACL設定に昇格させるには、次のようにします。
sudo getfacl --access directory | setfacl -d -M- directory
-
ディレクトリからデフォルトACLを削除するには、次のように、-kオプションを指定します。
sudo setfacl -k directory
詳細は、acl(5)
、setfacl(1)
およびgetfacl(1)
の各マニュアル・ページを参照してください。
ディスク割当てについて
ユーザーまたはグループが使用できるディスク領域の容量(blocks)や、ユーザーまたはグループが作成できるファイルの数(inodes)を制限するか、指定した制限に使用量が達したときに通知するには、ディスク割当てを設定します。強い制限は、ファイル・システム上のユーザーまたはグループが使用できるブロックまたはinodeの最大数を指定します。ユーザーまたはグループは、猶予期間として知られている、期間に対する弱い制限を超過できます。
Oracle Linux 8では、Btrfsファイル・システムの、ユーザーおよびグループのディスク割当てはサポートされていません。ただし、このリリースでは、Btrfsファイル・システムのサブボリューム・レベルでの割当てがテクノロジ・プレビューとしてサポートされています。詳細は、割当て制限グループを使用したbtrfsサブボリュームの割当て制限の管理を参照してください。
XFSファイル・システムに対する割当ての構成方法の詳細は、XFSファイル・システムでの割当ての管理を参照してください。
ファイル・システムでのディスク割当ての有効化
ディスク割当てはマウント時に有効になります。次の表は、mountコマンドで指定して割当て制限を有効にできるオプションについて説明しています。
マウント・オプション | 説明 |
---|---|
gqnoenforce |
グループ割当てを有効にします。使用量を報告しますが、使用量制限を強制適用しません。 |
gquota |
グループ割当てを有効にして、使用量制限を強制適用します。 |
pqnoenforce |
プロジェクト割当てを有効にします。使用量を報告しますが、使用量制限を強制適用しません。 |
pquota |
プロジェクト割当てを有効にして、使用量制限を強制適用します。 |
uqnoenforce |
ユーザー割当てを有効にします。使用量を報告しますが、使用量制限を強制適用しません。 |
uquota |
ユーザー割当てを有効にして、使用量制限を強制適用します。 |
-
システムに
quota
パッケージをインストールします(まだインストールされていない場合)。sudo dnf install quota
-
ファイル・システムの
/etc/fstab
エントリに、usrquota
またはgrpquota
オプションを追加します。/dev/sdb1 /home ext4 usrquota,grpquota 0 0
-
ファイル・システムを再マウントします。
sudo mount -o remount /home
-
割当てデータベース・ファイルを作成します。
sudo quotacheck -cug /home
前述のコマンドにより、ファイル・システムのroot (この例では
/home
)にファイルaquota.user
とaquota.group
が作成されます。
詳細は、quotacheck(8)
マニュアル・ページを参照してください。
ユーザーおよびグループへのディスク割当ての割当て
-
ユーザーには、次のコマンドを使用します。
sudo edquota username
グループには、次のコマンドを使用します。
sudo edquota -g group
前述のコマンドを実行すると、
EDITOR
環境変数で定義されているデフォルト・エディタでテキスト・ファイルが開かれます。したがって、ユーザーまたはグループの制限を指定できます。次に例を示します。Disk quotas for user guest (uid 501) Filesystem blocks soft hard inodes soft hard /dev/sdb1 10325 0 0 1054 0 0
blocks
およびinodes
のエントリは、ファイル・システムでのユーザーの現在の使用状況を反映します。ヒント:
制限を
0
に設定すると、blocks
またはinodes
カテゴリに対応する割当てチェックと強制が無効になります。 -
ブロック数とinode数に対する弱い制限および強い制限を編集して、変更を保存します。
または、setquotaコマンドを使用してコマンド・ラインから割当て制限を構成できます。-pオプションを使用すると、あるユーザーまたはグループから別のユーザーまたはグループに割当て設定を適用できます。
XFSファイル・システムを使用する場合、xfs_quotaは割当て情報を管理するための推奨ツールであることに注意してください。詳細は、XFSファイル・システムでの割当ての管理を参照してください。
詳細は、edquota(8)
およびsetquota(8)
の各マニュアル・ページを参照してください。
プロジェクト割当ての設定
ファイル・システムの中には、管理対象ツリーと呼ばれる個々のディレクトリ階層に割当て制限を設定できるものがあります。各管理対象ツリーは、プロジェクトIDと、オプションのプロジェクト名によって一意に識別されます。ディレクトリ階層のディスク使用量を制御する機能は、特権ユーザーに割当て制限を設定しないようにする場合や(/var/log
など)、多数のユーザーまたはグループにディレクトリへの書き込みアクセス権がある場合(/var/tmp
など)に便利です。
プロジェクトを定義して割当制限を設定するには、次の手順を実行します。
-
プロジェクト割当てを有効にして、ファイル・システムをマウントします。
sudo mount -o pquota device mountpoint
たとえば、
/myxfs
ファイル・システムのプロジェクト割当てを有効にする場合は、次のコマンドを使用します。sudo mount -o pquota /dev/vg0/lv0 /myxfs
-
/etc/projects
ファイルに、ディレクトリ階層に対して一意のプロジェクトIDを定義します。sudo echo project_ID:mountpoint/directory |sudo tee -a /etc/projects
たとえば、次のようにディレクトリ階層
/myxfs/testdir
にプロジェクトID 51を設定します。sudo echo 51:/myxfs/testdir |sudo tee -a /etc/projects
-
プロジェクト名をプロジェクトIDにマップする
/etc/projid
ファイル内にエントリを作成します。sudo echo project_name:project_ID |sudo tee -a /etc/projid
たとえば、次のようにプロジェクト名
testproj
をID 51のプロジェクトにマップします。sudo echo testproj:51 |sudo tee -a /etc/projid
詳細は、projects(5)
およびprojid(5)
のマニュアル・ページを参照してください。
ファイル・システムをマウントしてプロジェクト割当てを有効にし、ディレクトリ階層にプロジェクトIDを設定した場合は、edquotaまたはxfs_quotaを使用してそのプロジェクト割当ての制限を設定できます。XFSファイル・システムを使用する場合は、xfs_quotaの使用が優先されることに注意してください。詳細は、XFSファイル・システムでの割当ての管理を参照してください。
弱い制限の猶予期間の設定
-
次のコマンドを実行して、弱い制限の猶予期間を設定します。
sudo edquota -t
前述のコマンドを実行すると、デフォルトのテキスト・エディタでテキスト・ファイルが開かれて、次の例に示すように猶予期間を指定できるようになります。
Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/sdb1 7days 7days
-
ブロック数とinode数の弱い制限の猶予期間を指定して、変更を保存します。
詳細は、edquota(8)
マニュアル・ページを参照してください。
ディスク割当ての表示
ユーザーのディスク使用量を表示する場合は、オプションや引数の指定なしでquotaコマンドを使用します。
sudo quota username
グループのディスク使用量を表示する場合は、-gオプションを追加して、次のコマンドを使用します。
sudo quota -g group
使用量が割当て制限を超えているファイル・システムに関する情報を表示する場合は、-qオプションを追加します。次に例を示します。
sudo quota -q
ユーザーは、quotaコマンドを使用して自分と自分のグループのディスク使用量を表示することもできます。
詳細は、quota(1)
マニュアル・ページを参照してください。
ディスク割当ての有効化および無効化
特定のファイル・システムのすべてのユーザー、グループのディスク割当てを無効にする場合は、次のコマンドを使用します。
sudo quotaoff -guv filesystem
すべてのユーザー、グループおよびファイル・システムのディスク割当てを無効にする場合は、次のコマンドを使用します。
sudo quotaoff -aguv
すべてのユーザー、グループおよびファイル・システムのディスク割当てを再アクティブ化する場合は、次のコマンドを実行します。
sudo quotaon -aguv
詳細は、quotaon(1)
マニュアル・ページを参照してください。
ディスク割当て使用量のレポート
単一のファイル・システムのディスク割当て使用量を表示するには:
sudo repquota filesystem
すべてのファイル・システムのディスク割当て使用量を表示するには:
sudo repquota -a
詳細は、repquota(8)
マニュアル・ページを参照してください。
ディスク割当てレポートの精度の保持
制御不能なシステム停止によって、ディスク割当てレポートが正確でなくなる可能性があります。
次の手順では、ファイル・システムの割当てデータベースを再構築する方法を示します。
-
ファイル・システムのディスク割当てを無効にします。
sudo quotaoff -guv filesystem
-
ファイル・システムをアンマウントします。
sudo umount filesystem
-
割当てデータベースを再構築します。
sudo quotacheck -guv filesystem
-
ファイル・システムをマウントします。
sudo mount filesystem
-
ファイル・システムのディスク割当てを有効にします。
sudo quotaoff -guv filesystem
詳細は、quotacheck(8)
マニュアル・ページを参照してください。