web-dev-qa-db-ja.com

UbuntuでLVMスナップショットをバックアップ/復元ポイントとして設定する

buntuでLVMスナップショットをバックアップ/復元ポイントとして設定します。

なぜ?

さて、私が見るように、Linuxのすべての優れた有用性で、その最大の欠点は、アプリをインストールする方法が混在していることです。すべてのdllは1つのディレクトリに移動します。すべての構成ファイルを別のものに。そして、バイナリも束になります。はい、Windowsはほぼ同じ方法で動作しますが、Linuxにインストールされたシステム/サーバーソフトウェアの性質上、インストールされたソフトウェアの大部分は常に約95%しか成熟しておらず、システムを月に2回台無しにします非常に可能性が高い.

もちろん、各インストールの前後にシステムをバックアップできますが、それには数百万年かかります。システムのバックアップ(データ/ファイルのバックアップとは対照的に)では、コンピューターの電源を切り、ブート可能なライブCDとバックアップメディアの何らかの形式を使用する必要があります。また、ドライブの空き容量が15%を超える場合、最新のハードウェアでもバックアップに時間がかかる場合があります。

それで、どうすればこれを行うことができますか?

29
rub

代替-LVMスナップショット-LVMスナップショットについては、こちらで読むことができます: http://www.tutonics.com/2012/12/lvm-guide-part-2-snapshots.html

要するに、スナップショットは、ハードディスク上の使用済みセクターをフリーズし、スナップショットボリュームと呼ばれるハードディスクの予約部分に変更/削除/追加を書き込むようにシステムに指示する方法です。スナップショットボリューム領域が提供する限り、将来のある時点までドライブ上で。そのため、変更をロールバックする(または保持する)ことを決定したら、1行でそれを行うことができます。

最初は複雑に見えるかもしれませんが、最初の努力の後、スナップショットメカニズムを使用するために必要なのは2行のスクリプトだけです(ダウンロードが提供されます!)

保証-以下の指示に対してこれまでに与えられた保証はありません。自己責任!

方法?

事前に設定されたボリュームグループがない場合は、おそらく新しくクリーンなUbuntuをインストールする必要があります。次に、システムを初めて正しく設定するためにある程度の努力をする必要がありますが、この時点から、スナップショットはeffortlessになります。そして、簡単に言うと、事前に構成されたスクリプトを使用して、1つのライナーコマンドを意味します。

  1. UbuntuのライブCDから起動します(まだインストールされていません。ライブCDのみ)
  2. アクセサリを開く->ターミナル
  3. ハードドライブをクリアします!この段階を実行する前に、重要なものをバックアップしてください。

    まず、既存のパーティションを削除しましょう。

    # fdisk /dev/sda
      Enter 'd' to delete - enter for as many partitions you have 
    > d   
    > <enter>
      ...
      Enter 'w' to write down changes
    > w
    
  4. ブートパーティションを作成し、残りのドライブを他のパーティションとして作成します

    # fdisk /dev/sda
    > n
      To create a new partition.
    > p
      For Boot Primary partition.
    > 1
      Press <enter> to accept the default start sector.
      Enter:
    > +512M
      To give the boot partition a size of 512MB
    > n
      To create (another) new partition.
    > p
      Should be Primary too.
    > <enter> 
      To accept the default value of 2 (the second partition)
    > <enter>
      To accept the default start sector
    > <enter>
      To accept the whole disk
    > t
      To change the type of the second partition to LVM
    > 2
      To choose the second partition
    > 8e
      To set the type to 'LVM Linux'
    > w
      To write changes and exit.
    

    変更が適切に機能したことを確認するには、次を実行します。

    # fdisk --list
    

    次のようなものが得られるはずです。

      Device     Boot   Start    End        Blocks     Id   System
      /dev/sda1         2048     524287     261120     83   Linux
      /dev/sda2         524288   488397167  243936440  8e   Linux LVM
    
  5. 以前のボリュームグループ/論理ボリュームを削除します。

    # lvdisplay 
    

    システム上にある論理ボリュームを表示します

    # lvremove <existing_logical_volume_name>
    

    このインストールを妨げる可能性のあるボリュームインストールを削除する必要がある場合。

    # vgdisplay 
    

    システム上の既存のボリュームグループを表示します

    # vgremove <existing_volume_group>
    

    ボリュームグループと同じ。

  6. ボリュームグループ「vgsnap」を作成する

    # vgcreate vgsnap /dev/sda2
    

    結果は次のとおりです。

      Volume group "vgsnap" successfully created
    
  7. 論理ボリュームを作成する

    # lvcreate --extents 100%FREE --name lvroot vgsnap
    

    デバイスの100%から始まるルート論理ボリューム。

    # lvresize --size -30G /dev/mapper/vgsnap-lvroot
    

    これにより、スワップボリュームとスナップショットボリュームの30Gがオフになります。もちろん、スワップ/スナップショットにはより小さいサイズを選択できます。

    > 'y'
      for the warning shown.
    

    そして、スワップボリュームを作成します。

    # lvcreate --size 15G --name lvswap vgsnap
    

    注:現在、15Gの未使用のドライブ領域を残し、将来のスナップショット用に予約しています。

  8. Ubuntuのインストール

    ターミナルを閉じて、インストーラーを起動します。

    「Use LVM ...」を選択します(ディスク全体の暗号化を有効にすることもできますが、テストしませんでした。)

    「その他」を選択して、続行を押します。この段階で、/ dev/mapper/...ボリュームの多くが定義されています。これらの一部は自動生成されます(lvsnap- *)-現時点では無視できます。

    選択:/ dev/mapper/vgsnap-lvroot volumeフォーマットとして「ext4」を選択し、「/」としてマウントします

    / dev/mapper/vgsnap-lvswap volumeを選択し、「スワップ領域」を選択します

    暗号化されたドライブを作成する場合(スナップショットで動作するかどうかはわかりませんか?)、おそらく/ dev/sda2を選択し、「暗号化するボリューム」をマークする必要があります。しかし、それをテストしませんでした。

    注:未使用の15Gは、スナップショットボリューム用に空いています。

    選択:/ dev/sda1パーティション。 「ext2」としてフォーマットし、「/ boot」としてマウントします

    以下-次を選択:/ dev/sda1 partition as boot

    インストール!

