私は医療機器サプライヤーで働いています。1 台のマシンに、SquashFS (OS ファイル用、2 つの OS パーティション、読み取り専用 squashfs) のパーティションがいくつかあり、ブート パーティション (3 つの FAT32) と DATA パーティション (120 Gb、rw、ext4) があります。
問題は、病院で使用されているデバイスであるため、デバイスのプラグが抜かれることがあり、場合によっては、DATA パーティションのデータ破損に関連すると思われるランダムな問題が発生することです。問題は、医療ソフトウェアが多くの情報をログに記録するため、書き込みが発生し、マシンが強制シャットダウンされ、隣接するファイルが破損する可能性があるということです。
とにかく、データ パーティションの ext4 を ZFS のようなコピーオンライト FS に変更すると役立つかもしれないと思いました。ただし、1 つ気になるのは、ZFS ではディスク全体を ZFS (zpool のこと) にする必要があるのか、それとも ZFS パーティションを、異なる FS を持つ他のパーティションと同じディスク上に共存させることができるのかということです。
ありがとう!
答え1
ディスク全体を ZFS としてフォーマットする必要はありません。zpool は、ディスク全体とパーティションの任意の組み合わせから構築できます。
同じディスク上の他のパーティションと ZFS メンバーを共有する場合は、入出力 (I/O) パフォーマンスも共有されることに留意する必要があります。
最も単純な構成では、パーティションまたはデバイスである 1 つの 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 (ミラー、raidz、raidz2、draid など) がない場合、ZFS はサイレント データ破損を検出できますが、データのコピーのみが不良であるため、それを修正することはできません。
1 つ以上の冗長 vdev を持つ zpool を作成することを検討する必要があります。
これは私のもう一つのコンピュータでRAID 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