2021/10/5

mintバックアップ

mintログイン

vmwareにログインしてsshの有効化をする - mintのvmwareログイン - アクションのサービスからsshの有効化 image.png (178.3 kB)

  • PowerShellでログイン
    c0118272@jumpsv-deployment-6945bf9cf-lmfsr:~$ ssh root@192.168.100.2
    The authenticity of host '192.168.100.2 (192.168.100.2)' can't be established.
    RSA key fingerprint is SHA256:yPC3IuidWZr1k8FA6+gMiYbIQsJ0LBnQE/w93F/ogMY.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.100.2' (RSA) to the list of known hosts.
    Password:
    The time and date of this login have been sent to the system logs.
    
    WARNING:
       All commands run on the ESXi shell are logged and may be included in
       support bundles. Do not provide passwords directly on the command line.
       Most tools can prompt for secrets or accept them from standard input.
    
    VMware offers supported, powerful system administration tools.  Please
    see www.vmware.com/go/sysadmintools for details.
    
    The ESXi Shell can be disabled by an administrative user. See the
    vSphere Security documentation for more information.
    [root@mint:~] ls
    altbootbank      bootpart4kn.gz   lib64            opt              scratch          tmp              vmimages
    bin              dev              local.tgz        proc             store            usr              vmupgrade
    bootbank         etc              locker           productLocker    tardisks         var
    bootpart.gz      lib              mbr              sbin             tardisks.noauto  vmfs
    

シェルスクリプト作成場所確認

ボリュームの確認

[root@mint:~] ls /vmfs/volumes/
29f92888-f2d38ff8                    StoreNAS-Mint                        da4b25e9-1169cec9-52df-c071d8eb9809
5d313f42-f1a1ff60-d8a4-04d9f521bea2  StoreNAS-Public                      ee7022c2-10aac379
5d3261e0-d2db1a4c-7ef1-04d9f521bea2  StorePCIe                            os-images
5dab27e1-ccc0911a-e743-04d9f521bea2  a8f78bb7-b21e4a25
StoreNAS-Backup-Mint                 ba1fb7ea-c0496d5f-66c3-62e880a44bb4
VMの保存場所確認
[root@mint:~] ls /vmfs/volumes/StoreNAS-Mint
Chai                    ark-1                   fusuke                  load-test-env           test-docker
Futa_test               base-m                  gomi                    next1                   test-docker2
Ono                     bootcamp-tomita-docker  gomi1                   nomura3                 test-master1
Tanaka-test             c0119264-hiroi          ito-k3s-access          okada-bft               test-worker1
akitaya                 cdsl_wordpress          ito-k3s-master2         okada-bft-w0            ubuntu-sr04
akiyama                 chaimint                ito-k3s-task            ppb450-local            ubuntu-study1
anchor-2                docker-ito              ito-k3s-worker1         share-anchor
anchor-3                doctor-stg1             ito-k3s-worker2         sugimoto-1
anchor-user             doctor-stg2             kawatake                takahashi2
anchor-y1               doctor-stg3             kawatake-test           takahashi_1
VMのバックアップ保存先にバックアップを行うシェルスクリプトを作成する StoreNAS-Backup-Mintというディレクトリに作成する (もともと誰かがbackup.shを作ってくれていた)
[root@mint:~] ls /vmfs/volumes/StoreNAS-Backup-Mint
#recycle         20200205_backup  backup.sh        rancher-0.tmp

シェルスクリプト作成

使用できるコマンドの確認

[root@mint:~] ls -la /bin/sh
lrwxrwxrwx    1 root     root            35 Jun 18  2019 /bin/sh -> /usr/lib/vmware/busybox/bin/busybox
busyboxで使用できるコマンドをシェルスクリプトで使用可能 バックアップを行うbackup.shを/vmfs/volumes/StoreNAS-Backup-Mint/backupに作成する 動作確認のためcatを用いてテスト用シェルスクリプト作成 参考資料:https://mseeeen.msen.jp/configure-cron-on-vmware-esxi-6-7/
backup.sh
target_dirs=`find /vmfs/volumes/StoreNAS-Mint/ -type d`

