之前,我使用 FSTYPE 创建了一个新分区zfs_member
,并且(我认为)我将 GPT 分区标签设置为 ZFS 池的新名称,然后在这个分区中创建了 ZFS 池(zpool create ... /dev/disk/by-partuuid/...
)。看起来像:
$ lsblk --output NAME,FSTYPE,MODEL,LABEL,PTTYPE,SIZE -e 7
NAME FSTYPE MODEL LABEL PTTYPE SIZE
sda Samsung_SSD_860_QVO_1TB gpt 931,5G
└─sda1 zfs_member my-zfs-pool gpt 931,5G
我在几个地方看到,使用 GPT 分区进行 ZFS 应该没问题。在旧的 Sun ZFS 文档中,曾有建议使用整个磁盘,但这似乎早已过时,尤其与 ZFS-on-Linux 无关。(关于这个主题的一些讨论:例如这里)
现在我读到,如果您将整个磁盘传递给,ZFS-on-Linux 无论如何都会自动使用 GPT 对磁盘进行分区zpool create
。(这里是实际禁用自动分区行为的选项的问题。)
请注意,无论如何,我都希望有一些 GPT 分区。因为例如,也许我想稍后缩小分区并在其上放置其他分区。或者其他什么。我认为没有理由不在磁盘上设置 GPT 分区表。
所以我认为自动分区可能会更好。也许 ZFS 的分区方式略有不同,不管出于什么巧妙的原因,这也许更好。所以我在另一个新磁盘上做了这个(zpool create ... /dev/disk/by-id/...(whole-disk)
)。
但现在看起来是这样的:
$ lsblk --output NAME,FSTYPE,MODEL,LABEL,PTTYPE,SIZE -e 7
NAME FSTYPE MODEL LABEL PTTYPE SIZE
sdb WDC_WD60EZAZ-00ZGHB0 gpt 5,5T
├─sdb1 gpt 5,5T
└─sdb9 gpt 8M
FSTYPE
所以,ZFS 确实按照我的要求创建了 GPT 分区表。但是,它没有在分区上设置,也没有设置 GPT 分区标签。
现在来谈谈我真正的问题:
为什么它没有设置 FSTYPE 以及 GPT 分区标签?
之后设置 FSTYPE 是否安全?例如zfs_member
?
之后设置 GPT 分区标签安全吗?例如设置为 zpool 的名称?
答案1
警告:确保您有备份,因为如果您不小心做了“错事”,您可能会丢失所有数据。
这样做可能根本不值得冒险,因为您可以通过其他方式跟踪该分区的类型(例如在物理驱动器上写入)。
通常我们在将数据写入新分区之前执行此操作,这样就没有风险了。
我实际上还没有对正在使用的磁盘进行过此操作,但我确信可以做到。
您可以使用 gdisk (https://www.rodsbooks.com/gdisk/gdisk.html) 设置 GPT 分区名称(又名“标签”)。Gdisk 非常小心地帮助您避免破坏性事故,但是为了确保避免这些事故,您仍然需要了解它的工作原理。
很可能其他分区工具也可以做到这一点,但对于 GPT,我只使用了 gdisk 和 sgdisk。
不必担心分区类型,因为 Linux 不需要它。您可以在名称/标签中包含“ZFS”。
顺便说一句,lsblk
(在 Manjaro 上)显示我的 zfs 镜像如下。
分区是通过将整个磁盘交给 ZFS 完成的(2015 年,在 Ubuntu 上)。
我后来可能将名称更改为“zp0”,但通过 zpool,而不是通过其他工具,使用:
zpool export [poolname]
zpool import [poolname] [newpoolname]
$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
|-sda1 zfs_member 5000 zp0 17149246668572983114
`-sda9
sdb
|-sdb1 zfs_member 5000 zp0 17149246668572983114
`-sdb9
使用你的 lsblk 参数:
$ lsblk --output NAME,FSTYPE,MODEL,LABEL,PTTYPE,SIZE -e 7
NAME FSTYPE MODEL LABEL PTTYPE SIZE
sda ST4000DM000-1F2168 gpt 3.6T
|-sda1 zfs_member zp0 gpt 3.6T
`-sda9 gpt 8M
sdb ST4000DM000-1F2168 gpt 3.6T
|-sdb1 zfs_member zp0 gpt 3.6T
`-sdb9 gpt 8M
编辑:
回答您的“实际问题”:
- 我不知道。ZFS 为我创建了这些条目。
- 别费心了,不值得付出努力/冒险。
- 如果您尝试,请小心(如上所述)。
作为一个更安全更改 GPT 中的标签的替代方法:
尝试更改 ZFS 中的池名称,看看它是否会更改 lsblk 显示的内容:
zpool export [poolname]
然后
zpool import [poolname] [newpoolname]
这是重命名池的正常方法,而且非常安全。
(方括号仅表示要替换的文本;不要包含它们。)
关于 sdx9 分区,我还是不知道,也不太在意,抱歉。只有当您为 ZFS 提供整个原始磁盘时才会发生这种情况。尝试OpenZFS 文档。
我正准备创建另一个 ZFS 镜像,在研究如何最好地做到这一点时看到了这个帖子。这次我将使用 sgdisk 创建 GPT,然后在匹配的 GPT 分区上创建 zpool 镜像(每个驱动器上一个)。我期待着制作一个带有 ZFS 数据分区的 EFI 启动驱动器的可能性,并且这种两步方法对于这种情况是必需的。(除非操作系统是 FreeBSD,在这种情况下我将让操作系统安装程序创建一个 ZFS 启动驱动器。)