iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
IT管理

用UNRAID打造AIO全生態系列 第 21

Script:BTRFS Scrub

  • 分享至 

  • xImage
  •  

好了,終於要講解最後一個實作腳本了/images/emoticon/emoticon31.gif


這可說是維持著整個AIO System很重要的功能呢!
因為此功能能檢查Cache上的錯誤,讓重要的系統鏡像如:

  • Docker的docker.img
  • VM的libvirt.img
    不要發生任何錯誤

1.BTRFS Scrub原理

在UNRAID中,這些System img本身並沒有寫入容錯機制
而是靠BTRFS Scrub,利用檔案系統層級來檢查每個磁碟上的的中繼資料是否與檢查碼相符合
有點像Parity的XOR機制
只是它是把檢查碼儲存在各個磁碟上,UNRAID Array則是儲存在Parity碟

2.BTRFS Scrub使用時機

一般來說,會使用在高頻率讀寫的Cache碟
特別是Docker System img,高頻率的讀寫可不保證寫入的資料不會發生錯誤
這就是為什麼Cache的檔案格式一定要用btrfs的原因

3.腳本實作與撰寫

當然跟上篇一樣,UNRAID很多功能都只能手動運行
最好能利用自動化腳本來解決,才能真正一勞永逸
於是我寫了個簡單腳本
利用內建scrub指令加上notify.php實現自動化!

#!/bin/bash
/usr/local/emhttp/plugins/dynamix/scripts/notify -e "scrub_array" -s "Scrub Cache Drive" -d "Scrub of cache drive started" -i "normal"
echo `btrfs scrub start -rdB /mnt/cache`
if [ $? -eq 0 ]
then
  /usr/local/emhttp/plugins/dynamix/scripts/notify -e "scrub_array" -s "[Scripts]Scrub Cache Drive" -d "Scrub of cache drive finished" -i "normal"
else
  /usr/local/emhttp/plugins/dynamix/scripts/notify -e "scrub_array" -s "[Scripts]Scrub Cache Drive" -d "Error in scrub of cache drive!" -i "alert"
fi

撰寫腳本心得
這裡要連續調用不同參數的notify.php,故if判斷式無法使用php寫法來精簡


上一篇
Script:File Auto Balance
下一篇
Docker:系統權限與Port Mapping
系列文
用UNRAID打造AIO全生態31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言