for target in $target_dirs
do
  echo cp -r $target /vmfs/volumes/StoreNAS-Backup-Mint/backup/
done
実行結果
[root@mint:/vmfs/volumes/29f92888-f2d38ff8/backup] chmod u+x backup.sh
[root@mint:/vmfs/volumes/29f92888-f2d38ff8/backup] ls
backup.sh
[root@mint:/vmfs/volumes/29f92888-f2d38ff8/backup] ./backup.sh
cp -r /vmfs/volumes/StoreNAS-Mint/ /vmfs/volumes/StoreNAS-Backup-Mint/backup/
cp -r /vmfs/volumes/StoreNAS-Mint/.sdd.sf /vmfs/volumes/StoreNAS-Backup-Mint/backup/
cp -r /vmfs/volumes/StoreNAS-Mint/kawatake-test /vmfs/volumes/StoreNAS-Backup-Mint/backup/
cp -r /vmfs/volumes/StoreNAS-Mint/okada-bft-w0 /vmfs/volumes/StoreNAS-Backup-Mint/backup/
cp -r /vmfs/volumes/StoreNAS-Mint/ito-k3s-task /vmfs/volumes/StoreNAS-Backup-Mint/backup/
cp -r /vmfs/volumes/StoreNAS-Mint/ubuntu-sr04 /vmfs/volumes/StoreNAS-Backup-Mint/backup/
cp -r /vmfs/volumes/StoreNAS-Mint/okada-bft /vmfs/volumes/StoreNAS-Backup-Mint/backup/
cp -r /vmfs/volumes/StoreNAS-Mint/ito-k3s-worker2 /vmfs/volumes/StoreNAS-Backup-Mint/backup/
cp -r /vmfs/volumes/StoreNAS-Mint/anchor-2 /vmfs/volumes/StoreNAS-Backup-Mint/backup/
: #省略
テストは成功

実際にバックアップで実行するバックアップファイルに変更

