それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ディスクの仮想化みたいなLVMを使ってディスク管理してみる

LVM
・簡単に言えば、ディスクの仮想化である。
・複数のハードディスクを一本にまとめる,ディスクを仮想化する
・ソフトウェアRAIDが使える様になる.(正確にはLVMのミラー)
・スナップショット(シャドウコピー)が扱える

LVMを使って出来ること

Linux サーバー Hacks2 によると、出来ることは次のこんな感じ

5章 ストレージ管理とバックアップ
46. LVMで柔軟なストレージを構築する
47. LVMとソフトウェアRAIDを組み合わせる
48. LVMボリュームのCopy-on-Write Snapshotを作成する
49. システムを手っ取り早く複製する
50. 大容量ドライブを備えるディスク間でのバックアップ作業
51. ディスク領域を解放する
52. Linuxグループを使ってファイルを共有する
53. ACLを使ってパーミッションに手を加える
54. 拡張属性によってファイル検索を容易にする
55. クォータでディスクの独占を防ぐ

(最後51-55の5つはLVM以外でも使える

LVMを作成する

全体の流れはこんな感じ

・fdisk で lvm パーティションに変更
・LVM物理ボリュームを指定
・ボリュームグループを作って物理ボリュームを束ねる
・論理ボリュームを作ってフォーマットする

fdisk で lvm パーティションへ
sudo fdisk /dev/sdc
(略
コマンド (m でヘルプ): t
パーティション番号 (1-6): 1
16進数コード (L コマンドでコードリスト表示): 8e
(略
デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdc1              63   976559219   488279578+  8e  Linux LVM
/dev/sdc2       976562564  1953125064   488281250+  8e  Linux LVM
/dev/sdc3      1953125065  2929687565   488281250+  8e  Linux LVM
/dev/sdc4      2929687566  3907029167   488670801    5  拡張領域
/dev/sdc5      2929687629  3417968879   244140625+  8e  Linux LVM
/dev/sdc6      3417968943  3907029167   244530112+  8e  Linux LVM

pvcreate で物理ボリュームを作る

物理ボリュームと呼ぶ。これは通常のHDDと同じ扱い。LVMを入れると、HDDやパーティションの垣根が無くなる。これらはLVMの管理下だよと明示する。(と私は理解している)

pvcreate  /dev/sdc2 /dev/sdc3 /dev/sdc5 /dev/sdc6
できあがった pv を確認する

pv (physical volume )を一覧にだして確認する

takuya@atom:~$ sudo pvscan
  PV /dev/sdc2   VG Volume00   lvm2 [465.66 GiB / 0    free]
  PV /dev/sdc3   VG Volume00   lvm2 [465.66 GiB / 0    free]
  PV /dev/sdc5   VG Volume00   lvm2 [232.83 GiB / 0    free]
  PV /dev/sdc6   VG Volume00   lvm2 [233.20 GiB / 0    free]
  Total: 4 [1.31 TiB] / in use: 4 [1.31 TiB] / in no VG: 0 [0   ]

かくにんできました。次へ

ボリュームグループを作る

ボリュームは物理ボリュームを束ねる。複数の物理HDDを束ね。束ねて一個の仮想ディスクを作るのがココ.

vgcreate Volume00 /dev/sda2 /dev/sda3  /dev/sda5  /dev/sda6

このコマンドは、次の様な書式になっている

vgcreate ボリューム名 物理ボリューム2 [物理ボリューム2 物理ボリューム3 ・・・]

vgscanボリューム一覧を見る

takuya@atom:~$ sudo vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "Volume00" using metadata type lvm2

出来てる.確認できたので次へ

lvcreate で論理ボリュームを作る

さっき作った Volume00上に論理ボリュームを作る

128MBのボリュームを作る場合

lvcreate -L 128M -n LogVol01 Volume00

VGに対し、出来るだけ最大.残量の全部を指定するには100%を使う →[http://ceron.jp/url/eitaro.cpmstaff.com/?p=160
:title=参考]

 lvcreate -n LogVol00 -l 100%FREE Volume00


とすればよい。LogVol00 はボリューム名を決めて指定する。Volume00は前に作ったボリュームグループ名



lvscanで一覧を見る

lvscanで作ったボリュームグループの一覧を確認できる

takuya@atom:~$ sudo lvscan
  ACTIVE            '/dev/Volume00/LogVol00' [1.31 TiB] inherit

これで通常のディスクと同じように使うことが出来る.

デバイスファイルとして認識されるので
/dev/mapper/Volume00-LogVol00

ディスクが現れる.
別のアクセスも出来る
/dev/Volume00/LogVol00

作られたディスクのパスを確認する

takuya@atom:~$ ls -l  /dev/mapper/Volume00-LogVol00
lrwxrwxrwx 1 root root 7 2011-04-25 12:28 /dev/mapper/Volume00-LogVol00 -> ../dm-0
takuya@atom:~$ ls -l /dev/Volume00/LogVol00
lrwxrwxrwx 1 root root 7 2011-04-25 12:28 /dev/Volume00/LogVol00 -> ../dm-0

ディスクデバイスが出来ている.確認できたので次へ.

作った論理ボリュームをマウントして使う

ボリュームをext3でフォーマット

sudo mkfs.ext3        /dev/mapper/Volume00-LogVol00

マウントする

sudo mount /dev/mapper/Volume00-LogVol00 /mnt2

できあがり。

LVMにディスクを追加する.

整理が終わった空きパーティションが出来たので,コレをLVMに追加する.

PV を新規作成し、VGに追加し,LVに容量を追加する

sudo pvscan
sudo pvcreate /dev/sdc1
sudo vgextend Volume00 /dev/sdc1
sudo umount /usr/share/epgrec/video/
sudo lvextend -l +100%FREE /dev/Volume00/LogVol00
e2fsck -f /dev/Volume00/LogVol00
resize2fs /dev/Volume00/LogVol00

数TBだとe2fsck と resize2fs がすごく時間がかかる。しかも一度Mountを外さないと行けない.
ディスクを使いながら容量追加出来れば理想なんですけどね.