linux内核zfs,Linux上使用ZFS

系统信息

cat /etc/os-release

NAME="Ubuntu"

VERSION="18.04.2 LTS (Bionic Beaver)"

ID=ubuntu

ID_LIKE=debian

PRETTY_NAME="Ubuntu 18.04.2 LTS"

VERSION_ID="18.04"

磁盘信息

本文中使用三块1T的ssd固态盘进行操作,磁盘信息如下:

Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors

Disk /dev/sdc: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors

Disk /dev/sdd: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors

说明⚠️:本文着重对 ZFS 部署和基本使用进行详细说明,关于ZFS的相关概念,请详见本文最后的参考文档链接~

安装 ZFS 服务

apt install zfsutils-linux -y

apt install nfs-kernel-server

创建pool池

在 ZFS 中,pool池相当于 RAID 。pool池的创建和使用非常的简单和灵活,ZFS提供了很多的参数可供我们去选择。

创建不同使用场景的pool池

(1) ZFS 实现 RAID0,只需创建一个普通的池:sudo zpool create your-pool /dev/sdb /dev/sdc /dev/sdd

(2) ZFS 中使用 mirror 关键字来实现 RAID1 功能:sudo zpool create your-pool mirror /dev/sdb /dev/sdc

(3) ZFS 将 RAID5 功能实现为 RAIDZ1:sudo zpool create your-pool raidz1 /dev/sdb /dev/sdc /dev/sdd

(4) ZFS 将 RAID6 功能实现为 RAIDZ2:sudo zpool create your-pool raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde

(5) ZFS 将 RAID6 功能实现为双 mirror 关键字:sudo zpool create your-pool mirror /dev/sdc /dev/sdd mirror /dev/sde /dev/sdf

说明⚠️:

(1)本文着重讲解 ZFS 部署和基本使用,关于 RAID 相关概念和知识点,请详见本文最后的参考文档链接~

(2)使用 RAID1,磁盘的使用率只用50%;

(3)使用 RAID5 要求磁盘至少是 3 块;

(4)RAID6 与 RAID5 几乎完全相同,但它至少需要四块盘;

(5)RAID10 至少需要四块盘,但只能使用一半的空间,即磁盘使用率为50%;

实战创建 RAIDZ1 类的pool

主要步骤如下:

(1)查看裸盘 ID 号:ll /dev/disk/by-id/,详细信息如下示例:

wwn-0x5002498e20d23d09 -> ../../sdb

wwn-0x5002498e29d76d78 -> ../../sdc

wwn-0x5002498e27d45d91 -> ../../sdd

(2)创建 RAIDZ1 类的pool池

sudo zpool create -f data_ssd raidz wwn-0x5002498e20d23d09 wwn-0x5002498e29d76d78 wwn-0x5002498e27d45d91

说明⚠️:我们可以通过df -h命令查看到 data_pool 池已经创建并挂载,截取关键信息如下:

data_ssd 1.8T 128K 1.8T 1% /data_ssd

有几点信息需要注意下:

原裸盘数量是3块,总共大小为3T,磁盘的可使用空间为2T左右。这是因为我们采用的是 RAIDZ1 (相当于RAID5);

挂载路径 /data_ssd 无需提前创建;

(3)查看 pool 池状态

sudo zpool status,详细信息如下:

pool: data_ssd

state: ONLINE

scan: none requested

config:

NAME STATE READ WRITE CKSUM

data_ssd ONLINE 0 0 0

raidz1-0 ONLINE 0 0 0

wwn-0x5002498e20d23d09 ONLINE 0 0 0

wwn-0x5002498e29d76d78 ONLINE 0 0 0

wwn-0x5002498e27d45d91 ONLINE 0 0 0

errors: No known data errors

(4)启用 pool 池压缩功能

zfs set compression=on data_ssd

(5)启用 pool 池共享功能

zfs set sharenfs=on data_ssd

启用共享功能后,ZFS 文件系统可以像 NFS 和SMB 那样共享给远程主机使用~

(6)查看存储池的属性

sudo zfs get all data_ssd,简单列出几行以供参考:

NAME PROPERTY VALUE SOURCE

data_ssd type filesystem -

data_ssd creation Thu Aug 15 7:07 2019 -

data_ssd used 21.5G -

data_ssd available 1.73T -

data_ssd referenced 30.6K -

data_ssd compre***atio 1.00x -

data_ssd mounted yes -

data_ssd quota none default

data_ssd reservation none default

data_ssd recordsize 128K default

data_ssd mountpoint /data_ssd default

data_ssd sharenfs on local

data_ssd checksum on default

data_ssd compression on local

说明⚠️:我们可以看到compre***atio和sharenfs均是可用状态~

(7)创建 ZFS 文件系统

zfs create data_ssd/test

说明⚠️:挂载路径 /data_ssd/test 无需提前创建

(8)查看 ZFS 文件系统信息

zfs get all data_ssd/test

(9)关闭 ZFS 文件系统压缩功能

zfs set compression=off data_ssd/test

(10)查看 ZFS 池和文件系统空间使用信息

zfs list或zfs list data_ssd/test

(11)删除 ZFS 文件系统

zfs destroy data_ssd/test

(12)删除 ZFS 池

zpool destroy data_ssd

扩展

查看系统上某块盘的SN码,如 sdc 这块盘:hdparm -i /dev/sdc

测试关闭/启用 ZSF 压缩功能,磁盘读写速度:

time dd if=/dev/zero bs=1024000 count=100000 of=100GB.file <== 详见参考文档链接

参考文档

最后

ZFS功能非常的强大,支持和应用的场景也很丰富,上面操作并不完全,后面再慢慢丰富和优化。如有不对的地方,请各位大佬指正,谢谢~

另参考文档如有侵权,请联系我,立删!感谢开源,拥抱开源~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值