HetznerおよびServerLoftでRAID1 + LVM(ファイルシステムスナップショット用)を構成する



ここでは、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の再構築が高速化されます。



  1. 新しいマシンをインストールするときに、OSタイプ「回復」を選択します。
  2. SSH経由でログインし、「installimage」コマンドを実行します(「installimage」と入力してEnterキーを押します)。
  3. Ubuntu-1204-precise-64-minimalを選択します。
  4. 開いたエディターで次の構成を入力します。

     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
    
  5. F2を押してからF10を押し、インストールが完了するまで待ちます。


ServerLoftのマシンでLVMをオンにする


ServerLoftにはHetzner installimageなどの豊富な構成ユーティリティがなく、lvm2はデフォルトでパッケージのリストに含まれていないため、手順はより複雑です。 準備中に大量の血がこぼれた。 以下では、空きディスク容量の80%のLVMボリュームを作成し、スナップショットをサポートするために20%を残します。 このスクリプトは、ソフトウェアRAIDとハードウェアRAIDの両方で正常に動作します(はい、ServerLoftの一部の構成にはハードウェアRAIDがあります-透明性が低いため、これらを使用することはお勧めしませんが、もちろんそうです)。



  1. my.serverloft.com/en/Dedicated/Restoreで OSタイプ「Ubuntu 12.04 Minimal、software RAID1」を選択します
  2. my.serverloft.com/en/Dedicated/Recovery/Indexでインストールが完了したら 、復旧モードに入ります
  3. 以下のコマンドを実行して、パーティションを準備します。

     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
    
  4. サーバーを再起動し、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



All Articles