2012/03/23

システムドライブの容量不足に陥ったらシンボリックリンクで対応

image
古いサーバやパソコンによくあるのが、Cドライブの容量が4GBや8GBになっており、毎日空き容量の確保に悩まされることがあります。
このままだと容量不足でOSが起動しない問題が発生します。
可能であれば
  • 容量の大きい新しいHDDへ換装
  • パーティション容量の変更
などをしたいところですが、サーバの場合は無停止が必須条件なので難しいところです。
そこで、Linuxでよく使われるシンボリックリンクのWindows版を設定する方法をメモしておきます。
2014.06.18 シンボリックリンクの削除内容を修正しました。

シンボリックリンク(ジャンクション)とは

シンボリックリンクをe-wordsさんで調べると下記のように説明されています。
あるファイルやディレクトリに別の名前を与え、ユーザやアプリケーションがその名前をファイル本体と同様に扱えるようにする仕組み。UNIX系OSのファイルシステムの機能として定着している。
人によっては分かりにくいかもしれませんので例えを。
CドライブにTEMPフォルダがあり、その中にファイルがドンドン入ってくるとします。
Cドライブの容量がなくなってくると容量不足により
  • OS停止
  • プログラムの異常終了
などの障害が発生しますので、DドライブにTEMPフォルダを作成。
D:\TEMPをCドライブにシンボリックリンクとして設定すれば上記問題を解決できます。
見かけ上C:\TEMPになっているが、実態はDドライブのTEMPフォルダになります。
家のサーバはFTPサーバやファイルサーバとして稼働していますが、ディスク容量不足が発生した場合、新しいHDDを追加し、シンボリックリンクを貼って対応しています。

シンボリックリンク(ジャンクション)の設定方法

各OS毎の設定方法をメモしておきます。
コマンドプロンプトを起動し、下記コマンドを実行します。
mklinkはシンボリックリンク、linkdはジャンクションと呼ばれていますので、頭の片隅に覚えておきましょう。
Windows Vista/7/2008Serverの場合
mklink /j target_link directory_path
Windows 2000/XP/2003Serverの場合
linkd target_link directory_path
リソースキットツールをダウンロードする必要があります。

実行前にバックアップとヘルプの熟読を!

以前シンボリックリンク(ジャンクション)を貼る際、誤ったコマンドを実行したためデータを消してしまったことがあります。
可能であれば、
  1. コマンド実行前に対象データをバックアップ
  2. コマンドのヘルプをしっかり読んでください。
をしましょう。

シンボリックリンクの削除方法

2003Server上でですが、リンクを削除するのを間違ってフォルダごと削除してしまってエライ目にあいました。
削除は>linkd Source /Dです。
Windows Vista/7/2008Serverの場合
rmdir target_link
Windows 2000/XP/2003Serverの場合
linkd target_link /D

2010.12.04 Update!!!
MSから上記以外にjunction.exeというツールが別途提供されていました。
ツールをwindowsフォルダ配下にコピーし、cmd.exe上からジャンクション設定を行います。
詳しい使い方は、>junction.exeとだけ入力してください。

2011.12.07 Update!!!
Windows Vista/7/2008Server用mklinkのオプションに誤りがあったので修正。
誤:mklink –j
正:mklink /j
スポンサーリンク

スポンサーリンク