站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

Snapshot-檔案系統快照

前言

File System Snapshots-檔案系統快照,顧名思義就是將當時的檔案系統照一張像,當我們想要用的時候可以隨時拿出來用,拿來備份也不失為一個好的方法,整個過程大概就是利用指令將指定的分割區 (Mount Point) 快照起來,之後利用 MD (Memory Disk) 裝置把快照檔案模擬成檔案系統讓我們查看當時快照下來的檔案系統,在執行 File System Snapshots 之前所要注意事項如下:

作業環境

實作的檔案系統其 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

安裝及設定

步驟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

參考

[FreeBSD Snapshot Releases]

[FreeBSD 使用手册 18.14 文件系统快照]

[FreeBSD Handbook 18.14 File System Snapshots]

[TwBSD.org - 第六章 檔案系統管理 6.7 檔案系統快照]

Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com