zfs快照功能測試
4 月底新的 ubuntu22.04 系統發佈的時候,好奇心讓我選擇了 zfs 文件系統,早有耳聞 zfs,後來自己安裝更新 linux 內核 deb 包的時候,發現無法引導系統,彼時有點慌,因爲 zfs 文件系統無法識別,沒辦法只能上網查詢資料,原來因爲開源協議的問題,內核並沒有像 ext4 那樣包含 zfs 的相應處理模塊,有糾紛的話,Oracle 的律師會發律師函。
題外話不多說,既然 ubuntu 官方提供了對應的文件系統選項,加上 bsd 等也選用 zfs 文件系統,肯定有其獨到之處,對於窮苦大衆來說,zfs 的 snapshot 即快照功能絕對夠實用,測試過程如下
1. 先看看基本狀況
1 ➜ mephisto.cc git:(main) zpool list
2 NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
3 bpool 1.88G 244M 1.64G - - 1% 12% 1.00x ONLINE -
4 rpool 472G 23.1G 449G - - 3% 4% 1.00x ONLINE -
5 ➜ mephisto.cc git:(main) zpool status
6 pool: bpool
7 state: ONLINE
8 config:
9
10 NAME STATE READ WRITE CKSUM
11 bpool ONLINE 0 0 0
12 5caca429-191c-f046-b1dc-3167ba2d43fa ONLINE 0 0 0
13
14 errors: No known data errors
15
16 pool: rpool
17 state: ONLINE
18 config:
19
20 NAME STATE READ WRITE CKSUM
21 rpool ONLINE 0 0 0
22 1c85b674-1367-5d40-8553-2ba3439be776 ONLINE 0 0 0
23
24 errors: No known data errors
25 ➜ mephisto.cc git:(main) zfs --version
26 zfs-2.1.2-1ubuntu3
27 zfs-kmod-2.1.2-1ubuntu3
28 ➜ mephisto.cc git:(main) zfs list
29 NAME USED AVAIL REFER MOUNTPOINT
30 bpool 244M 1.51G 96K /boot
31 bpool/BOOT 243M 1.51G 96K none
32 bpool/BOOT/ubuntu_o54gp2 243M 1.51G 243M /boot
33 rpool 23.1G 434G 96K /
34 rpool/ROOT 7.42G 434G 96K none
35 rpool/ROOT/ubuntu_o54gp2 7.42G 434G 5.74G /
36 rpool/ROOT/ubuntu_o54gp2/srv 96K 434G 96K /srv
37 rpool/ROOT/ubuntu_o54gp2/usr 140M 434G 96K /usr
38 rpool/ROOT/ubuntu_o54gp2/usr/local 139M 434G 139M /usr/local
39 rpool/ROOT/ubuntu_o54gp2/var 1.55G 434G 96K /var
40 rpool/ROOT/ubuntu_o54gp2/var/games 96K 434G 96K /var/games
41 rpool/ROOT/ubuntu_o54gp2/var/lib 1.51G 434G 1.38G /var/lib
42 rpool/ROOT/ubuntu_o54gp2/var/lib/AccountsService 112K 434G 112K /var/lib/AccountsService
43 rpool/ROOT/ubuntu_o54gp2/var/lib/NetworkManager 144K 434G 144K /var/lib/NetworkManager
44 rpool/ROOT/ubuntu_o54gp2/var/lib/apt 84.4M 434G 84.4M /var/lib/apt
45 rpool/ROOT/ubuntu_o54gp2/var/lib/dpkg 46.3M 434G 46.3M /var/lib/dpkg
46 rpool/ROOT/ubuntu_o54gp2/var/log 41.3M 434G 41.3M /var/log
47 rpool/ROOT/ubuntu_o54gp2/var/mail 96K 434G 96K /var/mail
48 rpool/ROOT/ubuntu_o54gp2/var/snap 1M 434G 1M /var/snap
49 rpool/ROOT/ubuntu_o54gp2/var/spool 116K 434G 116K /var/spool
50 rpool/ROOT/ubuntu_o54gp2/var/www 96K 434G 96K /var/www
51 rpool/USERDATA 15.7G 434G 96K /
52 rpool/USERDATA/mephisto_fmrvh5 15.7G 434G 15.7G /home/mephisto
53 rpool/USERDATA/root_fmrvh5 1.03M 434G 1.03M /root
2. 確認測試文件 404.jpg 存在
1 ➜ mephisto.cc git:(main) ls -al ~/Pictures/iPhone
2 total 47
3 drwxrwxrwx 2 mephisto mephisto 3 May 29 12:53 .
4 drwxrwxrwx 4 mephisto mephisto 7 May 26 14:49 ..
5 -rw-rw-r-- 1 mephisto mephisto 43408 May 29 12:53 404.jpg
3. 創建快照,然後刪除文件, 創建快照非常快,秒級
1 ➜ mephisto.cc git:(main) sudo zfs snapshot rpool/USERDATA/mephisto_fmrvh5@9527
2 [sudo] password for mephisto:
3 ➜ mephisto.cc git:(main) rm ~/Pictures/iPhone/404.jpg
4 ➜ mephisto.cc git:(main) ls ~/Pictures/iPhone/404.jpg
5 ls: cannot access '/home/mephisto/Pictures/iPhone/404.jpg': No such file or directory
4. 再回滾快照,搶救被刪除的 404.jpg,實測回滾也非常快,畢竟改動少
1 ➜ mephisto.cc git:(main) sudo zfs rollback rpool/USERDATA/mephisto_fmrvh5@9527
2 ➜ mephisto.cc git:(main) ls ~/Pictures/iPhone/404.jpg
3 /home/mephisto/Pictures/iPhone/404.jpg
4 ➜ mephisto.cc git:(main) echo "nubility"
5 nubility
5. 查看當前有哪些快照,9527 就是剛剛創建的
1 ➜ mephisto.cc git:(main) zfs list -t snapshot
2 NAME USED AVAIL REFER MOUNTPOINT
3 rpool/USERDATA/mephisto_fmrvh5@9527 3.17M - 15.7G -
6. 再創建個 9528 的快照, 不重複測試了,文件系統還是很靠譜的
1 ➜ mephisto.cc git:(main) sudo zfs snapshot rpool/USERDATA/mephisto_fmrvh5@9528
2 [sudo] password for mephisto:
3 ➜ mephisto.cc git:(main) ✗ zfs list -t snapshot
4 NAME USED AVAIL REFER MOUNTPOINT
5 rpool/USERDATA/mephisto_fmrvh5@9527 3.98M - 15.7G -
6 rpool/USERDATA/mephisto_fmrvh5@9528 0B - 15.7G -
另外,zfs 的存儲池 zpools 也很好使用,不需要額外的卷管理系統去使用一個以上的設備,個人創建 NAS 的時可用上,因爲沒有額外的磁盤進行測試,有條件的用戶可以查閱 OpenZFS 或者 Oracle 的相關文檔進行操作
最後修改於: Friday, March 1, 2024
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。
相關文章:
- Linux和iPhone互傳文件
- Nginx webdav for Joplin
- Ubuntu 安裝LDAP客戶端
- lvs端部署
- Ubuntu notify-send 定時通知
- alacritty 終端使用
- 搭建樹莓派無線路由器