トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

システムバックアップ XFS

 概要

ファイルシステムにxfsを利用し、UEFI起動している場合のシステムバックアップとリストア方法

参考

http://chidipy.jpn.com/server/other/xfs_efi_backuprestore.html

 注意

https://bugzilla.redhat.com/show_bug.cgi?id=1405285
xfsdump にバグがあるので注意。
正常にバックアップが完了したように見えても、xfsresotre時にエラーになることがある。

デバイス指定よりもマウントポイントを指定するほうが良い。
デバイスを指定した場合、bind でマウントされていたりするとbind先をバックアップしようとする。

 バックアップ

手順

  1. バックアップ情報の保存
    1. efi情報の保存
    2. fstabの保存
    3. labelの収集
    4. パーティッション情報の収集(LVM含むj)
  2. バックアップ

バックアップ情報の保存

efi情報の保存

efibootmgr -v > efibootmgr.txt 

fstabの保存

cp /etc/fstab /mnt/backup/

ラベル情報

lsblk -f > lsblk.txt

パーティッション情報の保存

fdisk -l /dev/sda > /mnt/backup/fdisk_sda.txt
gdisk -l /dev/sda > /mnt/backup/gdisk_sda.txt

または

sfdisk -d /dev/hda > /mnt/backup/hda_info.txt
※リストア時に 
/sbin/sfdisk /dev/hda < hda.info
で復元可

LVM情報の保存

pvdisplay > /mnt/backup/pv_info.txt
vgdisplay > /mnt/backup/vg_info.txt 
lvdisplay >  /mnt/backup/lv_info.txt 

または

vgdisplay -v > /mnt/backup/lvm_info.txt

バックアップ

UEFIで使用するファイルのバックアップ

sync #念のため
cd /boot/efi
tar -C /boot/efi -cf バックアップ先/boot_efi.tar .

xfsdump -l0 -e  - /boot 2>>/mnt/backup/backup.log  | gzip -c > /mnt/backup/boot.dump
xfsdump -l0 -e  - / 2>>/mnt/backup/backup.log  | gzip -c > /mnt/backup/root.dump

シングルモードの方がいいけど、そこまで神経質にならなくても良いと思います。
LVMのスナップショット機能を組み合わせてもいいと思う。

 リストア

ディスクを交換せずにデータを戻すだけの場合は、データリストア以外の手順は省略して良い。
手順

  1. パーティッション復元
  2. データのリストア
  3. ラベル復元
  4. efi復元
  5. SELinux用の情報を付け直し

キーボードレイアウト設定

キーボードのレイアウトがおかしい場合

 localectl set-keymap jp106

パーティッションの復元

fdisk /dev/sda

または

gdisk /dev/sda

または

/sbin/sfdisk /dev/hda < hda.info

でパーティッションを作る。

LVM復元

VG、LVを同じ名前で再作成
LVM
基本的に

lvm pvcreate <デバイス>
lvm vgcreate <vg名> <pvデバイスファイル>
lvm lvcreate --size <lv容量> --name <lv名> <VG名>

を使う。

フォーマット

UEFI用のファイルシステムをFAT32で作成

mkfs.vfat -v -c -F32 -s2 -n ラベル -i <<UUID>> /dev/sda1

-i はUUIDを指定する。ハイフンは不要。 UUIDを再作成する場合は -i は不要。

XFSのフォーマット

mkfs.xfs -f -m uuid=<<UUID>> -L ラベル /dev/sda2

ラベルの指定やUUIDを再作成する場合

mkfs.xfs /dev/sda2
mkfs.xfs /dev/mapper/centos-root 

UUID設定(フォーマット時に指定しなかった場合)

基本的にフォーマット時に指定する。
以下のコマンドで再設定できるが、フォーマット後にUUIDを変更すると以下のUEFIの再設定をしても起動できないことがある。

xfs_admin -U <<UUID>>


ラベル復元(フォーマット時に指定しなかった場合)

ファイルシステムのラベル変更

XFS

xfs_admin -L <label> /dev/XXX 

VFAT

fatlabel /dev/XXX <label> 

ブートフラグを立てる

parted /dev/sda
p
set 1 boot on

