クォータの設定


クォータは/homeに対して設定します。
例えば、Slackware-9.1をインストールする前にHDDのパーティションを行って/homeの領域を1GBに設定したことを覚えていますか?
その/homeを10人のユーザが使用すると想定してください。ユーザの個人の性格もあり、そこには使用するためのルールが必要ですね。
そのルールがクォータを思ってください。



  1. ルールがないと

  2. クォータとは

  3. クォータの用語

  4. クォータのポリシー

  5. カーネルの再構築

  6. クォータの設定

  7. windowsの設定
◆ルールがないと

  1. 巨大なデータを保存された
    あるユーザが巨大なデータを/homeに保存をしてしまった為に、他のユーザが/homeにデータを保存することができなくなってしまった。

  2. プログラムのバグがあり巨大なファイルができてしまった。
    ユーザの誰かが作ったプログラムにバグがあり際限なく大きなファイルができてしまった場合、その当事者もファイルを書き込めなくなるのは当然ですが、他のユーザも書き込めなくなります。

  3. 大量のログで空領域がなくなる。
    syslogのログを出力するプログラムにバグがあった場合、システムのログが際限なく大きくなります。この場合、ユーザ、システムレベルを問わず、プログラムは一切ログを追加することができません。


トップへ戻る

◆クォータとは

Linuxには、クォータ(QUOTA)と呼ばれる「ユーザ別」、「グループ別」のディスク使用量やファイル数を管理する機能があります。
クォータ機能を使用することで、初心者プログラマーや、あまりシステムのことを考えてくれない一般ユーザからシステムをより一層に守ることができます。
また、クォータはLinux独自の機能ではなく、スーパコンピュータ、メインフレーム、ミニコン等、多人数が共同で使うことが前提となっているシステムでは、呼び方や若干の機能が違うものの、必ず存在するOSの基本的な機能です。

トップへ戻る

◆クォータの用語

  1. ブロック
    ブロックはディスク使用量の単位です。DOSやWindowsでは「クラスタ」に相当するものです。ブロックの大きさは、ディスクやパーティションにファイル・システムを作る時に決定されます。つまり、ブロックの大きさはディスクやパーティション(ファイルシステム)によって変わる可能性があります。

  2. iノード
    iノードはファイルの管理情報が収められているもので、DOSやWindowsなら「ディレクトリ・エントリ」と「FAT」に相当します。iノードの数はファイルの数になります。

  3. グレースピリオド(greace period)
    限られた時間だけ、定められた制限を超えてディスクを使ったりファイルを作れることは、システム管理に柔軟性を持たせる意味で有用です。この「限られた時間」がグレースピリオドです。
      グレースピリオドの期間は「ソフトリミット」を超えて、「ハードリミット」が上限のディスク使用やファイル作成が許可されます。
      グレースピリオドを経過した後は、ディスク使用量やファイル数は「ソフトリミット」が上限となります。そのため、ソフトリミット未満にディスク使用量やファイル数を減らさないと、ファイルを作成することはできません。

  4. ソフトリミット(soft limit)
    グレースピロオドが設定されていない状態では,「ソフトリミット」は各ユーザやグループのディスク使用量やファイル数の上限になります。
    ソフトリミットを超えたディスクの使用量やファイルの作成は許可されず、その操作は失敗となります。
    グレースピリオドが設定されている場合、その期間内はハードリミットを上限とするディスク使用やファイル作成ができますが、グレースピリオド経過後はソフトリミットが上限となるますので注意が必要です。

  5. ハードリミット(hard limit)
    ユーザやグループのディスク使用量やファイル数の絶対上限値です。グレースピリオドが設定されていない場合は、機能しません。


トップへ戻る

◆クォータのポリシー

Slackware-9.1をインストールする時にHDDのパーティションニングで/homeを1GBに設定しましたが、実際にdf -hコマンドで確認すると943MBとなっていました。
仮に/homeを10人で使用すると1人あたり94.3MBとなりますが、これを少し減らして82MBとして、残った123MBをグレースピリオドとします。そしてグレースピリオドを12時間とすると以下のようになります。
-ソフトリミットハードリミットグレースピリオド
グールプusersのリミット943MB943MBなし
各usersのリミット82MB30MB12時間

このポリシーでは、各ユーザは82MBのディスク使用量は保証され、12時間の期限付きで、さらに30MBのディスク使用が許可されます。
ただし、30MBのディス使用は4名までという条件付きです。この辺の想定が実際の運用では難しいところですね。

トップへ戻る

◆カーネルの再構築

クォータ(QUOTA)を有効にするには、カーネル機能が必要です。
カーネルのコンフィグレーションをmenufonfigで行う場合は「Filesystems ---→」から[*]Quota supportでクォータを有効にします。

トップへ戻る

◆クォタの設定

クォータ(QUOTA)はパーティションあるいはディスク単位でディスク使用やファイル数に制限をかけます。
この「パーティションあるいはディスク単位」とは、マウントされる対象を意味しています。このことは、マウントされる物理デバイスが/dev/hda2のようなパーティションである場合と/dev/sdaのようなディスクである場合を意味します。
「ディスク/dev/hdaに4個のパーティションがあり、それを一括してクォータで制限する」ということはできません。

