可以在 LVM 格式的磁盘中设置 zfs/zpool 吗

可以在 LVM 格式的磁盘中设置 zfs/zpool 吗

我在笔记本电脑的 500GB 磁盘上安装了 Ubuntu 14.04 和 LVM。我想设置/试用 zfs/zpool。在不丢失数据的情况下,最好的方法是什么

答案1

假设你只是想“玩一下”ZFS,最简单的选择可能是文件支持池。另一种方法是在 LVM 中创建一个或多个逻辑卷并使用它们。

ZFS 的优点之一是,您可以为它提供几乎任何能够以随机 I/O 形式存储数据的东西,它都会“正常工作”。在生产环境中,你通常希望给 ZFS 一个完整的磁盘(或几个整个磁盘)并让它处理分区等,但为了尝试并了解 ZFS 的工作原理,文件支持池几乎总是完全足够的。

事实上,我有时建议准备一个类似于完整存储布局的文件支持池,因为它允许您在提交之前安全地测试各种更改并观察结果。更改 ZFS 池时的错误可能会造成高昂的代价。

要创建文件支持池,首先要创建一组适当大小的文件。我将创建一个四设备 raidz1 池,其中每个设备(文件)为 2 GB,因此:

sudo mkdir /.zfs
sudo dd if=/dev/zero of=/.zfs/disk1 bs=1M count=2048
sudo dd if=/dev/zero of=/.zfs/disk2 bs=1M count=2048
sudo dd if=/dev/zero of=/.zfs/disk3 bs=1M count=2048
sudo dd if=/dev/zero of=/.zfs/disk4 bs=1M count=2048
sudo chmod 0700 /.zfs

这会在 /.zfs 中产生四个文件,分别命名为 disk1 到 disk4。每个文件大小为 2 GiB,考虑到 raidz1 开销,可用的存储容量略低于 6 GiB(在 raidz1 中,其中一个设备用于奇偶校验数据,因此不可用)。

然后创建池(tank是 ZFS 池的常用示例名称):

sudo zpool create tank raidz /.zfs/disk1 /.zfs/disk2 /.zfs/disk3 /.zfs/disk4

这表示tank使用 defaults 创建一个名为的池,并使用我们刚刚创建的四个文件在该池中设置一个 vdev。创建后将自动导入池,其根文件系统将挂载在/tank。您可以使用 观察结果sudo zpool status,它应该会打印非常类似于以下内容的内容:

  pool: tank
 state: ONLINE
  scan: none requested
config:

    NAME             STATE     READ WRITE CKSUM
    tank             ONLINE       0     0     0
      raidz1-0       ONLINE       0     0     0
        /.zfs/disk1  ONLINE       0     0     0
        /.zfs/disk2  ONLINE       0     0     0
        /.zfs/disk3  ONLINE       0     0     0
        /.zfs/disk4  ONLINE       0     0     0

errors: No known data errors

我们可以使用以下命令确认池的原始大小sudo zpool list

NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
tank  7,94G   120K  7,94G         -     0%     0%  1.00x  ONLINE  -

并使用以下方法获取已使用和可用的存储容量sudo zfs list

NAME   USED  AVAIL  REFER  MOUNTPOINT
tank  74,8K  5,84G  25,4K  /tank

这两个命令都有许多选项来控制打印什么以及如何打印;请分别参阅zpool和的手册页zfs

现在,您可以将文件保存到 /tank 中,并开始使用 ZFS。要导出池(建议在关机前执行此操作),sudo zpool export tank(或sudo zpool export -a导出所有当前导入的池)。要再次导入池,sudo zpool import -d /.zfs -a(或将 替换-a为池的名称tank),-d /.zfs可能需要 ,因为 ZFS 通常不会在该目录中查找设备。如果需要,您可以将这些命令添加到系统启动/关机脚本中。

玩得开心!

相关内容