今日はLinuxサーバのバックアップ方法について、調べたりしたので、そのメモ(._.) φ
本当はpartimageとかでバックアップとれれば簡単だったんだけど、手元のLinuxがLogical Volume Mnagerになってて使えなかった。
でも、Linux LVMも調べてみたらSnapShotをつかって起動したままバックアップがとれるらしいことがわかったので、早速試そうとしたら、LVMにSnapShotをとる容量がなかった。
その容量を確保するところからはじめました。
今までセットアップ時にLVMのところは適当に初期設定にしていたのですがちゃんと考えないといけないんだな~と思いました。
Linux LVMパーティションの作り方
流れは、「Physical Volume」の作成、「Volume Group」の拡張、「Logical Volume」の拡張といった流れになっています。
Logical Volumeに容量が確保できれば、SnapShotがとれるはず。
ちなみに、新しいディスクを追加したのではなく仮想マシンの仮想ディスク容量を増やして、Linuxのインストールされたディスクに新たに空き容量を作ってみた。
※fdiskコマンドは使い方を誤ると、大切なデータを失ってしまいます。注意して作業を行ってください。Linuxのfdiskの場合プロンプトで「w」を書き込まない限りディスクの内容が変更されることはありません。誤って操作をしてしまった場合や自信が持てない場合は、「q」で終了してください。なお、この手順でデータを失っても責任はとれませんので、自己責任にて作業してください。
※コマンド中の「[Ent]」は、Enter(Return)キーを押すことを意味しています。入力箇所は緑文字になっています。
○PhysicalVolumeの作成
1.fdiskコマンドの実行
# fdisk /dev/sda
※「/dev/sda」の部分はそれぞれの環境にあわせて。
コマンド (m でヘルプ): m[Ent]
でfdiskのオプションが確認できる。
ココにも(._.) φ
コマンド | ブート可能フラグをつける |
---|---|
a | ブート可能フラグをつける |
b | bsd ディスクラベルを編集する |
c | dos 互換フラグをつける |
d | 領域を削除する |
l | 既知の領域タイプをリスト表示する |
m | このメニューを表示する |
n | 新たに領域を作成する |
o | 新たに空の DOS 領域テーブルを作成する |
p | 領域テーブルを表示する |
q | 変更を保存せずに終了する |
s | 空の Sun ディスクラベルを作成する |
t | 領域のシステム ID を変更する |
u | 表示/項目ユニットを変更する |
v | 領域テーブルを照合する |
w | テーブルをディスクに書き込み、終了する |
x | 特別な機能 (エキスパート専用) |
2.今のパーティションの状態を確認する
コマンド (m でヘルプ): p[Ent]
を実行すると、
デバイス | Boot | Start | End | Blocks | Id | System |
---|---|---|---|---|---|---|
/dev/sda1 | * | 1 | 13 | 104391 | 83 | Linux |
/dev/sda2 | 14 | 1566 | 12474472+ | 8e | Linux LVM |
こんな感じで表示されます。(見やすいように表にしたので、実際とはちょっと違いますが、内容はこれと一緒です)
3.拡張領域を作成する。
※今回は拡張領域にしたけど、基本領域でもいいよ。
コマンド (m でヘルプ): n[Ent]
コマンドアクション
e 拡張
p 基本領域 (1-4)
e[Ent]
領域番号 (1-4): 3[Ent]
最初 シリンダ (1567-1827, default 1567): [Ent]
Using default value 1567
終点 シリンダ または +サイズ または +サイズM または +サイズK (1567-1827, default 1827): [Ent]
Using default value 1827
4.論理パーティションを作成する
コマンド (m でヘルプ): n[Ent]
コマンドアクション
l 論理 (5 以上)
p 基本領域 (1-4)
l[Ent]
最初 シリンダ (1567-1827, default 1567): [Ent]
Using default value 1567
終点 シリンダ または +サイズ または +サイズM または +サイズK (1567-1827, default 1827): [Ent]
Using default value 1827
この状態で
コマンド (m でヘルプ): p[Ent]
で確認すると、
?
デバイス | Boot | Start | End | Blocks | Id | System |
---|---|---|---|---|---|---|
/dev/sda1 | * | 1 | 13 | 104391 | 83 | Linux |
/dev/sda2 | 14 | 1566 | 12474472+ | 8e | Linux LVM | |
/dev/sda3 | 1567 | 1827 | 2096482+ | 5 | 拡張領域 | |
/dev/sda5 | 1567 | 1827 | 2096451 | 83 | Linux |
のようになります。手順3で作成した拡張領域「sda3」とこの手順で作成した論理パーティションの「sda5」が追加されました。
5.パーティションのタイプを変更します
変更するのは手順4で作成した「sda5」のパーティション領域番号は「5」です。またLixnu LVMのシステムタイプは「8e」です。
コマンド (m でヘルプ): t[Ent]
領域番号 (1-5): 5[Ent]
16進数コード (L コマンドでコードリスト表示): 8e[Ent]
領域のシステムタイプを 5 から8e (Linux LVM) に変更しました
この状態で
コマンド (m でヘルプ): p[Ent]
で確認すると、
?
デバイス | Boot | Start | End | Blocks | Id | System |
---|---|---|---|---|---|---|
/dev/sda1 | * | 1 | 13 | 104391 | 83 | Linux |
/dev/sda2 | 14 | 1566 | 12474472+ | 8e | Linux LVM | |
/dev/sda3 | 1567 | 1827 | 2096482+ | 5 | 拡張領域 | |
/dev/sda5 | 1567 | 1827 | 2096451 | 8e | Linux LVM |
のようになります。「sda5」のSystemの欄が「Linux」から「Linux LVM」になりました。
6.続いて、初期化
# pvcreate /dev/sda5[Ent]
File descriptor 11 (socket:[11780]) leaked on pvcreate invocation. Parent PID 2910: /bin/bash
File descriptor 12 (socket:[11782]) leaked on pvcreate invocation. Parent PID 2910: /bin/bash
? Physical volume "/dev/sda5" successfully created
となって、Physical Volumeの作成終わりです。
○Volume Groupの拡張
Volume Groupの拡張には「vgextend」コマンドを実行します。が、とりあえず情報収集をvgdisplayで。
1.まずは、Volume Groupの名前を確認する
引数にVolume Groupの名前が必要なので、わからない場合は、「vgdisplay」で確認する。
実行結果のVG Nameの行「VolGroup00」が名前です。
ちなみに、VG Sizeはこの時点では11.88 GBです。(後で出てきます。)
# vgdisplay[Ent]
? --- Volume group ---
? VG Name?????????????? VolGroup00
? System ID
? Format??????????????? lvm2
? Metadata Areas??????? 1
? Metadata Sequence No? 3
? VG Access???????????? read/write
? VG Status???????????? resizable
? MAX LV??????????????? 0
? Cur LV??????????????? 2
? Open LV?????????????? 2
? Max PV??????????????? 0
? Cur PV??????????????? 1
? Act PV??????????????? 1
? VG Size?????????????? 11.88 GB
? PE Size?????????????? 32.00 MB
? Total PE????????????? 380
? Alloc PE / Size?????? 380 / 11.88 GB
? Free? PE / Size?????? 0 / 0
? VG UUID?????????????? zReOzy-yNdF-oio2-1EHN-6Cl1-r25d-pTBe8A
2.Volume Groupの拡張
Volume Groupの拡張には「vgextend」コマンドを使います。vgextendコマンドに、手順1で調べたVG Nameと、作成したPhysical Volumeを指定して、実行します。
# vgextend VolGroup00 /dev/sda5[Ent]
? Attempt to close device '/dev/cdrom' which is not open.
? Volume group "VolGroup00" successfully extended
追加されたか確認するため、
# vgdisplay[Ent]
? --- Volume group ---
? VG Name?????????????? VolGroup00
? System ID
? Format??????????????? lvm2
? Metadata Areas??????? 2
? Metadata Sequence No? 4
? VG Access???????????? read/write
? VG Status???????????? resizable
? MAX LV??????????????? 0
? Cur LV??????????????? 2
? Open LV?????????????? 2
? Max PV??????????????? 0
? Cur PV??????????????? 2
? Act PV??????????????? 2
? VG Size?????????????? 13.84 GB
? PE Size?????????????? 32.00 MB
? Total PE????????????? 443
? Alloc PE / Size?????? 380 / 11.88 GB
? Free? PE / Size?????? 63 / 1.97 GB
? VG UUID?????????????? zReOzy-yNdF-oio2-1EHN-6Cl1-r25d-pTBe8A
VG Sizeが13.84GBに増えていることが確認できると思います。手順1で確認したときには11.88GBだったので約2GB追加されたことになります。?
※2009/04/12 14時追記 SnapShotを取る領域ならLogical Volumeの拡張はしなくていいみたい。(一時削除しました。そのうち別の所に載せます。)
ちなみに間違って、Logical Volumeに追加してしまったので、追加した分の容量(約2GB)を解放しようとしてlvreduceをやったらミスってOS破壊したので、注意。
「lvreduce -l 63 /dev/VolGroup00/LogVol00」とやってしまった。
「lvreduce -l -63 /dev/VolGroup00/LogVol00」としなければいけなかったのに...orz
これで、SnapShotがとれるはずですが、時間も時間になってしまったので今日は寝ます。
※2009/04/21 タイトルを変更
最近のコメント