いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.085 / 読者数:959名

こんばんは、うすだです。

のっけから唐突ですが、/.J に、こんな記事が載っていました。

スラッシュドット ジャパン | 「早生まれ」の損得勘定
http://slashdot.jp/askslashdot/06/12/05/0428231.shtml

「早生まれ」は、大人になると羨ましがられたりしますが、 子どものうちは学力や体力の面で不利かもしれない、という内容の記事です。
上記で参照されている産経新聞の記事に、 J1 所属選手の誕生月のグラフが載っているのですが、4月がもっとも多く、 2月と比べると3倍以上の差があるという結果が出ていました。

この記事に注目してしまったのは、ご想像通り、 わたしがかなり早生まれの部類に入るからです。 子どものころから運動がすごく苦手でしたので、 直観的にそうだろうなとは思っていました。このように、 それなりに立証されると、いまさらながら励みになります。

結局、集団をひとくくりにして、せーので教えている限り、 こういう格差はなくならないんでしょうね。
そんなわけで、わたくしとしましては、今後も、運動音痴と引っ込み思案な性格を、 「早生まれ」のせいにしていこうと思う所存です。

それでは、今週も、はりきってまいりましょう!

今週のお題 - ファイルシステムの使用量を制限する

わたしが学生の頃、研究室の先生が、ディスクとメモリはいくらあっても足りない、 という名言をおっしゃっていました。あれから15年くらい経ちましたが、 その状況はあまり変わっていないように思います。
(ちなみに、わたしの中では、ムーアの法則くらい印象に残っています。)

空いているディスクがあっても、いつの間にか誰かがファイルを置くようになり、 あっという間にいっぱいになる、ということがよくあります。
…いやいや、よくあるというより、常にそうなると言っても過言ではないと思います。

そんなことがないよう、あらかじめ各ユーザの使える容量を決めておく、 という方針を立てることは、あまり決断をしたくない選択肢ではあるものの、 けっして間違った選択ではないと思われます。

というわけで、来たるべきその日のために、今週は、 ファイルシステムの使用量を制限する方法について、ご紹介したいと思います。


ファイルシステムの使用量を制限する方法といえば、Quota です。

Quota は太古の昔からあり、設定方法などもあまり変わっていないように思います。 ここは、今のところ使う予定がなくても、記憶の奥底に刻んでおくと、 将来何かの役にたつかもしれないということで、読んでいただけますと幸いです。

さて、細かい話はすっ飛ばしまして、Quota の設定方法は、 以下のようになると思います。

  1. マウント時に Quota が有効になる設定を追加する。
  2. 読み込み専用でマウントする。
  3. 使用状況を集計して、Quota を有効にする。
  4. 各ユーザの制限を設定する。

この順で、設定方法をご紹介していこうと思います。
例では、デバイスファイルが /dev/hda3 で、 マウントポイントが /home のファイルシステムに対して、 Quota の設定を行っています。

また、Quota を使用するためには、Quota を有効にしたカーネルが必要となります。 ですが、大抵のディストリビューションについてくるカーネルは、 Quota が有効になっているはずですので、確認方法などは割愛させていただきます。


ではまず、マウント時に Quota が有効になる設定をしましょう。
具体的には、/etc/fstab の中の該当する箇所に、usrquota オプションを追加します。
たとえば、/dev/hda3 の行が以下のようになっていた場合、

  /dev/hda3    /home    ext3  defaults      1 1

この行の defaults の後に、カンマで区切って usrquota を追加します。

  /dev/hda3    /home    ext3  defaults,usrquota  1 1

次に、対象のファイルシステムを、読み込み専用(read only)でマウントします。 (もしすでにそうなら、次の quotacheck へ進んでください。)

もし、今現在、そのファイルシステムが、 書き込みできる状態でマウントされているなら、以下を試してみてください。

  # mount -o ro,remount /home

これは、今マウント中の /home を、読み込み専用でマウントし直すための実行例です。 うまくいけば、何も言われず成功しますが、誰かが使用中だったりすると、 device is busy などと言われて失敗してしまいます。

