我在一家醫療設備供應商工作。我們在一台機器上有幾個分割區:SquashFS(用於作業系統文件,兩個作業系統分割區,只讀的squashfs),一些引導分割區(3x FAT32)和一個DATA分割區(120Gb,rw,ext4)。
問題是,作為醫院使用的設備,有時他們會拔掉設備的插頭,有時我們會遇到隨機問題,這些問題似乎與 DATA 分割區上的資料損壞有關。問題是,醫療軟體會記錄很多內容,所以我想有時會發生寫入,機器可能會硬關閉,並且它似乎會損壞相鄰檔案。
不管怎樣,我想也許將資料分割區上的 ext4 變更為像 ZFS 這樣的寫入時複製 FS 會有所幫助。但有一件事是…ZFS 是否要求整個磁碟都是 ZFS(zpool 的東西),或者我們可以讓 ZFS 分割區與其他具有不同 FS 的分割區共存於同一磁碟上。
謝謝!
答案1
您不必將整個磁碟格式化為 ZFS。 zpool 可以由整個磁碟和分割區的任意組合建構。
如果確實與同一磁碟上的其他分割區共用 ZFS 成員,則應記住輸入/輸出 (I/O) 效能也是共用的。
在最簡單的配置中,您可以擁有一個由一個 vdev 組成的 zpool,它只是一個分割區或一個裝置。我有一台電腦,格式如下:
root@craptop [~]# zpool status -P
pool: rpool
state: ONLINE
scan: scrub repaired 0B in 00:00:30 with 0 errors on Sun Nov 14 00:24:31 2021
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
/dev/disk/by-id/ata-LITEONIT_LSS-24L6G_S45N8470Z1ZNDW089292-part4 ONLINE 0 0 0
errors: No known data errors
ZFS 成員是以下分區/dev/sda
:
root@craptop [~]# blkid /dev/sda4
/dev/sda4: LABEL="rpool" UUID="3735190874680832032" UUID_SUB="15024274719792138025" TYPE="zfs_member" PARTUUID="a9a5ae01-90cd-4945-a9dd-fbccbfbfc075"
root@craptop [~]# lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda 8:0 0 22.4G 0 disk
├─/dev/sda1 8:1 0 1000K 0 part
├─/dev/sda2 8:2 0 512M 0 part /boot/efi
├─/dev/sda3 8:3 0 1G 0 part /boot
└─/dev/sda4 8:4 0 20.9G 0 part
/dev/sdb 8:16 0 931.5G 0 disk
├─/dev/sdb1 8:17 0 1000M 0 part
├─/dev/sdb2 8:18 0 260M 0 part
├─/dev/sdb3 8:19 0 1000M 0 part
├─/dev/sdb4 8:20 0 128M 0 part
├─/dev/sdb5 8:21 0 884G 0 part
├─/dev/sdb6 8:22 0 25.2G 0 part
└─/dev/sdb7 8:23 0 20G 0 part
/dev/sdc 8:32 1 58.6G 0 disk
└─/dev/sdc1 8:33 1 58G 0 part
如果沒有冗餘或奇偶校驗 vdev(mirror、raidz、raidz2、draid 等),ZFS 可以偵測靜默資料損壞,但無法修正它,因為資料的唯一副本已損壞。
您應該考慮建立一個具有一個或多個冗餘 vdev 的 zpool。
這是我的另一台電腦磁碟陣列1等效的 vdev 稱為鏡像:
root@box1 [~]# zpool status -P
pool: fastpool
state: ONLINE
scan: scrub repaired 0B in 00:04:39 with 0 errors on Sun Nov 14 00:28:40 2021
config:
NAME STATE READ WRITE CKSUM
fastpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/dev/nvme0n1p3 ONLINE 0 0 0
/dev/nvme1n1p3 ONLINE 0 0 0
errors: No known data errors
pool: slowpool
state: ONLINE
scan: scrub repaired 0B in 05:45:50 with 0 errors on Sun Nov 14 06:09:52 2021
config:
NAME STATE READ WRITE CKSUM
slowpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/dev/sda1 ONLINE 0 0 0
/dev/sdb1 ONLINE 0 0 0
logs
/dev/nvme0n1p5 ONLINE 0 0 0
/dev/nvme1n1p5 ONLINE 0 0 0
cache
/dev/nvme0n1p4 ONLINE 0 0 0
/dev/nvme1n1p4 ONLINE 0 0 0
errors: No known data errors
入門
- 設定 ZFS 儲存池通過亞丁·帕迪拉
man 7 zpoolconcepts
補充閱讀
- ZFS 101 — 了解 ZFS 儲存和效能作者:吉姆‧索爾特
- ZFS:您應該使用鏡像 vdev,而不是 RAIDZ。作者:吉姆‧索爾特