ZFS快速起步(zcloud)

ZFS快速起步 是我在 Docker ZFS 存储驱动 基础上完成的进一步卷管理。不算完整操作。

现在为了 单条命令安装kubeflow 准备 ZFS NFS ,则是完整的 HPE ProLiant DL360 Gen9服务器 服务器独立磁盘操作,记录如下

  • 在ZFS操作前检查磁盘 fdisk -l 可以看到磁盘是一个dos分区表,但没有分区(买来时候) :

在ZFS之前的磁盘是一个dos分区表
Disk /dev/sda: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors
Disk model: SDLF1CRR-019T-1H
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x33b32403
  • 在独立磁盘 /dev/sda (这个根据操作系统启动时识别磁盘获得,每个系统可能不同)创建zpool:

在磁盘 sda 上创建ZFS的存储池,名字为 zpool-data
zpool create zpool-data sda
# 设置了从zpool的根开始激活压缩
zfs set compression=lz4 zpool-data

备注

对于数据存储,启用 ZFS压缩 节约存储空间

  • 检查 zpool :

使用 zpool list 检查现有的zpool存储池
zpool list

可以看到输出是一个完整磁盘:

使用 zpool list 检查现有的zpool存储池 可以看到刚创建的 zpool-data
NAME         SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zpool-data  1.73T   456K  1.73T        -         -     0%     0%  1.00x    ONLINE  -
  • 注意,对于完整磁盘使用,ZFS会立即自动创建 GPT 分区表(抹掉之前的dos分区表),并且划分为两个分区以及做好类型标注,一切都是自动化的: 使用 fdisk -l 可以看到如下新的磁盘分区:

zpool命令在完整磁盘上创建存储池的之后,就可以看到GPT分区以及2个ZFS分区
Disk /dev/sda: 1.75 TiB, 1920383410176 bytes, 3750748848 sectors
Disk model: SDLF1CRR-019T-1H
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: CB3CD2A0-1D00-D346-B9DA-8ED7E2EEEC89

Device          Start        End    Sectors  Size Type
/dev/sda1        2048 3750731775 3750729728  1.7T Solaris /usr & Apple ZFS
/dev/sda9  3750731776 3750748159      16384    8M Solaris reserved 1
  • 由于 zpool-data 存储池挂载在 /zpool-data ,所以后续创建的卷,默认都会挂载到这个目录下的子目录:

创建 zpool-data 存储池的 home 卷
# 采用一条命令创建挂载好目录的ZFS卷,这个目录卷用于 y-k8s
zfs create zpool-data/y-k8s
# 如果要挂载到其他可选目录,例如可以增加 -o mountpoint=/y-k8s

# 为 y-k8s Kubernetes集群的不同用途pv创建子卷,例如这里为 install_kubeflow_single_command 提供PV
zfs create zpool-data/y-k8s/authservice-pvc

对于存储池下创建的 卷,需要指定挂载目录;对于 卷下的子卷,可以不指定挂载目录,则会自动按照层次结构进行独立卷挂载,非常巧妙的管理模式

  • 完成后使用 df -h 检查可以看到当前ZFS存储挂载目录:

创建 zpool-data 存储池的 home 卷以及子卷的挂载情况
Filesystem              Size  Used Avail Use% Mounted on
...
zpool-data              860G  1.9M  860G   1% /var/lib/docker
zpool-data/home         860G  128K  860G   1% /home
zpool-data/home/huatai  860G  128K  860G   1% /home/huatai
  • 卷和子卷会从上一级ZFS继承属性,由于在 X86移动云ZFS 已经配置了 zpool-data 压缩属性,所以使用 zfs get compression 可以看到卷和子卷都继承了压缩属性:

    # zfs get compression zpool-data/home
    NAME             PROPERTY     VALUE           SOURCE
    zpool-data/home  compression  lz4             inherited from zpool-data
    
    # zfs get compression zpool-data/home/huatai
    NAME                    PROPERTY     VALUE           SOURCE
    zpool-data/home/huatai  compression  lz4             inherited from zpool-data
    
  • 可以设置卷的quota,例如:

    zfs set quota=10G zpool-data/home/huatai
    
  • 恢复 /home/huatai 目录数据:

恢复/home/huatai目录数据
chown huatai:staff /home/huatai
chmod 700 /home/huatai
su - huatai

(cd /home.bak/huatai && tar cf - .)|(cd /home/huatai && tar xf -)

参考