スナップショットを使用する

次の手順は、任意の時点でスナップショットを使用する方法を示しています。

  1. スナップショットのマウント:

    スナップショットボリュームを作成する

    # lvcreate --size 15G --snapshot --name lvsnap /dev/mapper/vgsnap-lvroot
    

    マウントディレクトリを作成する

    # mkdir /mnt/vgsnap-lvsnap
    

    スナップショットを読み取り専用マウントとしてマウントします

    # mount -o ro /dev/vgsnap/lvsnap  /mnt/vgsnap-lvsnap
    

    スナップショットはオンです!

    この時点で、システムを台無しにしたり、ベータ版ドライバーをインストールしたりすることもできます(いいえ!それは不適切です)。

    これ以降、いつでも(スナップショットサイズが提供する限り)以前の状態に戻ることができます。または、新しい外観に満足している場合は、それを保持します。

  2. 自動スナップショットボリュームの空きディスク領域の監視:ここで提供されているスクリプトの調整バージョンを使用: http://blog.rimuhosting.com/2012/02/20/cron-script-for-checking-disk-space/ 作成しました monitor_snapshot スクリプト。

    使用/インストール方法は? -上記のリンクとほぼ同じ:

    # cd /etc/cron.hourly
    # copy /home/<user>/Downloads/monitor_snapshot
    # chmod +x monitor_snapshot
    

    初めて実行する前に、電子メールアドレス(通知の送信先など)などの値を編集する方が適切です。適切に構成されていれば、cronデーモンはX時間/日ごとにスクリプトを実行します-あなたが決めるように-そしてスナップショットが一杯になりそうになったら通知します。

    スクリプトをテストするには、次を実行します。

    # sh /etc/cron.hourly/monitor_snapshot
    

    スナップショットの空き領域の割合(数値)を出力します。

    重要!テスト/インストールが完了したら-ロールバックまたは変更を保持して-スナップショットをアンマウントします!

  3. 変更のロールバック:( rollback_snapshot script、次の手順を参照、ドキュメントの最後にあるリンクを参照)

    # lvconvert --merge /dev/vgsnap/lvsnap
    

    これによりスナップショットもアンマウントされますが、変更はすべて破棄されます。また、次のアクティベーションのみが元に戻されることを示唆する警告が表示されます。

    # reboot
    

    注:マージをスキップする場合、スナップショットをマウント解除すると、変更がコミットされます。

  4. 変更のコミット-スナップショットのアンマウント:( commit_snapshot スクリプトを参照し、以下の手順を含む-ドキュメントの最後にリンクします)

    # umount /mnt/vgsnap-lvsnap
      Will unmount (commit0 the snapshot
    
    # lvremove /dev/mapper/vgsnap-lvsnap
    # rm -rf /mnt/vgsnap-lvsnap/
    
    # rm /etc/cron.hourly/monitor_snapshot
      Remove the cron daemon script (that is unused)
    
  5. スナップショットを再マウントします:( remount スクリプトを参照してください。次の手順が含まれています-ドキュメントの最後にリンクがあります)

    # lvcreate --size 15G --snapshot --name lvsnap /dev/mapper/vgsnap-lvroot
    # mkdir /mnt/vgsnap-lvsnap
    # mount -o ro /dev/vgsnap/lvsnap /mnt/vgsnap-lvsnap
    

    monitor_snapshot をホームディレクトリに保存した場合、元に戻すことができます。

    # cp /home/<user>/monitor_snapshot /etc/cron.hourly/
    # chmod +x /etc/cron.hourly/monitor_snapshot
    

それはすべての人々です!次の指示は禁煙者のみのためです;)

  1. スナップショットボリュームの破棄(不要になった場合)

    # rmdir /mnt/vgsnap-lvsnap
    # lvremove /dev/vgsnap/lvsnap
    

    (ルートパーティションまたはスワップのサイズを変更して、スワップ用に予約されている欠落している15Gを占有することもできます)

  2. ボリュームグループの破棄-ボリュームグループのボリュームを削除することによってのみ可能です。これは、おそらくOSインストールを削除することを意味します。しかし、もちろん、ボリュームグループを削除する必要はありません...

    ボリュームグループを削除するには:

    # vgremove vgsnap
    

重要な注意!-fdiskをフォーマット/実行し、すべてのパーティションを削除しても、ボリュームもグループも削除されません。これらはドライブの別の部分に書き込まれます...上記で、必要に応じてボリュームとグループを削除します。

11
rub

lvcreate -s -L <size> -n <snapshot_name> <volume_name>を使用してバックアップを行うためのcronjobを作成する

ここで、ボリューム名は、スナップショットを取得するボリュームの名前です。詳細については、 このチュートリアル をご覧ください。

2
Bidyut