File System Snapshots-檔案系統快照,顧名思義就是將當時的檔案系統照一張像,當我們想要用的時候可以在拿出來用,拿來備份也不失為一個好的方法,整個過程大概就是利用指令將指定的分割區(Mount Poing)給快照起來,然後利用 MD (Memory Disk) 把快照檔案模擬成檔案系統讓我們查看當時快照下來的檔案系統,在執行 File System Snapshots 之前注意事項如下:
一個檔案系統中最多只能有 20 個檔案系統快照
快照只能針對獨立的分割區作用 (ex. /dev/ad0s1g /home)
在執行檔案系統快照時檔案只能存放於該檔案系統(ex. /var/snapshot /var)當快照完畢後才可進行搬移
快照出來的檔案你會發現跟分割區大小一樣(若在原分割區是不佔什麼空間的)
若將快照檔案複製到其它分割區就會佔實際空間了
若是快照根目錄 (/),則當 mount 來用時會發現其它分割區內是空的(ex./var、/usr)
可以使用 rm 來刪除快照檔案
【作業環境】
FreeBSD 6.2-STABLE
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 496M 79M 377M 17% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1g 63G 43M 58G 0% /home
/dev/ad0s1e 496M 18K 456M 0% /tmp
/dev/ad0s1f 7.7G 1.5G 5.6G 21% /usr
/dev/ad0s1d 1.4G 32M 1.3G 2% /var
【安裝及設定】
Step1.使用 mount 或 mksnap_ffs 建立 Snapshot
我們可以使用 mount 或 mksnap_ffs 建立 File System Snapshots,下例為對 /dev/ad0s1g /home 進行快照,而快照檔案名稱為 snapshot20070515。
使用 mount
#mount -u -o snapshot /snapshot20070515 /
使用 mksnap_ffs
#mksnap_ffs / /snapshot20070515
執行快照後可以發現快照檔案跟分割區大小竟然一樣?但實際是不佔什麼空間的,但若是將快照檔案搬離建立的分割區就會佔實際的大小了。
#cd / ; ll -h snapshot20070515
-r--r----- 1 root operator 512M 5 15 10:48 snapshot20070515 //快照檔案跟分割區大小一樣
但實際上我的根目錄依然只有使用 79 MB
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 496M 79M 377M 17% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1g 63G 4.7M 58G 0% /home
/dev/ad0s1e 496M 18K 456M 0% /tmp
/dev/ad0s1f 7.7G 1.5G 5.6G 21% /usr
/dev/ad0s1d 1.4G 32M 1.3G 2% /var
查看快照檔案實際佔用空間(前提是放在該分割區)
#du -sh /snapshot20070515 //可以看到快照檔案實際才佔 480 KB 而以
480K /snapshot20070515
把 snapshot20070515 複製到 /home 下 (目前 /home 才使用 4.7 MB)可以發現快照檔案佔用實際分割區大小一樣的空間 (/home 成長到 517 MB)
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 496M 79M 377M 17% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1g 63G 517M 58G 1% /home
/dev/ad0s1e 496M 18K 456M 0% /tmp
/dev/ad0s1f 7.7G 1.5G 5.6G 21% /usr
/dev/ad0s1d 1.4G 32M 1.3G 2% /var
Step2.掛載快照檔案
#mdconfig -a -t vnode -f /snapshot20070515 -u 2
#mount -r /dev/md2 /mnt
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 496M 79M 377M 17% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1g 63G 517M 58G 1% /home
/dev/ad0s1e 496M 18K 456M 0% /tmp
/dev/ad0s1f 7.7G 1.5G 5.6G 21% /usr
/dev/ad0s1d 1.4G 32M 1.3G 2% /var
/dev/md2 496M 78M 378M 17% /mnt //將快照檔案順便 mount 來使用
此時進入 /mnt/etc 可以發現裡面檔案跟你在快照時是一模一樣的,以後要拿來備份 /etc 下的檔案很方便。不過要注意的是前面有提到只能針對獨立的分割區,所以你進入 /mnt/home、/mnt/tmp、/mnt/usr、/mnt/var 會發現都是空的。
Step3.卸載快照檔案
#umount /mnt //卸載 (記得先離開 /mnt 哦)
#mdconfig -d -u 2 //卸載 md2
Step4.尋找分割區內所有的 snapshot
#find /var -flags snapshot //尋找 /var 分割區內所有的 snapshot