1、前言
File System Snapshots-檔案系統快照,顧名思義就是將當時的檔案系統照一張像,當我們想要用的時候可以隨時拿出來用,拿來備份也不失為一個好的方法,整個過程大概就是利用指令將指定的分割區 (Mount Point) 快照起來,之後利用 MD (Memory Disk) 裝置把快照檔案模擬成檔案系統讓我們查看當時快照下來的檔案系統。
下列,為執行 File System Snapshots 之前所要注意事項如下:
下列,為執行 File System Snapshots 之前所要注意事項如下:
- 一個檔案系統中最多只能擁有 20 個檔案系統快照。
- 快照只能針對獨立的分割區作用 (ex. /dev/ad0s1g /home)。
- 在執行檔案系統快照時檔案只能存放於該檔案系統 (ex. /var/snapshot /var),當快照 (Snapshots) 完畢後才可進行搬移。
- 快照出來的檔案你會發現跟分割區大小一樣 (若在原分割區並不會佔用到什麼空間的)。
- 若將快照檔案複製到其它分割區就會佔用跟該分割區一樣的實際空間了。
- 若是快照根目錄 (/),則當 mount 來用時會發現其它分割區內是空的 (ex./var、/usr)。
- 可以使用 rm 來刪除快照檔案。
文章目錄
1、前言2、實作環境
3、安裝及設定
步驟1.使用 mount 或 mksnap_ffs 建立 Snapshot
步驟2.掛載快照檔案
步驟3.卸載快照檔案
步驟4.尋找分割區內所有的 snapshot
4、參考
2、實作環境
- FreeBSD 6.2-STABLE
實作的檔案系統其 mount point 如下:
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
3、安裝及設定
步驟1.使用 mount 或 mksnap_ffs 建立 Snapshot
我們可以使用 mount 或 mksnap_ffs 建立 File System Snapshots,下例為對 /dev/ad0s1g / 進行快照 (/,根目錄),而快照的檔案名稱為 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
步驟2.掛載快照檔案
利用 mdconfig 指令將快照檔案 (snapshot20070515) 模擬成 MD (Memory Disk) 檔案系統到 /dev/md2 裝置下,之後將 /dev/md2 檔案系統掛載到 /mnt 下。# mdconfig -a -t vnode -f /snapshot20070515 -u 2 //2,就是指定 /dev/md2
# mount -r /dev/md2 /mnt //將 /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 會發現都是空的。
步驟3.卸載快照檔案
若不想使用快照檔案時我們也可利用下列步驟來卸載快照檔案。# umount /mnt //卸載 (記得先離開 /mnt 哦)
# mdconfig -d -u 2 //卸載 md2
步驟4.尋找分割區內所有的 snapshot
若您要尋找該分割區內所有的快照檔案 (snapshot files),可以利用 find 指令配合 -flags 參數來尋找即可。# find /var -flags snapshot //尋找 /var 分割區內所有的 snapshot