そんなときは、さくっと諦めてリブートし、 シングルユーザモードで立ち上げてください。 シングルユーザモードで立ち上げるには、リブート後のブート時のメニューで、 カーネルコマンドラインに single という一言を追加するだけです。

シングルユーザモードで立ち上がったら、 対象となるファイルシステムを読み込み専用でマウントします。

  # mount -o ro /home

さて、ファイルシステムを読み込み専用でマウントしたら、次は、 現在の使用状況などを、quotacheck コマンドで集計します。

  # quotacheck -c /home

これにより、集計が行われ、aquota.user というファイルが作られます。
-c オプションを指定しますと、既存の aquota.user を無視して作り直します。 そもそもなければ関係はありませんが、念のため指定しています。

quotacheck コマンドが終了したら、マルチユーザモードに移行します。
今お使いのシェルを exit などで終了すれば、勝手にそうなります。
その過程で、quotaon というコマンドが自動的に実行され、 Quota が有効な状態になります。

リブートせずに、マルチユーザモードの状態で quotacheck を行った貴兄は、 手動で quotaon コマンドを実行してください。

  # quotaon /home

ここまでで、Quota が有効な状態でマウントされるようになりました。
お次はいよいよ、ユーザに制限をつけてみたいと思います。
そのためのコマンドが、edquota です。

  # edquota ユーザ名

と実行しますと、エディタ(たぶん vi)が起動し、 引数で指定したユーザの制限を設定できます。

  Disk quotas for user ユーザ名 (uid ユーザID):
    Filesystem   blocks     soft     hard   inodes   soft   hard
    /dev/hda3      1692        0        0        9      0      0

こんな感じのテキストを、編集するように即されます。

block がキロバイト単位での容量の制限を、inode がファイル数の制限を表します。 直下にある数値が、現在の状態です。

そして、それぞれに soft と hard という制限があります。
soft の値を越えると警告が発せられ、grace period という期間(通常は1週間) を過ぎると、それ以上は書き込めなくなります。
かたや hard は、絶対的な制限で、これを越えることはできません。
上記では、いずれも 0 ですので、制限のない状態を表します。
ここを書き換え、保存してエディタを終了すると、その設定が有効になります。

あとは、実際にファイルを作って確認してもよいですし、 quota コマンドで確認することもできます。

  # quota ユーザ名
  Disk quotas for user ユーザ名 (uid ユーザID): 
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace
    /dev/hda3     1692   2048   4096             9      0      0

以上、Quota の設定方法をご紹介しました。

今週は、とりあえず設定したよ、というところまでしかご紹介できませんでした。 来週は、もうちょっと細かい設定や、日々の管理の仕方などを、 踏み込んでご紹介したいと思います。

ですので、いきなり本番環境で、上記を試すのは、ひかえたほうがいいと思います。 逆に、こわれてもいいお試し環境をお持ちのかたは、いろいろ設定をしてみてください。

宿題の答え

先週の宿題は、

  USBストレージを使えなくしながら、USB機器の挿抜をメールで通知する
  ようにしてください。

でした。

hotplug が登録されていない場合、 hotplug と modprobe の双方に仕込むだけで済んでしまいますね。
たとえば、hotplug の代替品として、以下を用意します。

  #!/bin/sh
  ORG_HOTPLUG="/sbin/hotplug"

  if [ "z$1" = "zusb" -a -n "$TYPE" ]; then
      /usr/bin/printenv | /usr/bin/Mail -s "usb: $ACTION" root
  fi
  [ -x "$ORG_HOTPLUG" ] && $ORG_HOTPLUG $*

そして、modprobe の代替品として、以下を用意します。

  #!/bin/sh
  ORG_MODPROBE=/sbin/modprobe
  DO_MODPROBE=1
  for arg in $*; do
      if [ "z$arg" = "zusb-storage" ]; then
          DO_MODPROBE=0
      fi
  done
  [ -x "$ORG_MODPROBE" -a $DO_MODPROBE -gt 0 ] && $ORG_MODPROBE $*

