ここでは、2つの一般的な専用ホスティングであるHetznerとServerLoftでルートファイルシステムの LVMを有効にする方法についての説明に圧倒されました 。 ここで公開します。
特に、Linux LVMを使用して、「凍結した」ファイルシステムスナップショットを即座に作成し、サーバーが動作している間に安全にバックアップできます。 これは、特にデータベースサーバーにとって非常に便利な機能です。たとえば、ファイルrdiff-backupまたは重複(多くのホスティングプロバイダーが無料で高速なスペースを提供するリモートFTPサーバーを含む)を使用して、データベースの増分バックアップを作成できます。 RAID-1(2台のディスクでのミラーリング)については、サーバーで絶対に必要であるため、ディスクの1つに障害が発生しても、マシンを停止せずに交換できます。 もちろん、RAID-1の上にLVMをインストールする必要があります。
しかし問題は、HetznerとServerLoftのどちらも、「たった1つのマウスで」マシンを最初に作成するときにLVMを有効にできないことです。 代わりに、多くてもRAID-1が有効になっている状態で、固定OSイメージの1つをインストールできます。 以下に、このような「混み合った」マシンを切り替えてルートファイルシステムにLVMを使用する方法の2つの手順と、スナップショットの操作方法の簡単な例を示します。 Ubuntu Server 12.04最小で動作します(他のOSの場合、構成は異なる場合があります)。
重要:試してみることにした場合、これらのすべての手順は、データを失うことが残念ではない場合にのみ実行してください。 問題を完全に理解していない場合は、決して「ライブ」サーバーで実験しないでください。
Hetznerで車でLVMをオンにする
以下では、220Gのディスクスペースのみが必要であると仮定します(合計で、LVMボリュームには300Gが含まれますが、スナップショットを作成するには残りのスペースが必要になります)。 ディスクが大きいが、余分なスペースが絶対に必要ない場合は、低い値のままにしておくことをお勧めします。これにより、事故が発生した場合のRAID-1の再構築が高速化されます。
- 新しいマシンをインストールするときに、OSタイプ「回復」を選択します。
- SSH経由でログインし、「installimage」コマンドを実行します(「installimage」と入力してEnterキーを押します)。
- Ubuntu-1204-precise-64-minimalを選択します。
- 開いたエディターで次の構成を入力します。
DRIVE1 / dev / sda DRIVE2 / dev / sdb SWRAID 1 SWRAIDLEVEL 1 ブートローダーgrub HOSTNAME newhost PART /ブートext2 512M PART LVM VG0 300G #大容量HDDの300Gのみを使用して、RAID1の再構築を高速化します。 #とにかく、通常それほど多くのスペースは必要ないので、300Gで十分です。 LV vg0スワップスワップスワップ4G LV vg0 tmp / tmp reiserfs 10G LV vg0ルート/ ext3 220G IMAGE /root/.oldroot/nfs/install/../images/Ubuntu-1204-precise-64-minimal.tar.gz
- F2を押してからF10を押し、インストールが完了するまで待ちます。
ServerLoftのマシンでLVMをオンにする
ServerLoftにはHetzner installimageなどの豊富な構成ユーティリティがなく、lvm2はデフォルトでパッケージのリストに含まれていないため、手順はより複雑です。 準備中に大量の血がこぼれた。 以下では、空きディスク容量の80%のLVMボリュームを作成し、スナップショットをサポートするために20%を残します。 このスクリプトは、ソフトウェアRAIDとハードウェアRAIDの両方で正常に動作します(はい、ServerLoftの一部の構成にはハードウェアRAIDがあります-透明性が低いため、これらを使用することはお勧めしませんが、もちろんそうです)。
- my.serverloft.com/en/Dedicated/Restoreで OSタイプ「Ubuntu 12.04 Minimal、software RAID1」を選択します
- my.serverloft.com/en/Dedicated/Recovery/Indexでインストールが完了したら 、復旧モードに入ります
- 以下のコマンドを実行して、パーティションを準備します。
if mdadm -A --scan; それから export DEV_BOOT = / dev / md0 export DEV_LARGE = / dev / md2 他に export DEV_BOOT = / dev / sda2 export DEV_LARGE = / dev / sda4 fi マウント$ DEV_LARGE / mnt mkdir / rootcopy if [-d / mnt / rootcopy]; それから echo "このスクリプトを実行する前に回復モードに切り替えてください!" rmdir / rootcopy; 睡眠5; 出る fi cp -a / mnt / * / rootcopy umount $ DEV_LARGE pvcreate $ DEV_LARGE vgcreate vg0 $ DEV_LARGE lvcreate --name tmp --size 10G vg0 lvcreate --name root -l 80%無料vg0 mkfs.ext3 / dev / mapper / vg0-tmp mkfs.ext3 / dev / mapper / vg0-root マウント/ dev /マッパー/ vg0-root / mnt cp -a / rootcopy / * / mnt rm -rf / rootcopy マウント$ DEV_BOOT / mnt / boot mount -o bind / dev / mnt / dev mount -t proc none / mnt / proc mount -t sysfs none / mnt / sys perl -p -i -eの{^ [^ \ s#] + \ s + / \ s + \ S +} {/ dev / mapper / vg0-root / ext3} s '/ mnt / etc / fstab echo "/ dev / mapper / vg0-tmp / tmp ext3 defaults、noatime 0 4" >> / mnt / etc / fstab chroot / mnt apt-get install lvm2 --yes chroot / mnt update-grub chroot / mnt grub-install / dev / sda chroot / mnt grub-install / dev / sdb umount / mnt / sys umount / mnt / proc umount / mnt / dev umount $ DEV_BOOT umount / dev / mapper / vg0-root
- サーバーを再起動し、30秒後に-my.serverloft.com/en/Dedicated/Recovery/Indexで復旧モードを停止します(最初の再起動が成功しない場合は、2回再起動します)。
スナップショットの使用方法の例
実際には、構成されたLVMを使用して、この種の魔法を実行できます。
#前回アンマウントするのを忘れた場合は、今すぐアンマウントします。
lvremove -f / dev / vg0 / snap 2> / dev / null
#新しいスナップショットを作成します(40Gはルートに書き込める最大ボリュームです)
#スナップショットがアクティブなときのファイルシステム)。 次に、使用するためにマウントします。
lvcreate -L40G -s -n snap / dev / vg0 / root
マウント/ dev / vg0 / snap / mnt -o ro
#次に、冷静にbackup / mnt / *-ルートファイルシステムの「凍結」状態になります。
重複... / mnt ...
#スナップショットをアンマウントして削除します。
umount / mnt
lvremove -f / dev / vg0 / snap
OpenVZを使用する人へのメモ
デフォルトでは、OpenVZカーネルではLVMのサポートは有効になっていません-より正確には、Device Mapper(in / boot / initrd * conf / modulesにdm-modはありません) 後でLVM上でOpenVZを使用する場合は、このスクリプトを実行してdm-modモジュール(unpacked-added-packed)を既存のinitrdモジュールに追加し、OpenVZをデフォルトのカーネルに変更できます。 おそらくもっと簡単な方法がありますが、私が使用していたものを提供します:
FILE = `ls /boot/initrd.img-*stab* 2> / dev / null | ヘッド-n 1` if ["$ FILE" == ""]; それから echo / bootにOpenVZ initrdが見つかりません。 中止 1番出口 fi rm -rf / tmp / initrd * 2> / dev / null mkdir / tmp / initrd cd / tmp / initrd zcat $ FILE | cpio -i もし! grep "dm-mod" conf / modules> / dev / null; それから echo dm-mod >> conf /モジュール ./を見つける cpio -H newc -o | gzip> / tmp / initrd-new cat / tmp / initrd-new> $ FILE fi cd / rm -rf / tmp / initrd * sed -i ' s / GRUB_DEFAULT =。* / GRUB_DEFAULT = 1 /; s /#GRUB_DISABLE_RECOVERY =。* / GRUB_DISABLE_RECOVERY = true /; s / GRUB_CMDLINE_LINUX =。* / GRUB_CMDLINE_LINUX = "selinux = no" /; '/ etc / default / grub update-grub