カテゴリー

アクセスカウンター


since 1996/06/14

Count per Day

  • 11今日の訪問者数:
  • 30昨日の訪問者数:
  • 1205月別訪問者数:
  • 0現在オンライン中の人数:

Linux KVM関連ディスク操作memo

サーバを再構築しているんですが、毎回調べるのが面倒なのでメモしておきます。

LVM(Logical Volume Manager)

Linuxのストレージ管理の機能。使いこなすと、オンラインでのストレージ移動、パーテーションの拡張・縮小・結合など柔軟に出来る上、ソフトウェアミラーまで出来る。
※ただ、F/Wミラーや、Linuxの従来のミラーに比べると、信頼性が劣るっぽい。

PV操作

物理ディスクの操作。LVMで使う為のディスクを確保する。基本的にはパーテーションを切っておき、それをLVM用として確保するだけ。

# pvdisplay -v
ディスクの情報をを見る

# pvcreate パーティション
例)pvcreate /dev/md1p3
PV(LVM用物理ディスク)を作成する。

ちなみに、LVMはそれでディスクを使うだけならほとんど恩恵を受けることは無い。
個人的にはpvmoveを使ったときは感動した。

VG操作

ボリュームグループ操作。複数のボリュームを一つのグループとする。1グループが1論理パーティションになる訳では無い。グループの中に複数の論理パーティションが作れる。普通は1グループ1論理でもいいし、1グループに全部つっこんでも構わない。仮想化をするなら、1ゲストOS1グループにした方がわかりやすい。

# vgdisplay -v VG名
VGの内容をみる。

基本的にはvgextend、vgreduce、vgremove等を使うが、書くのが面倒なのでここでは省略。

LV操作

論理ディスク操作。LVMは『必ず』PVをVGで纏めた上で、その中にLVを作る。VGを省略してPVに直接LVを作ったりは出来ない。

# lvdisplay VG名
VGに含まれるLVを表示する

# lvcreate -n LV名 –size サイズ VG名
例)lvcreate -n lv_root –size 100G vg_vm
「VG名」の中に「サイズ」分の大きさの「LV名」を作成する。

LVはOSに直接マウントが可能。通常はUUIDを指定します(/devのパスでマウントしてもいいけど、仮想化環境は環境が変わる毎にデバイス名が変わりやすい。UUIDはデバイスに対して固定なので、その点のメリットがあります)

UUIDを調べる

  1. ディスクを使える状態にする(通常のパーティションはmkfsまでしないと次のコマンドでも見えません)
  2. blkidを実行→各ディスクのUUIDが表示される
  3. /etc/fstabに書く

例)/etc/fstab
/dev/mapper/vg_vm-lv_root /                               ext4    defaults        1 1
UUID=6a9e4aeb-(略)  /boot          ext4    defaults        1 2

注意)マウント済みパーティションのfstabを更新すると、シャットダウン時にアンマウントに失敗するので、「アンマウント→fstab編集→マウント」とした方がいいです。

LVは使用中でもサイズの変更ができます。しかもfdiskで作るようなパーティションのように、ディスク上の連続した領域を確保する必要はありません。なお、実行する前にアンマウントしてfsckをしておいた方が安全です。

# e2fsck -f /dev/vg_vm/lv_root

LVの拡張。アンマウントしなくてもできます。
※事前にVGの空きを確認しておきましょう。⇒vgdisplayコマンドに表示される「Free  PE / Size」が空きです。
# lvextend -L +200Gb -r /dev/vg_vm/lv_root
⇒現状の容量に200GB追加。「-r」はLV内のファイルシステムも同時に拡張します。
なお、LV内をさらにパーティション分割しているような環境の場合は、「-r」を付けずに、resize2fsで手動拡張して下さい。

LVの縮小。アンマウント必須みたいです。
# lvreduce -L -200Gb -r /dev/vg_vm/lv_root
機能は上記のlvextendと同じです。

rawディスク操作

LVMは機能豊富で様々なことができるけど、やはり一長一短はあります。なので、ディスクイメージファイルによるストレージ作成も使いこなせると便利。ここではrawファイルについて触れます。

rawディスク作成

作り方はいろいろありますが、以下の方法を使うとスパース化が防げる。
(スパースは実容量が見た目より小さく、使うほど大きく成長するファイル。ディスク使用量は同じだが、成長する分パフォーマンスが劣るので、はじめっから巨大なファイルを作っておいた方がいい)

1GByteのイメージファイルを作成する
# dd if=/dev/zero of=vs.img bs=1M count=1024

スパース化してないかは以下のコマンドで確認可能
# qemu-img info vs.img
※ファイルをコピーするだけでもスパース化するので注意。ちなみにスパース化を防ぐには「cp —sparse=never コピー元 コピー先」とする

てな感じです。

VMのクローン

KVM上でゲストOSを丸ごとコピーする。

# virt-clone –original mst –name new –file /vm/new.img –nonsparse
意味)ゲストOS「mst」からクローンし、新ゲストOS「new」を作る。その際の新しいストレージは「/vm/new.img」でノンスパースファイルにする。

スパースファイルとは、imgファイルを使用している分しかディスクを確保しないファイル。ディスクの節約にはなるが、使いながらディスクを拡張する為、効率は悪いらしい(パフォーマンスが落ちる)。なので、はじめからノンスパースファイルにしておいた方がいい。
うちのVMは元々ノンスパースで作成しているので、クローンをするときもノンスパースオプションを付けないと、勝手にスパースファイルに変換されてしまう。

また、クローン後はクローン元の情報を持ったままですが、とりあえずネットに繋がらないので、ネットの設定をしなければならない

  1. 「/etc/udev/rules.d/70-persistent-net.rules」を編集。
    「SUBSYSTEM==云々」というのが二行出てくるが、一行目はクローン元の情報なので削除する。また、二行目に記載されたIF名が「eth1」になっているので、「eth0」に直す。
  2. 「/etc/sysconfig/network」を編集。ホスト名を最新にする。
  3. 「/etc/sysconfig/network-scripts/ifcfg-eth0」を編集。IPを最新化する。また、「UUID」「HWADDR」も必ず最新化する(削除でも良い)。
  4. networkを再起動する(/etc/init.d/network restart)

 

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  

  

  

Time limit is exhausted. Please reload CAPTCHA.