自学内容网 自学内容网

PVE测试ZFS扩容场景

PVE测试ZFS扩容场景

操作环境说明,本操作基于proxmox-ve: 8.1.0实操

# root@pve:~# pveversion -v
proxmox-ve: 8.1.0 (running kernel: 6.5.11-7-pve)
pve-manager: 8.1.3 (running version: 8.1.3/b46aac3b42da5d15)

root@pve:/# zfs --versionzfs-2.2.0-pve3
zfs-kmod-2.2.0-pve3

场景说明

  • 起初有一个小硬盘做外置存储,比如 500G, 创建一个 zpool
  • 某阶段增加一个新盘片,比如 1T,扩容 zpool
  • 截止目前有两个硬盘,一个 500G 一个 1T,创建一个 single zpool
  • 这里要增加三个硬盘,都为 1T , 创建一个 raidz1 zpool, 并完成数据迁移
  • 假设某一个盘片损坏,更换新盘 , 并完成数据恢复
  • 在增加1个新盘,总共4个盘,都为 1T , 创建一个 raidz1 zpool, 并完成同步

500G 1T 仅代表磁盘的容量增加幅度, 不代表实际大小

操作步骤

第一阶段一个外接硬盘

# 创建single zpool
zpool create zfs -m /zfs /dev/sdb

# 查看状态
root@pve:/# zpool status
  pool: zfs
 state: ONLINE
config:

        NAME        STATE     READ WRITE CKSUM
        zfs         ONLINE       0     0     0
          sdb       ONLINE       0     0     0

errors: No known data errors

root@pve:/# zfs list
NAME   USED  AVAIL  REFER  MOUNTPOINT
zfs    132K   500G    24K  /zfs


# 上传一些文件

# 开启压缩功能
zfs set compression=on zfs

# 查看属性
zfs get all zfs
zfs get compression,compressratio,dedup zfs

root@pve:/zfs# zfs get compression,compressratio zfs
NAME  PROPERTY       VALUE           SOURCE
zfs   compression    on              local
zfs   compressratio  1.13x           -

# 开启去重功能,测试仅开启后才过滤
zfs set dedup=on zfs

第二阶段,添加新的硬盘

# 移除硬盘
zpool export zfs
# 移除硬盘
echo 1 > /sys/block/sdb/device/delete

# 重新导入

# 列出系统中可导入的存储池
zpool import
# 导入的存储池
zpool import zfs

zpool add zfs /dev/sdc

第三阶段,创建raidz1 zpool,并把数据同步过来

# 原来使用中的磁盘 /dev/sdb /dev/sdc

# 新增的大容量磁盘 /dev/sdd /dev/sde /dev/sdf

# 创建新的存储池
zpool create newZFS raidz1 /dev/sdd /dev/sde /dev/sdf

# 创建快照
zfs snapshot -r zfs@migrate
# 列出快照
zfs list -t snapshot
# 删除快照
# zfs destroy zfs@migrate

# 数据迁移
zfs send -R zfs@migrate | zfs receive -F newZFS

# 删除旧存储池
zpool destroy zfs
# 查看镜像列表
zfs list -t snapshot

# 下面的操作可以忽略, 有强迫症的要 zpool保持原来一直的需要再做一次
# 迁移到临时目录
zpool create -f oldzfs /dev/sdb /dev/sdc
zfs send -R newZFS@migrate | zfs receive -F oldzfs
zpool destroy newZFS
zpool create -f zfs raidz1 /dev/sdd /dev/sde /dev/sdf
zfs send -R oldzfs@migrate | zfs receive -F zfs
zpool destroy oldzfs

# 查看镜像列表
zfs list -t snapshot
zfs destroy zfs@migrate

两台远程机器迁移数据

ssh remote_host “zpool create zfs raidz1 /dev/sdd /dev/sde /dev/sdf”
zfs send -R zfs@migrate | ssh remote_host zfs receive -F zfs

第四阶段,更换一个坏盘片

root@pve:~# zpool status

  pool: zfs
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-9P
  scan: resilvered 0B in 00:00:00 with 0 errors on Mon Jul 22 17:20:38 2024
config:

        NAME        STATE     READ WRITE CKSUM
        zfs         DEGRADED     0     0     0
          raidz1-0  DEGRADED     0     0     0
            sdb     ONLINE       0     0     1
            sda     ONLINE       0     0     0
            sdd     REMOVED      0     0     0

errors: No known data errors

#  sdd     REMOVED      0     0     0
zpool offline zfs /dev/sdd
zpool replace zfs /dev/sdd /dev/sdc
zpool status zfs

数据无价,操作需谨慎~


原文地址:https://blog.csdn.net/Jack_software/article/details/140640315

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!