トップ 一覧 置換 検索 ヘルプ 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先をバックアップしようとする。

!!バックアップ
手順
+バックアップ情報の保存
++efi情報の保存
++fstabの保存
++labelの収集
++パーティッション情報の収集(LVM含むj)
+バックアップ

!バックアップ情報の保存
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  - /dev/sda2 2>>/mnt/backup/backup.log  | gzip -c > /mnt/backup/sda2.dump
 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のスナップショット機能を組み合わせてもいいと思う。

!!リストア
ディスクを交換せずにデータを戻すだけの場合は、データリストア以外の手順は省略して良い。
手順
+パーティッション復元
+データのリストア
+ラベル復元
+efi復元
+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/sda1.dump | xfsrestore - /mnt/boot
 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 {} \;

{{category2 OS,Linux}}