今週は、ファイルサーバを運用していると遭遇する可能性が高い問題・2種類について取り上げてみよう。ひとつはディスクの使い過ぎ、もうひとつはファイルの所有権をめぐるトラブルだ。

フォルダごとのディスク使用量確認

ファイルサーバを運用していると、えてして、ユーザーがさまざまなファイルを手当たり次第にファイルサーバに放り込んだり、あるいは同じファイルが重複して置かれたり、といった理由から、ディスクの空き容量がどんどん減ってしまう場合がある。

この手の問題を、「ファイルサーバの冷蔵庫化現象」と呼んだ人がいる。冷蔵庫もファイルサーバも、得体の知れないものに容量を食われるのは嬉しくない。ハードディスクの大容量化・低価格化が進んでいるので、以前と比べると問題が軽減されたのは確かだが、だからといって無駄遣いしてよいというものでもなかろう。

たとえば、ユーザーごとにサブフォルダを設けてファイルを置けるようにする共有フォルダを運用することが多い。そうした場面でディスクの空き容量が異様に減っている場合、フォルダごとのディスク使用量を調べて「誰それはこんなにディスク容量を使っている」と指摘するのは効果的だ。なんだか脅迫めいてくるが、具体的に数字を突きつけると "効く" のは間違いない。

ただし、それにはフォルダごとのディスク使用量を調べる必要があるので、そのための方法を紹介しよう。

分かりやすいのは、エクスプローラでフォルダのプロパティ画面を表示させる方法だ。[全般]タブで、そのフォルダとサブフォルダ以下に格納しているファイルの総容量を確認できる。これなら新たに何かツールを用意する必要がないし、使い方についても何も難しいことはない。ただし、使用量を調べて表示するまでに時間がかかる傾向があるのが難点だろうか。

その点、DIRUSEコマンドの方が効率的といえる。ただし、これはWindowsの標準コマンドではないので、別途、入手しなければならない。以前はリソースキットツールに含まれていたが、Windows Server 2003のリソースキットツールにはDISKUSEコマンドに置き換えられてしまったようなので、単独で入手する必要がある。コマンドの使い方についてはTechNet Online(英語)に解説があるので、それも併せて示す。

DIRUSEコマンドのダウンロード
http://download.microsoft.com/download/win2000platform/diruse/1.00.0.1/NT5/EN-US/diruse_setup.exe

Diruse Overview: File and Storage Services
http://technet.microsoft.com/ja-jp/library/cc781726(WS.10).aspx

Diruse Syntax: File and Storage Services
http://technet.microsoft.com/ja-jp/library/cc736515(WS.10).aspx

Diruse Remarks: File and Storage Services
http://technet.microsoft.com/ja-jp/library/cc785671(WS.10).aspx

[参考]Windows Server 2003 Resource Kit Tools
http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en

このコマンドは、「DIRUSE <パス名>」といった具合に引数にフォルダ名を指定して実行すると、指定したフォルダの総容量を表示する。さらに、以下に示すような引数を併用できる。

DIRUSEコマンドの主な引数