それぞれを、sysctl などで登録してください。

これらは、以前にご紹介したことのあるスクリプトです。
通知内容をもっと凝ったものにしたいとおっしゃる貴兄は、 過去にご紹介したスクリプト(たとえば前回の宿題の答え)を使ってみてください。

 

hotplug が登録されている場合は、hotplug ですべてをまかないます。
とはいえ、前回ご紹介したスクリプトをもとにして、 メールで通知を行う処理を追加するだけです。 超簡単な代替品の例を、以下に示します。

  #!/bin/sh
  ORG_HOTPLUG="/sbin/hotplug"
  DO_HOTPLUG=1

  if [ "z$1" = "zusb" -a -n "$TYPE" ]; then
      if [ "z$TYPE" = "z0/0/0" ]; then
          CLASS=$INTERFACE
      else
          CLASS=$TYPE
      fi
      CLS=`echo $CLASS | sed "s/\([^\/]*\)\/[^\/]*\/[^\/]*/\1/"`
      if [ "$CLS" = "8" ]; then
          DO_HOTPLUG=0
      fi
      /usr/bin/printenv | /usr/bin/Mail -s "usb: $ACTION" root
  fi
  [ -x "$ORG_HOTPLUG" -a $DO_HOTPLUG -gt 0 ] && $ORG_HOTPLUG $*

最後から3行目で、環境変数一覧を Mail コマンドで送信しています。
こちらも、もっとわかりやすく通知してほしいなーと思われたら、 過去のスクリプトの該当部分を、上記に挿入してください。

わからない箇所などありましたら、以下をもう一度読んでみてください。

Vol.082 - USBポートを監視する
http://www.usupi.org/sysad/082.html
Vol.083 - USBポートをわかりやすく監視する
http://www.usupi.org/sysad/083.html
Vol.084 - USB機器を使えなくする
http://www.usupi.org/sysad/084.html

今週の宿題

今週の宿題は、

  Quota がどのようにして実現されているのか、想像してみましょう。

です。

Quota について検索したり、カーネル・ソースを解読すれば、 実現方法がわかるのではないかと思いますが、それをする前に、 どのようにして実現すればいいか、考えてみてください。

あとがき

正直に申しますと、Linux では Quota を使ったことがありません。
ですので、Sun 全盛期の頃に Quota を使ったときの、 当時のかすかな記憶を思い出しながら、VMware 上で試しつつ書きました。

しかしながら、細かいところに違いはあるものの、基本的には、 ほぼ同じような設定でできてしまったのには、プチ驚きました。
いやいやいや、やっておいて損はないと、ほんとに思います。

そういえば、今は、パーティションを / と /boot くらいにしか分けないですが、 昔は、/ の他に、/home や /usr, /var を別々にしていました。
その理由のひとつに Quota があったのかもしれない、 と今さらながらに思ってしまいました。(気づくの遅すぎ…)

ああ、また長くなってしまいましたので、とくにオチもなく、 昔話だけで終わりにしたいと思います。
来週も Quota でひっぱっちゃいますので、よろしくお願いします!

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−栗の絵を描いています。つかれたときにでも観てください。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 5 をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューションや、Solaris10の例も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora8)
Fedora8のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日本の Linux 情報
日本の、Linux 総本山的なところです。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
Open Tech Press
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん





▼ 最近読んだ本

ハリー・ポッターと不死鳥の騎士団 ハリー・ポッターと不死鳥の騎士団
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターと炎のゴブレット ハリー・ポッターと炎のゴブレット
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターとアズカバンの囚人 ハリー・ポッターとアズカバンの囚人
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターと秘密の部屋 ハリー・ポッターと秘密の部屋
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターと賢者の石 ハリー・ポッターと賢者の石
J.K.Rowling
  ハリポ月刊なので読み直してます
アルケミスト アルケミスト
パウロ・コエーリョ
  また読んだ
賢者の書 賢者の書
喜多川 泰
  違った視点から見られてよかった
