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功能非常的强大,支持和应用的场景也很丰富,上面操作并不完全,后面再慢慢丰富和优化。如有不对的地方,请各位大佬指正,谢谢~
另参考文档如有侵权,请联系我,立删!感谢开源,拥抱开源~
linux内核zfs,Linux上使用ZFS相关推荐
- 【Linux 内核】Linux 内核源码目录说明 ① ( arch 目录 | block 目录 | certs 目录 | crypto 目录 | Documentation 目录 )
文章目录 一.arch 目录 二.block 目录 三.certs 目录 四.crypto 目录 五.Documentation 目录 在上一篇博客 [Linux 内核]Linux 内核源码结构 ( ...
- 【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )
文章目录 一.Linux 内核在操作系统中的层级 二.Linux 内核子系统 三.Linux 内核子系统之间的关系 一.Linux 内核在操作系统中的层级 Linux 内核 所在层级 : 整个计算机系 ...
- linux内核和发行版本的关系,简述Linux内核和Linux发行版的区别
做服务器运维工作,要经常和Linux的版本号打交道,但一直搞不明白Linux内核和Linux发行版到底是个啥东西.其实要理解Linux内核和Linux发行版之间的关系,只要能理解下面的关系就可以了: ...
- 国嵌linux内核编程,linux内核--那些年看国嵌视频学习
1.linux系统构成 由用户空间和内核空间构成.其中用户空间由应用程序和C库:内核空间由系统调用接口.kernel.架构代码.硬件设备平台 为什么linux系统会被划分为用户空间和内核空间?处于安全 ...
- 深入理解Linux内核 学习Linux内核的一些建议及书记推荐
深入理解Linux内核 学习Linux内核的一些建议_华清远见教育集团 经典书籍 待到山花烂漫时,还是那些经典在微笑. 有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验.首先是5本 ...
- 一文看懂Linux内核!Linux内核架构和工作原理详解
linux内核相关视频解析: 5个方面分析linux内核架构,让你对内核不再陌生 90分钟了解Linux内存架构,numa的优势,slab的实现,vmalloc的原理 手把手带你实现一个Linux内核 ...
- 深度:一文看懂Linux内核!Linux内核架构和工作原理详解
简介 作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址.目前支持模块的动态装卸(裁剪).Linux内核就是基于这个策略实现的.Linux进程1.采用层次结构,每个 ...
- 【Linux 内核】Linux 内核特性 ( 组织形式 | 进程调度 | 内核线程 | 多平台虚拟内存管理 | 虚拟文件系统 | 内核模块机制 | 定制系统调用 | 网络模块架构 )
文章目录 一.Linux 内核特性 1.Linux 内核组织形式 2.Linux 进程调度 3.Linux 内核线程 4.Linux 内核多平台虚拟内存管理 5.Linux 虚拟文件系统 6.Linu ...
- Linux内核和Linux发行版(了解)
Linux内核和Linux发行版(了解) Linux内核:Linux内核是一种开放源码的操作系统,由Linux Torvalds(Linux之父)负责维护,提供硬件抽象层.硬盘及文件系统控制及多任务功 ...
- linux内核与Linux发行版本区别
linux内核:Linux内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层.硬盘及文件系统控制及多任务功能的系统核心程序. linux发行版本:Linux发行版就是由Linux内核 ...
最新文章
- 盘点类别级物体6D位姿估计
- 鸟哥的Linux私房菜(基础篇)- 第二十五章、 Linux 备份策略
- 【示例】C语言中利用数组存放函数指针
- PHP如何连接MySQL数据库
- 广义表的学习(原理和代码)
- python父亲节祝福_父亲节祝福语精选简短 父亲节祝福语简短独特
- java 多个异常处理_Java 多个异常共享同一个异常处理器的方法
- java程序运行三步骤 理解编译
- 贴一个数据结构老师布置的作业(各种排序) c 语言实现
- 剖析SpringSession的redis原理
- 基于比较的排序算法集
- spring boot 教程(二)模板依赖
- php 文件上传$_FILES中error返回值详解
- RetinaNet算法详解及其在垃圾检测中的应用
- CycleGAN算法原理(附源代码,可直接运行)
- 福晶科技与九章量子计算机,量子计算机“九章”横空出世,还要光刻机吗?12月3日,中国量子计算机“九章”横空...
- json解析教程(1)程序员不得不掌握的数据格式json
- R语言图像处理EBImage包详解
- 【华为OD机试真题JAVA】英文输入法单词联想功能
- 计算机职业生涯规划书图文并茂,计算机职业生涯规划书范文