本篇文章为大家展示了如何在 Linux上运行ZFS,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
ZFS简介:
ZFS是一款128bit文件系统,总容量是现有64bit文件系统的1.84×1019倍,其支持的单个存储卷容量达到16EiB(264byte,即 16x1024x1024TB);
一个zpool存储池可以拥有264个卷,总容量最大256ZiB(278byte);整个系统又可以拥有2^64个存储 池。
可以说在相当长的未来时间内,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 requestedconfig: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 0errors: 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 SOURCEdata_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 defaultdata_ssd reservation none defaultdata_ssd recordsize 128K defaultdata_ssd mountpoint /data_ssd defaultdata_ssd sharenfs on localdata_ssd checksum on defaultdata_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
Linux有哪些版本
Linux的版本有:Deepin、UbuntuKylin、Manjaro、LinuxMint、Ubuntu等版本。其中Deepin是国内发展最好的Linux发行版之一;UbuntuKylin是基于Ubuntu的衍生发行版;Manjaro是基于Arch的Linux发行版;LinuxMint默认的Cinnamon桌面类似Windows XP简单易用;Ubuntu则是以桌面应用为主的Linux操作系统。
上述内容就是如何在 Linux上运行ZFS,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。