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_rootext4ファイル・システムで、読取りと書込みの両方のために/にマウントされます。

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

ファイル・システムがすでにマウントされている場合にそれを再マウントします。通常は、このオプションをrorwなどの別のオプションと組み合せて、マウント済のファイル・システムの動作を変更します。

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番目のフィールドは、ファイル・システム・タイプ(ext4swapなど)です。

  • 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ディレクトリがすでに存在している必要があります。ただし、キーxyzcdなどのマウント・ポイントがまだ存在しない場合は、自動マウンタによって、それらのマウント・ポイントが作成され、ファイル・システムがアンマウントされるときに削除されます。

たとえば、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)のマニュアル・ページも参照してください。

自動マウンタのインストールと有効化

  1. autofsパッケージ、およびリモート・ファイル・システムのサポートに必要なその他のパッケージをインストールします。

    sudo dnf install autofs
  2. /etc/auto.master構成ファイルを編集してファイル・システムに応じたマップ・エントリを定義します。

    詳細は、自動マウンタ構成ファイルについてを参照してください。

  3. 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)のマニュアル・ページを参照してください。

別のファイル・システム内のファイルへのファイル・システムの作成

  1. 次のように、必要なサイズの空のファイルを作成します。

    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
  2. ファイルにファイル・システムを作成します。

    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
    
  3. ループ・デバイスを使用して、ファイルをファイル・システムとしてマウントします。

    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は、btrfsOCFS2ext3ext4およびXFSファイル・システム(マウントされたNFSファイル・システムを含む)で使用できます。

ACLは、ACLが関連付けられているファイルまたはディレクトリに対して、特定のユーザーまたはグループがどのようにアクセスできるかを指定する一連のルールで構成されます。通常のACLエントリは、単一のファイルまたはディレクトリついてアクセス情報を指定します。デフォルトACLエントリは、ディレクトリに対してのみ設定され、アクセスACLがないディレクトリ内のファイルにはデフォルトのアクセス情報を指定します。

ACLサポートの有効化

  1. aclパッケージがインストールされていることを確認します。そうでない場合は、次のコマンドを使用します。

    sudo dnf install acl
  2. /etc/fstabファイルを編集して、ACLを使用するファイル・システムのエントリを変更します。これにより、ACLをサポートする適切なオプションが含まれます。次に例を示します。

    LABEL=/work      /work       ext4     acl     0 0

    マウントされたSamba共有には、aclのかわりにcifsaclオプションを使用します。

  3. ファイル・システムを再マウントします。

    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

ユーザー割当てを有効にして、使用量制限を強制適用します。

  1. システムにquotaパッケージをインストールします(まだインストールされていない場合)。

    sudo dnf install quota
  2. ファイル・システムの/etc/fstabエントリに、usrquotaまたはgrpquotaオプションを追加します。

    /dev/sdb1       /home        ext4    usrquota,grpquota   0 0
  3. ファイル・システムを再マウントします。

    sudo mount -o remount /home
  4. 割当てデータベース・ファイルを作成します。

    sudo quotacheck -cug /home

    前述のコマンドにより、ファイル・システムのroot (この例では/home)にファイルaquota.useraquota.groupが作成されます。

詳細は、quotacheck(8)マニュアル・ページを参照してください。

ユーザーおよびグループへのディスク割当ての割当て

  1. ユーザーには、次のコマンドを使用します。

    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カテゴリに対応する割当てチェックと強制が無効になります。

  2. ブロック数とinode数に対する弱い制限および強い制限を編集して、変更を保存します。

または、setquotaコマンドを使用してコマンド・ラインから割当て制限を構成できます。-pオプションを使用すると、あるユーザーまたはグループから別のユーザーまたはグループに割当て設定を適用できます。

XFSファイル・システムを使用する場合、xfs_quotaは割当て情報を管理するための推奨ツールであることに注意してください。詳細は、XFSファイル・システムでの割当ての管理を参照してください。

詳細は、edquota(8)およびsetquota(8)の各マニュアル・ページを参照してください。

プロジェクト割当ての設定

ファイル・システムの中には、管理対象ツリーと呼ばれる個々のディレクトリ階層に割当て制限を設定できるものがあります。各管理対象ツリーは、プロジェクトIDと、オプションのプロジェクト名によって一意に識別されます。ディレクトリ階層のディスク使用量を制御する機能は、特権ユーザーに割当て制限を設定しないようにする場合や(/var/logなど)、多数のユーザーまたはグループにディレクトリへの書き込みアクセス権がある場合(/var/tmpなど)に便利です。

プロジェクトを定義して割当制限を設定するには、次の手順を実行します。

  1. プロジェクト割当てを有効にして、ファイル・システムをマウントします。

    sudo mount -o pquota device mountpoint

    たとえば、/myxfsファイル・システムのプロジェクト割当てを有効にする場合は、次のコマンドを使用します。

    sudo mount -o pquota /dev/vg0/lv0 /myxfs
  2. /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
  3. プロジェクト名をプロジェクト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ファイル・システムでの割当ての管理を参照してください。

弱い制限の猶予期間の設定

  1. 次のコマンドを実行して、弱い制限の猶予期間を設定します。

    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 
  2. ブロック数と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)マニュアル・ページを参照してください。

ディスク割当てレポートの精度の保持

制御不能なシステム停止によって、ディスク割当てレポートが正確でなくなる可能性があります。

次の手順では、ファイル・システムの割当てデータベースを再構築する方法を示します。

  1. ファイル・システムのディスク割当てを無効にします。

    sudo quotaoff -guv filesystem
  2. ファイル・システムをアンマウントします。

    sudo umount filesystem
  3. 割当てデータベースを再構築します。

    sudo quotacheck -guv filesystem
  4. ファイル・システムをマウントします。

    sudo mount filesystem
  5. ファイル・システムのディスク割当てを有効にします。

    sudo quotaoff -guv filesystem

詳細は、quotacheck(8)マニュアル・ページを参照してください。