引数 説明
/S サブフォルダすべてについて、個別に容量を表示
/V 進捗状況をリアルタイム表示。「/S」使用時は無視する
/M 容量をメガバイト単位で表示
/K 容量をキロバイト単位で表示
/B 容量をバイト単位で表示(既定値)
/C 圧縮したファイルについて、圧縮後のサイズを表示
/Q: 指定した容量に達しているフォルダについて、左端列に「!」を表示
/D 「/Q」と併用して、指定した容量に達しているフォルダだけを表示
/* 指定したパス名直下の各フォルダごとに、容量を表示

ファイルの圧縮

NTFSを使用していれば、ファイル圧縮機能を使って緊急避難的に空き容量を増やすことができる。しかし、圧縮がどれだけ効果を発揮するかはファイルの内容によって異なる上に、本質的な解決にはなっていないので、あまりお薦めはできない。あくまで緊急避難である。

なお、ファイルの圧縮はエクスプローラを使ってプロパティ画面で設定する方法だけでなく、COMPACTコマンドを使用する方法もある。

  • 圧縮の有無を確認 : COMPACT [/S[:ディレクトリ]] [ファイル名]
  • 圧縮を有効にする : COMPACT /C [/S[:ディレクトリ]] [ファイル名]
  • 圧縮を解除する : COMPACT /U [/S[:ディレクトリ]] [ファイル名]

COMPACTコマンドの主な引数

引数 意味
/C 圧縮を有効にする。その後で追加したファイルも圧縮対象になる
/U 圧縮を解除する。その後で追加したファイルは圧縮対象にならない
/S[:ディレクトリ] 指定したフォルダとその下のサブフォルダも操作対象にする
/I エラーが発生しても処理を続行する(省略すると、エラー発生時に停止)
/F 圧縮済みのファイルも強制圧縮する(省略すると、圧縮済みのファイルは対象外になる)
ファイル名 ファイル/フォルダ名を指定する。省略すると、カレントフォルダ以下の全ファイル/フォルダを対象とする

ファイルの所有者変更

NTFSを使用していると、「所有権」という概念が登場する。すべてのファイルやフォルダには所有者が割り当てられるようになっていて、通常は、そのファイル/フォルダを作成したユーザーが所有者になる。ところが、所有者以外のユーザーが何かしようとすると、この所有者の設定が邪魔をして、内容の表示や移動・削除などを妨げる場合があるのだ。

所有者を変更しなければならない場面というのは多くないが、皆無というわけでもない。たとえば、ファイルの所有者になっていたユーザーアカウントを削除してしまい、アクセス権の変更ができなくなった場面では、管理者が所有権を取得し直す必要がある。まず所有権を変更しないと、何も操作できなくなってしまうからだ。

所有者の変更には相応のアクセス権が必要だが、管理者であれば問題ないはずだ(そもそも、一般ユーザーが好き勝手に所有権を取得できても問題がある)。

ファイル/フォルダのプロパティ画面にある[セキュリティ]タブで[詳細設定]をクリックすると、[(フォルダ/ファイル名)のアクセス制御の設定]ダイアログを表示する。このダイアログの[所有者]タブに移動すると、そのファイル/フォルダの所有者を確認・変更できる。

[このアイテムの現在の所有者]には、現時点での所有者を表示している。この状態で、[所有者の変更]リストに表示したユーザー/グループから、変更したい相手を選択してから[OK]をクリックする方法で、所有者を変更できる。

[所有者の変更]リストの内容は、[変更]をクリックすると表示するダイアログで[他のユーザーまたはグループ]をクリックする方法で変更できる。同じダイアログで、[サブコンテナとオブジェクトの所有者を置き換える]チェックボックスをオンにすると、サブフォルダも変更対象になる。

ファイル/フォルダのプロパティ画面で、[セキュリティ]タブの[詳細設定]をクリックすると表示するダイアログ。[所有者]タブで所有者の変更が可能

また、TAKEOWNコマンド(TAKE OWNershipと覚える)で所有者を変更することもできる。引数「/A」を指定してAdministratorに所有権を移す使い方に加えて、現在ログオン中のユーザーに所有権を移す使い方もある。

TAKEOWNコマンドの基本的な構文は、以下のようになっている。

TAKEOWN /F <ファイル名> [/A] [/R [/D <プロンプト>]]

TAKEOWNコマンドの主な引数

引数 説明
/F 対象となるファイル/フォルダを指定する。ワイルドカードやUNCパスの指定も可能。ただし、「?」と「*」を使った混合パターンは使えない
/A 所有者を管理者(Administrator)に変更する。省略すると、所有者はログオン中のユーザーになる
/R 指定したフォルダに加えて、サブフォルダも対象にする
/D 対象としてフォルダを指定した際に、ユーザーがそのフォルダに対してアクセス権「フォルダの一覧」を持っていない場合の挙動を指定する。引数「/R」と併用したときに意味を持ち、「Y」を指定すると所有権を取得、「N」を指定すると処理をスキップする。プロンプトを省略すると、確認プロンプトは表示しない

以下に、TAKEOWNコマンドの実行例を示す。

・フォルダ「C:\Share\Users\KojiI\foo」の所有権を、現在ログオン中のユーザーに変更する

TAKEOWN /F C:\Share\Users\KojiI\foo

・フォルダ「C:\Share\Users\KojiI\foo」にあるExcelブック(*.xls)の所有権を、現在ログオン中のユーザーに変更する

TAKEOWN /F C:\Share\Users\KojiI\foo\*.xls

・フォルダ「C:\Share\Users\KojiI\foo」と、その下にあるファイル/フォルダの所有権を、Administratorに変更する

TAKEOWN /F C:\Share\Users\KojiI\foo /A /R