backup.sh
##
# create backup
##
date_dir="$(date +%Y-%m-%d-%H-%M)"
echo "date_dir=$date_dir"
mkdir /vmfs/volumes/StoreNAS-Backup-Mint/backup/$date_dir
vim-cmd vmsvc/getallvms | grep -v Name | grep StoreNAS-Mint | awk "{print \$2;}" | while read vm_name
do
  echo "vm_name=$vm_name"
  # get virtual machine id
  vm_id=$(vim-cmd vmsvc/getallvms | grep "$vm_name" | grep StoreNAS-Mint | awk "{print \$1;}")
  echo "vm_id=$vm_id"
  # create a snapshot
  vim-cmd vmsvc/snapshot.create $vm_id $vm_name
  # create dir
  mkdir "/vmfs/volumes/StoreNAS-Backup-Mint/backup/$date_dir/$vm_name"
  # copy backup vmdisc
  vmkfstools -i "/vmfs/volumes/StoreNAS-Mint/$vm_name/$vm_name.vmdk" -d thin "/vmfs/volumes/StoreNAS-Backup-Mint/backup/$date_dir/$vm_name/$vm_name.vmdk"
  # delete snapshot
  vim-cmd vmsvc/snapshot.removeall $vm_id
  # copy backup file
  find /vmfs/volumes/StoreNAS-Mint/"$vm_name"/* -not -name "*.vmdk" -exec cp {} /vmfs/volumes/StoreNAS-Backup-Mint/backup/$date_dir/"$vm_name"/ \;
done
############# ここからStorePCIeのVMのバックアップコードの追加
vim-cmd vmsvc/getallvms | grep -v Name | grep StorePCIe | awk "{print \$2;}" | while read vm_name
do
  echo "vm_name=$vm_name"
  # get virtual machine id
  vm_id=$(vim-cmd vmsvc/getallvms | grep "$vm_name" | grep StorePCIe | awk "{print \$1;}")
  echo "vm_id=$vm_id"
  # create a snapshot
  vim-cmd vmsvc/snapshot.create $vm_id $vm_name
  # create dir
  mkdir "/vmfs/volumes/StoreNAS-Backup-Mint/backup/$date_dir/$vm_name"
  # copy backup vmdisc
  vmkfstools -i "/vmfs/volumes/StorePCIe/$vm_name/$vm_name.vmdk" -d thin "/vmfs/volumes/StoreNAS-Backup-Mint/backup/$date_dir/$vm_name/$vm_name.vmdk"
  # delete snapshot
  vim-cmd vmsvc/snapshot.removeall $vm_id
  # copy backup file
  find /vmfs/volumes/StorePCIe/"$vm_name"/* -not -name "*.vmdk" -exec cp {} /vmfs/volumes/StoreNAS-Backup-Mint/backup/$date_dir/"$vm_name"/ \;
done
##
# delete old backup files
##
# keep latest 3 versions
ls -r /vmfs/volumes/StoreNAS-Backup-Mint/backup | tail -n+4 | xargs -I{} rm -fr /vmfs/volumes/StoreNAS-Backup-Mint/backup/{}
参考サイトhttps://mseeeen.msen.jp/back-up-and-restore-virtual-machines-with-commands/

実行はVMの電源を落とさないと最初の一回はスナップショットを取れないため次回に回す

実行確認

sshが切れても実行し続けるためproxyで実行する

ssh cdsl
ssh proxy
tmux
この状態で実行を行うことでsshを抜けても実行し続けられる Ctrl+B, D で抜けることができる また戻るときは tmux a で戻る

2021/10/7

リストアの確認

anchor-2を例としてリストアしてみる - anchor-2のシャットダウン - anchor-2のアクションから登録解除 - 仮想マシンの登録でStoreNAS-Backup-Mintからバックアップしたファイルをもとにリストアする - 新しく登録したanchor-2をパワーオン - ログインできたか確かめる バックアップがちゃんとできていることが確認できた

cronの設定

cronにシェルスクリプトを追加することにより自動で定期的に実行してくれる

/var/spool/cron/crontabs/に移動 chmod 1744 /var/spool/cron/crontabs/rootで権限付与 vi /var/spool/cron/crontabs/rootで書き込む

#min hour day mon dow command
1    1    *   *   *   /sbin/tmpwatch.py
1    *    *   *   *   /sbin/auto-backup.sh
0    *    *   *   *   /usr/lib/vmware/vmksummary/log-heartbeat.py
*/5  *    *   *   *   /bin/hostd-probe.sh ++group=host/vim/vmvisor/hostd-probe/stats/sh
00   1    *   *   *   localcli storage core device purge
00   0    *   *   *   /vmfs/volumes/StoreNAS-Backup-Mint/backup.sh
再起動するとcronが初期化されるので、起動時にcronの設定を再度追加するため以下のファイルに書き込む /etc/rc.local.d/local.sh
/etc/rc.local.d/local.sh
#!/bin/sh

# local configuration options

# Note: modify at your own risk!  If you do/use anything in this
# script that is not part of a stable API (relying on files to be in
# specific places, specific tools, specific output, etc) there is a
# possibility you will end up with a broken system after patching or
# upgrading.  Changes are not supported unless under direction of
# VMware support.

# Note: This script will not be run when UEFI secure boot is enabled.

/bin/echo "00   0    *   *   *   /vmfs/volumes/StoreNAS-Backup-Mint/backup.sh" >> /var/spool/cron/crontabs/root
/bin/kill $(cat /var/run/crond.pid)
/usr/lib/vmware/busybox/bin/busybox crond

exit 0
参考サイトhttps://mseeeen.msen.jp/configure-cron-on-vmware-esxi-6-7/