セキュリティウォリア セキュリティウォリア
Cyrus Peikari, Anton Chuvakin
  やや冗長…ためにはなりました
CORE MEMORY CORE MEMORY
John Alderman, Mark Richards
  この筐体でPC作ってほしい!
新訳 星の王子さま 新訳 星の王子さま
サン=テグジュベリ
倉橋 由美子
  つまらない大人になったのか…
.....

[X]
「センネン画報」 今日 マチ子
「粟津潔 デザインする言葉」 粟津潔
「Binary Hacks」 高林 哲,鵜飼 文敏,佐藤 祐介,浜地 慎一郎,首藤 一幸
「Make: Volume01」 オライリー・ジャパン
「セーラが町にやってきた」 清野 由実
「手紙屋」 喜多川 泰
「Linuxカーネル2.6解読室」 高橋 浩和,小田 逸郎,山幡 為佐久
「人蕩し術」 無能 唱元
「子育てハッピーアドバイス2」 明橋 大二, 太田 知子
「ラッセル幸福論」 B. Russell
「それでも人生にイエスと言う」 Viktor Emil Frankl
「子育てハッピーアドバイス」 明橋 大二, 太田 知子
「考具」 加藤 昌治
「北欧デザイン<3>」 渡部 千春
「北斎の謎を解く」 諏訪 春雄
「体感美術館」 平野 暁臣
「チベット永遠の書」 Theodore Illion
「リナックスの革命」 Pekka Himanen
「人月の神話」 Frederick Phillips,Jr. Brooks
「ヤバい経済学」 Steven D. Levitt, Stephen J. Dubner
「小布施ッション<2001-2002>」 セーラ・マリ カミングス
「アンパンマン伝説」 やなせ たかし
「夢をかなえるゾウ」 水野 敬也
「ゲーム開発者のためのAI入門」 David M. Bourg, Glenn Seemann
「北欧デザイン<2>」 渡部 千春
「北欧デザイン<1>」 渡部 千春
「ヒューマン2.0」 渡辺 千賀
「中国・ロシア同盟がアメリカを滅ぼす日」 北野 幸伯
「超ロング・セラー 絶滅寸前商品」 湯浅 豊彦
「The BUG(ザ・バグ)」 すずき ひろのぶ,かとう みつあき
「デザインのデザイン」 原 研哉
「マキアヴェッリ語録」 塩野 七生
「ハンバーガーを待つ3分間の値段」 斎藤 由多加
「星の旅人-スペイン「奥の細道」-」 黛 まどか
「食品の裏側」 安部 司
「On Lisp」 Paul Graham
「ぼくが医者をやめた理由 つづき」 永井 明
「あなたならどうする?」 Jack Nikolaschka
「セキュアプログラミング−失敗から学ぶ設計・実装・運用・管理」
      Mark G. Graff, Kenneth R. van Wyk
「「左利き」は天才?−利き手をめぐる脳と進化の謎
      David Wolman
「自分の中に毒を持て」 岡本 太郎
「アトピーの薬を減らす本」 田中 貴子
「岡本太郎「明日の神話」修復960日間の記録」 吉村 絵美留
「X51.ORG THE ODYSSEY」 佐藤 健寿
「アレルギーっ子の暮らし応援BOOK」 佐藤 のり子
「沖縄文化論」 岡本 太郎
「「伝説の社員」になれ!」 土井 英司
「コンピュータの構成と設計(上)」 Patterson & Hennessy
「カラスのジョンソン」 明川 哲也
「ドリルを売るには穴を売れ」 佐藤 義典
「頭がよくなる照明術」 結城 未来
「クロフォードのインタラクティブデザイン論」 Chris Crawford
「いじめの根を絶ち子どもを守るガイド」 Barbara Coloroso
「非常識のすすめ―逆発想の仏教論」 ひろさちや
「Linuxアドバンストネットワーク構築ガイド - HAサーバ構築編」
      デージーネット