この「1」はパーティション番号。pの結果からブートフラグを立てるパーティションを指定する。

データのリストア

リストア先をマウントしてからxfsrestoreでリストア。

zcat /mnt/boot.dump | xfsrestore - /mnt/boot
zcat /mnt/root.dump | xfsrestore - /mnt/root
sync

UEFIのデータリストア

mount /dev/sda1 /mnt/efi
cd /mnt/efi
tar xf /mnt/backup/boot_efi.tar 

スワップ領域

mkswap /dev/mapper/centos-swap

ラベルを付ける場合

mkswap -L ラベル /dev/mapper/centos-swap

fstab編集

ルートのデバイスをマウントして /etc/fstab を編集する

mount /dev/mapper/centos-root /mnt/root
vi /mnt/root/etc/fstab

ディスクを変更したり、パーティションを作り直した場合、UUIDが変わっているのでUUIDを

lsblk -f

の結果に合わせて書き換える。
面倒な場合は

/dev/mapper/centos-root /                       xfs     defaults        0 0
/dev/sda2 /boot                   xfs     defaults        0 0
/dev/sda1          /boot/efi               vfat    umask=0077,shortname=winnt 0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

のようにUUIDではなく、デバイス名に書き換えても良い。
OS起動後にUUIDに戻してもいいし、LABELの運用にしてもよい。
ラベルを使用する場合はファイルシステムのラベル変更を参考にデバイスにラベルを設定する。

UEFIブート設定(UUIDを再作成した場合)

UUIDが変更した場合は、UEFIブートの設定を変更する。

efibootmgr -v   #起動順の参照
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0001
Boot0000* CentOS        HD(1,800,64000,7e44aa01-f593-4ce4-8ec8-b3afba558cfc)File(\EFI\CENTOS\SHIM.EFI)
Boot0001* UEFI OS       HD(1,800,64000,7e44aa01-f593-4ce4-8ec8-b3afba558cfc)File(\EFI\BOOT\BOOTX64.EFI)
# efibootmgr -b 1 -B    # 削除
# efibootmgr -b 0 -B    # 削除

-b はbootnum を指定。 -B は--delete-bootnum。
起動順登録

efibootmgr -c -d /dev/sda -p 1 -l '\EFI\centos\shimx64.efi' -L 'CentOS'
  • -dはディスクのデバイスファイルパス
  • -pは/boot/efiのパーティション番号
  • -lはファイルシステム内のブートローダファイルへのパス
Boot0000* CentOS	HD(1,GPT,185b5b92-638c-410a-9718-f5d29b8c22d6,0x800,0x64000)/File(\EFI\centos\shimx64.efi)

こんな感じに登録される。

efibootmgr -o 0000

のように起動順を指定する。

grup2ブート設定ファイル再作成(UUIDを再作成した場合)

chroot後に設定する。

chroot /mnt/sysimage

/boot/efi/EFI/centos/grub.cfgにも古いUUIDが指定されているので再作成する

 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

初期RAMディスク再作成(UUIDを再作成した場合)

古いディスクを探しに行くので再作成。これもchroot後に実行。

cd /boot
mv initramfs-3.10.0-693.el7.x86_64.img initramfs-3.10.0-693.el7.x86_64.img.old
# dracut -f initramfs-3.10.0-693.el7.x86_64.img 3.10.0-693.el7.x86_64

3.10.0-693.el7.x86_64は環境やカーネルのバージョンにより変わる。

ディスク同期

sync;sync;sync

好きなように・・・。


dumpの除外について

http://www.walbrix.com/jp/blog/2008-12-dumpxfsdump.html
d 属性がついているファイルやディレクトリは dumpや xfsdump によるダンプ時に除外することが出来る。
ファイルに d属性を付けるには、

chattr +d ファイル名

とする。
xfsdumpの場合は -e オプション指定時、dumpの場合はインクリメンタルバックアップ時又は -h 0 オプションの指定時に d属性のファイルがスキップされる。

下記は、ホームディレクトリ以下で 100MB以上の大きさのファイルはバックアップ対象外にする例。

find /home -size +100M -exec chattr +d {} \;

[カテゴリ: OS > Linux]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2017年12月27日 01時03分01秒