実践Linux
CentOS5/6.5 CentOS5/6.5 目次へ TOP(HOME)へ
特定ディレクトリに容量制限 2015年6月
/var/www/html/upload-download/filesディレクトリに1Gの容量制限をかけてみます。
指定サイズの仮想ディスクを作成し、サイズ制限をかけたいディレクトリに作成した仮想ディスクをマウントしてしまうという方法です。(後述「ループバック・デバイス」参照)
@指定サイズの仮想ディスクを作成する。1GBの領域、「files.fs」を確保します。
# dd if=/dev/zero of=/var/www/html/upload-download/files.fs bs=1M count=1024
1M×1024のサイズが確保されます。
A仮想ディスクをフォーマットする。
# mke2fs -t ext4 /var/www/html/upload-download/files.fs (# mkfs.ext4 /var/www/html/upload-download/files.fs)
Bフォーマットした仮想ディスクをサイズ制限をかけたいディレクトリにマウントする。
/var/www/html/upload-download/filesディレクトリがない場合は、作成しておきます。
# mkdir /var/www/html/upload-download/files
マウント
# mount -o loop -t ext4 /var/www/html/upload-download/files.fs /var/www/html/upload-download/files
起動時に自動的にマウントする
# vi /etc/fstab
/var/www/html/upload-download/files.fs /var/www/html/upload-download/files
ext4 defaults,loop 0 0
あるいは、etc/rc.d/rc.localファイルに、Bの内容を記述しておく。
/var/www/html/upload-download/filesのアクセス権設定(アップロード用ディレクトリにする場合)
一般ユーザーが読み書き出来る様、アクセス権を与えます。
また、selinuxの設定の確認が必要です。selinuxコンテキストを「すべてのhttpdスクリプトデーモンからの読み取り」にします。
以下は参考文献です。
##################################################
ddについて
ファイルシステム等のデータに直接アクセスを行い、コピーや変換を行う。外部記憶装置(フロッピーなど)との間でのコピーもできる。
ddの主な機能は指定されたバイト数もしくはブロック数のデータのコピーであり、この機能は、ハードディスク(全体もしくはパーティション単位、またはブートセクター等)のバックアップや、/dev/zeroや/dev/randomを用いて指定された領域を完全消去するために利用される。
入出力を指定するオプション
if=[file] : 標準入力の代わりに、ファイル file から読み込む
of=[file] : 標準出力の代わりに、ファイル file へ書き出す
コピーするサイズを指定するオプション
count=[blocks] : ibs バイトのブロック blocks 個分だけ入力ファイルをコピーする
読み書きの開始位置を指定するオプション
skip=[blocks] : ibs バイトのブロック blocks 個分だけ入力ファイルの先頭をスキップする
seek=[blocks] : 出力の先頭にある obs バイトのブロック blocks 個分を書き出さない
1回の読み書きのデータサイズを指定するオプション
bs=[bytes] : 一 度に bytes バイトずつ読み込みと書き出しをする
ibs=[bytes] : 一度に bytes バイトずつ読み込む。デフォルトは 512
obs=[bytes] : 一度に bytes バイトずつ書き出す。デフォルトは 512
オンザフライのデータ変換を指定するオプション
conv=[CONVERSION]
noerror : 読み込みエラーが発生しても継続する
sync : 入力ブロックサイズがibsに指定されていないバイト数に満たないとき、パディングを行う
使用例
ハードディスク上のパーティションを、別のディスクにコピーする
dd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=notrunc,noerror
ハードディスク全体を完全消去する
dd if=/dev/urandom of=/dev/hda
CDをiso仮想イメージファイルに変換する
dd if=/dev/cdrom of=/home/sam/myCD.iso bs=2048 conv=sync,notrunc
ハードディスクのMBRをバックアップする
dd if=/dev/sda of=/home/sam/MBR.image bs=446 count=1
フロッピーからfileに512個分の入力ブロックだけコピーする
dd if=/dev/fd0 of=file count=512
##################################################
ループバック・デバイス
一般的なファイルを,あたかもハード・ディスクなどのブロック型デバイスであるかのように扱うための機能です。パソコン上でイメージ・ファイルを直接操作したい場合などに使います。「ループ・デバイス」とも呼ばれます。
例えば,ハード・ディスクのイメージ・ファイル(ディスク・イメージ)を任意のディレクトリにマウントするだけで,イメージ・ファイル内にある個別のファイルの保存・参照・削除,ディレクトリの作成・削除,ファイルやディレクトリに対するアクセス権限の設定や変更など,通常のファイルと同様の操作が行えます。
ループバック・デバイスを利用する例
まず,ddコマンドを用いて,ディスク・イメージをファイルとして作成します。
次に,ext3などのファイル・システムで利用されている形式で,作成したファイルをフォーマットします。
最後に,ループバック・デバイスとしてマウントするためのオプション「-o loop」と,フォーマットした形式を指定するオプション「-t 〈形式〉」を付けて,mountコマンドでファイルを任意のディレクトリにマウントします。
以上の手順で,作成したファイルがディレクトリにマウントされ,通常のパーティションと同様にアクセスできるようになります。書き込んだ内容はファイルにイメージとして保存されます。
TOP(HOME)へ