「イノベーションの達人!」 Tom Kelly, Jonathan Littman
「クリエーター50人が語る創造の原点」 小原 啓渡
「欺術 - 史上最強のハッカーが明かす禁断の技法」 Kevin Mitnick
「楽しい気象観察図鑑」 武田 康男
「入門 Ajax」 高橋 登史朗
「リリカルな自画像」 岡本 太郎
「やぎの目ゴールデンベスト」 林 雄司
「初めてのPython 第2版」 Mark Lutz,David Ascher
「鼻兎」 小林 賢太郎
「なぜ、これがアートなの?」 Amelia Arenas
「芸術起業論」 村上 隆
「まほう色の瞳」 Enrique Barrios
「ラーメンズつくるひとデコ」 ラーメンズ
「R25 つきぬけた男たち」 R25編集部
「美の呪力」 岡本 太郎
「しろのあお」 上大岡 トメ
「ザ・ゴール」 Eliyahu M. Goldratt
「ハッカーと画家」 Paul Graham
「岡本太郎に乾杯」 岡本 敏子
「Fedore Core Expert」 Software Design
「誰も知らない男」 ブルース・バートン
「子どもが育つ魔法の言葉」 ドロシー・ロー・ノルト
「国家の罠」 佐藤 優
「夜回り先生」 水谷 修
「やぎの目絵日記」 林 雄司
「7つの習慣」 スティーブン・R. コヴィー
「まろ、ん?−大掴源氏物語」 小泉 吉宏
「ザ・サーチ グーグルが世界を変えた」 ジョン・バッテル
「ポストモダン・マーケティング」 スティーブン ブラウン
「機動戦士ガンダムさん」 大和田 秀樹
「小エロのひみつ - Webやぎの目研究発表」 林 雄司
「これ、誰がデザインしたの?」 渡部千春
「60分間・企業ダントツ化プロジェクト」 神田 昌典
「ガルシアへの手紙」 エルバート ハバード
「人生は素晴らしいものだ」 オグ・マンディーノ
「ザ・マインドマップ」 トニー・ブザン,バリー・ブザン
「ワインバーグのシステム思考法」 G.M.ワインバーグ
「渋谷ではたらく社長の告白」 藤田 晋
「渋井真帆の日経新聞読みこなし隊」 渋井 真帆
「コラム息切れ」 小野 法師丸
「早朝起業」 松山 真之介
「変な人が書いた驚くほどツイてる話」 斎藤 一人
「35歳から仕事で大切にしたいこと」 村井 勉
「金融広告を読め」 吉本 佳生
「発想する会社!」 トム・ケリー,ジョナサン・リットマン
「エハイク」 吉田 戦車
「人生の旋律」 神田 昌典
「仕事の思想」 田坂 広志
「CPUの創りかた」 渡波 郁
「非常識な成功法則」 神田 昌典
…これ以前は記録してません…

▼ 気に入ってる本

夢をかなえるゾウ 夢をかなえるゾウ
水野 敬也
  いままでで最高の「笑える」成功本
Linuxデバイスドライバ Linuxデバイスドライバ
Alessandro Rubini,
Jonathan Corbet
  ドライバ作らなくてもためになる
Firefoxの改造テクニック! Firefoxの改造テクニック!
大浦 淳
  いま栗日記拡張を考えてます
Apacheモジュール プログラミングガイド Apacheモジュール プログラミングガイド
小山 浩之
  Apacheの中身もわかるよ
図解 実戦マーケティング戦略 図解 実戦マーケティング戦略
佐藤 義典
  栗日記も戦略的に行こう!
やぎの目ゴールデンベスト やぎの目ゴールデンベスト
林 雄司
  よめも爆笑してました
アルケミスト アルケミスト
パウロ・コエーリョ
  ヘコみそうなとき読みます
X51.ORG THE ODYSSEY X51.ORG THE ODYSSEY
佐藤 健寿
  X51.ORGの集大成
チベット永遠の書 チベット永遠の書
Theodore Illion
  いろんな意味ですごい!!
影響力の武器 影響力の武器
ロバート・B・チャルディーニ
  思わず納得します