系统信息

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

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

linux内核zfs,Linux上使用ZFS相关推荐

  1. 【Linux 内核】Linux 内核源码目录说明 ① ( arch 目录 | block 目录 | certs 目录 | crypto 目录 | Documentation 目录 )

    文章目录 一.arch 目录 二.block 目录 三.certs 目录 四.crypto 目录 五.Documentation 目录 在上一篇博客 [Linux 内核]Linux 内核源码结构 ( ...

  2. 【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )

    文章目录 一.Linux 内核在操作系统中的层级 二.Linux 内核子系统 三.Linux 内核子系统之间的关系 一.Linux 内核在操作系统中的层级 Linux 内核 所在层级 : 整个计算机系 ...

  3. linux内核和发行版本的关系,简述Linux内核和Linux发行版的区别

    做服务器运维工作,要经常和Linux的版本号打交道,但一直搞不明白Linux内核和Linux发行版到底是个啥东西.其实要理解Linux内核和Linux发行版之间的关系,只要能理解下面的关系就可以了: ...

  4. 国嵌linux内核编程,linux内核--那些年看国嵌视频学习

    1.linux系统构成 由用户空间和内核空间构成.其中用户空间由应用程序和C库:内核空间由系统调用接口.kernel.架构代码.硬件设备平台 为什么linux系统会被划分为用户空间和内核空间?处于安全 ...

  5. 深入理解Linux内核 学习Linux内核的一些建议及书记推荐

    深入理解Linux内核 学习Linux内核的一些建议_华清远见教育集团 经典书籍 待到山花烂漫时,还是那些经典在微笑. 有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验.首先是5本 ...

  6. 一文看懂Linux内核!Linux内核架构和工作原理详解

    linux内核相关视频解析: 5个方面分析linux内核架构,让你对内核不再陌生 90分钟了解Linux内存架构,numa的优势,slab的实现,vmalloc的原理 手把手带你实现一个Linux内核 ...

  7. 深度:一文看懂Linux内核!Linux内核架构和工作原理详解

    简介 作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址.目前支持模块的动态装卸(裁剪).Linux内核就是基于这个策略实现的.Linux进程1.采用层次结构,每个 ...

  8. 【Linux 内核】Linux 内核特性 ( 组织形式 | 进程调度 | 内核线程 | 多平台虚拟内存管理 | 虚拟文件系统 | 内核模块机制 | 定制系统调用 | 网络模块架构 )

    文章目录 一.Linux 内核特性 1.Linux 内核组织形式 2.Linux 进程调度 3.Linux 内核线程 4.Linux 内核多平台虚拟内存管理 5.Linux 虚拟文件系统 6.Linu ...

  9. Linux内核和Linux发行版(了解)

    Linux内核和Linux发行版(了解) Linux内核:Linux内核是一种开放源码的操作系统,由Linux Torvalds(Linux之父)负责维护,提供硬件抽象层.硬盘及文件系统控制及多任务功 ...

  10. linux内核与Linux发行版本区别

    linux内核:Linux内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层.硬盘及文件系统控制及多任务功能的系统核心程序. linux发行版本:Linux发行版就是由Linux内核 ...

最新文章

  1. 盘点类别级物体6D位姿估计
  2. 鸟哥的Linux私房菜(基础篇)- 第二十五章、 Linux 备份策略
  3. 【示例】C语言中利用数组存放函数指针
  4. PHP如何连接MySQL数据库
  5. 广义表的学习(原理和代码)
  6. python父亲节祝福_父亲节祝福语精选简短 父亲节祝福语简短独特
  7. java 多个异常处理_Java 多个异常共享同一个异常处理器的方法
  8. java程序运行三步骤 理解编译
  9. 贴一个数据结构老师布置的作业(各种排序) c 语言实现
  10. 剖析SpringSession的redis原理
  11. 基于比较的排序算法集
  12. spring boot 教程(二)模板依赖
  13. php 文件上传$_FILES中error返回值详解
  14. RetinaNet算法详解及其在垃圾检测中的应用
  15. CycleGAN算法原理(附源代码,可直接运行)
  16. 福晶科技与九章量子计算机,量子计算机“九章”横空出世,还要光刻机吗?12月3日,中国量子计算机“九章”横空...
  17. json解析教程(1)程序员不得不掌握的数据格式json
  18. R语言图像处理EBImage包详解
  19. 【华为OD机试真题JAVA】英文输入法单词联想功能
  20. 计算机职业生涯规划书图文并茂,计算机职业生涯规划书范文

热门文章

  1. (HttpClient技术)(Hotmail和outlook系列)Hotmail和outlook的邮箱注册破解
  2. 柏链道捷孟岩:区块链应用,最重要的是经济系统设计
  3. 一个由“大头儿子带小头儿子吃饭”引发的血案
  4. 不要压制冬天的寒冷,也不要抵御夏天的炎热
  5. 2020熔化焊接与热切割模拟考试及熔化焊接与热切割作业模拟考试
  6. Oauth2.0 认证服务器搭建
  7. 你有什么样的职业规划?
  8. 对抗样本(对抗攻击)入门
  9. Android之来电秀实现(二)
  10. IOS手机端浏览器内核