LVMによるパーティション管理

今回は"Linuxにおける"パーティションについてと、その管理方法であるLVMについてまとめたいと思います。

動機

サーバー用にCentOSをインストールする事になった。
いつもはテキトウに済ませてしまっていたのですが、ファイル管理上をしっかり意識する必要が出てきたので、ちゃんと勉強する事にしました。

パーティションとは?

一つのハードディスクを分割して使う時の単位です。
分割して利用する事で、一台のハードディスクを、複数の用途に分けて使う事ができます。
(用途例:ここのパーティションにはwindowsを入れる。ここのパーティションは、システム部分、そしてここはデータ部分を担当させる。といった風)

パーティションを利用するメリット

3つあると思います。
1.バックアップしやすい
2.障害に強い
3.ディスクの有効活用ができる

1.について

パーティションに分割し、更新頻度の高いシステムと低いシステムで分割しておく事で、前者と後者のバックアップ頻度を合わせることができ、効率的なバックアップを行うことができるようになる。

2.について

パーティションごとに、アクセス権を変更したり、暗号化したりと、セキュリティ対策をとる事ができます。
また、もしディスクに論理的な障害が起きたとしても、その対象ディスクにだけ対策をとればよいので、他のディスクに影響を与えません。

3.について

1~数KBといった小さなファイルが無数に存在するパーティションでは、ブロック(データを保存するための最小の単位)・サイズを1KBにしてあげる事で、無駄な容量を使わないで済みます。
標準のブロック・サイズは4KBなので、もし1KBのデータを保存する時は、3KB無駄にしてしまいます。

パーティション割り振りの考え方

1.高速な処理が要求される時は、高速なハードディスクへパーティションを作成

swapや、/tmpのように、高速な処理が求められる場合、上記した事に該当します。
”高速なハードディスク”の要因は、
a.ハードディスクの種類
b.ハードディスクの外周側
で決まるようです。

a.に関しては、ディスクの種類(SATAか?IDEか?etc...)、メディア回転数といったものが要因となるようです。
b.に関しては、/dev/hdaxにおける、xのパーティション番号が若い方が外周に近くなり、アクセスが早くなる。と言う事があるようです。

2.用途に応じた、ディレクトリへの容量配分

サーバを例にとると、
・ソフトウェアをインストールする/usrディレクトリは大きくする必要はない。
・ログを保存する/varは容量を大きくする。
と言う考え方が大切のようです。
また、swapは、実メモリの1~2倍を割り当てるのが一般的のようです。
このように、自分がマシンを何のために使うのかによって、配分を決定します。

Linuxパーティションの取り扱い

Linuxパーティションを扱う時は、/(ルートディレクトリ)を起点としたディレクトリ・ツリーの中に、個別のディレクトリに割り当てて(以下マウント)して運用します。

マウントの方法

このマウントを行う方法は3つあります。
1.Linuxの起動時にマウントをする
2.必要な時に手動でマウントする
3.必要な時に自動でマウントする

1.について

/etc/fstabに記載されている無いように基づいてマウントを行います。
これは、mountコマンドが、Linuxが起動する時に自動的にrc.sysinitというスクリプトを行ってくれることで実現します。

2.について

必要な時に、mountコマンドを実行すれば良い。

3.について

autofsを利用します。

パーティションの種類

3種類存在します。
1.基本パーティション
2.拡張パーティション
3.論理パーティション

1.について

基本パーティションは、4つまで作る事ができます。
IDEハードディスクであれば、「/dev/hda1〜/dev/hda4」までがそれにあたります。

2.について

基本パーティションの中に複数のパーティションが作成される時の呼ばれ方が、拡張パーティションです。
上述したように、基本パーティションは、4つまでしか作る事ができないので、それ以上作成したい場合は拡張パーティションを作成します。

3.について

拡張パーティション内に作成するパーティションを論理パーティションと呼びます。これは/dev/hda5〜が当てはまります。

LVMによるパーティションの管理

以前までのパーティション分割方法は、「物理的なハードディスクをいくつかに分割する」と言う方式だけだったそうです。
「分割するだけ」なので、その後に「やっぱ容量が足りないから増やしたい!」となった時には、困ってしまっていたそうです。
しかし、現在はLVM(Logical Volume Management)を利用する事で、その問題を解決する事ができます。

LVMとは?

物理的なパーティションを、細かなブロックに分けて、そのブロックを寄せ集める事で、論理的なパーティションとして再編成する仕組みです。

まず、LVM用の物理的なパーティションであるPV(Pysical Volume)を用意します。
次に、PVを一定サイズに分割した、PE(Physical Extent)を用意します。
そのPEを寄せ集めて、想像上のパーティションであるLV(Logical Volume)を用意します。
この、"PEの寄せ集め"で構成されている事から、パーティションを拡大したり、縮小したりする事ができます。

しかし、注意しなければいけないのが、寄せ集める事のできるPEについてです。
LVを構成するためのPEは、同じVG(Volume Group)にいなければなりません。
このVGは、想像上のディスクドライブのようなものです。色々な物理的なパーティションを集めて、構成します。

自分のマシンの現状

現状のディスク使用状況と、パーティションの表示は、df -Hで表示する事ができます。
こんな感じで出力されました。

[root@vm ~]# df -H
Filesystem             Size   Used  Avail Use% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       154G   1.9G   144G   2% /
/dev/hda1              104M    19M    81M  19% /boot
tmpfs                  397M      0   397M   0% /dev/shm

こちらは、CentOS5.2をインストールした際に、パーティション設定を自動で設定してもらった際の設定です。
/bootが物理パーティションに割り振られ、/がLVに割り振られている事が分ります。

では、実際にLVMをいじってみよう!といきたいところですが、
LVMの扱い方は、こちらがとても分りやすいので、ご紹介させていただく形で終わりたいと思います。

論理ボリューム追加 - CentOSで自宅サーバー構築
Pantora Networks » 2章 LVM操作 基本編