クォータを機能させるにはファイル・システムのトップ・ディレクトリに「quota.user」と「quota.group」の2つのファイルをroot権限で作成します。

  1. 管理ファイルの作成
    #cd /       ←「/」にマウントされているファイル・システムでクォータで有効にします。
    
    #touch quota.user          ←ユーザ・クォータのための管理ファイルを作成。
    #touch quota.group          ←グループ・クォータのための管理ファイルを作成。
    #touch quota.users          ←ユーザ・クォータのための管理ファイルを作成。
    #chmod 600 quota.user       ←ユーザ・クォータをパーミション設定
    #chmod 600 quota.group      ←グループ・クォータをパーミション設定
    
    −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
    
    #cd /home       ←「/home」にマウントされているファイル・システムでクォータで有効にします。
    
    #touch quota.user          ←ユーザ・クォータのための管理ファイルを作成。
    #touch quota.group          ←グループ・クォータのための管理ファイルを作成。
    #touch quota.users          ←ユーザ・クォータのための管理ファイルを作成。
    #chmod 600 quota.user       ←ユーザ・クォータをパーミション設定
    #chmod 600 quota.group      ←グループ・クォータをパーミション設定
    

  2. fastabの変更
    クォータを有効にするには、fastabを若干修正しなければなりません。以下の方法により修正することができます。
    #vi /etc/fstab       ←viコマンドで/etc/fstabを開きます。
    /dev/hda3   /home   ext2   defaults    1  2       ←このようになっています。
    
    /dev/hda3   /home   ext2   defaults,usrquota    1  2       ←赤字部分を追加します。
    
    #umount /home        ←一次的に/homeをアンマウントします。
    #mount /home        ←再度、/homeをマウントします。
    
    #touch /home/quota.user        ←ユーザごとのクォータ情報はouota.userに記録されます。
    #chmod 600 /home/quota.user     ←ユーザごとのクォータ情報はouota.userに記録されます。
    
    #quotacheck /home              ←quotacheckコマンドでデータベースを初期化します。
    
    #quotaon /home                 ←quotaonコマンドでクォータを有効にします。
    
    #edquota /home                 ←edquotaコマンドでユーザごとのクォータを設定します。
    
    
    

  3. rc.localの変更
    #vi /etc/rc.d/rc.local       ←viコマンドで/etc/rc.d/rc.localを開きます。
    /dev/hda3   /home   ext2   defaults    1  2       ←このようになっています。
    
    /dev/hda3   /home   ext2   defaults,usrquota    1  2       ←赤字部分を追加します。
    

  4. 各ユーザ毎のquotaの設定
    # edquota foo        ←foさんにquotaを割当てます。
    
    Disk Quotas for user foo: (uid 1001);
    Filesystem     blocks       soft    hard   inode   soft     hard
    /dev/hda3:       8         83968   30720      2    1000     1500
    

    上記では、blocks in userのlimitsでソフトとハードのリミットを指定します。
    この場合では、ソフトリミットは82MBですので1024×82=83968KBを指定しています。
    また、inodes in useのlimitsはファイルの総数を示しています。

  5. グループ毎のquotaの設定
    # edquota -u  whos        ←whosグループにquotaを割当てます。
    
    Quotas for group whos:
    Filesystem     blocks       soft    hard   inode   soft     hard
    /dev/hda3:       8         102400   30720      2    1000     1500
    

    上記では、blocks in userのlimitsでソフトとハードのリミットを指定します。
    この場合では、ソフトリミットは100MBとすると1024×100=102400KBを指定しています。
    また、inodes in useのlimitsはファイルの総数を示しています。

  6. 同じ値を一連のユーザに割当てる
    例えば、大規模な開発環境があり、仮に100人のユーザに対して、fooさんと同じ値のquota設定を行い場合、素早く、簡単に行う方法を説明します。
    # edquota foo        ←fooさんにquotaを割当てます。
    
    Disk Quotas for user foo: (uid 1001);
    Filesystem     blocks       soft    hard   inode   soft     hard
    /dev/hda3:       8         83968   30720      2    1000     1500
    
    
    上記でfooさんの設定ファイルをbarさんにコピーします。
    
    # eduota -p foo -u bar
    
    上記のコマンドはcshを使っていること、および一連のユーザのユーザIDが500番から始まっていなければなりません
    
    

  7. Grace Periodの設定
    # edquota -t               ←Grace Periodを割当てます。
    # edquota -t -g              ←Grace Periodをグループに割当てます。
    
    Grace period before enforcing soft limits for users:foo  ←fooさんにGrace Periodを割当てます。
    Time units may be: days, hours, minutes, or seconds
      Filesystem         Block Grace period        Inode Grace period
        /dev/hda3:          12 hours                   12 hours
    
    
    上記で12時間のグレースピリオドを設定しましたが、day,hours,minutes,secondの指定ができます。
    

  8. quotaの確認
    # repquota -a               ←quota情報を集計します。
    
                                    Block limits               File limits          
            User            used    soft    hard  grace    used  soft  hard  grace  
            root      --  175419       0       0          14679     0     0         
            bin       --   18000       0       0            735     0     0         
            uucp      --     729       0       0             23     0     0         
            man       --      57       0       0             10     0     0         
            user1     --   13046   15360   19200            806  1500  2250         
            user2     --    2838    5120    6400            377  1000  1500    
    
    

トップへ戻る

この後、再立上げを行う。

前ページへ戻る


ご質問・お問い合わせ - 免責事項
Copyright (C) 1998 hero-island. All Rights Reserved.