前言
经过《NAS系列 安装OpenMediaVault虚拟机》的学习,我们已经完成OpenMediaVaut(OMV)这一NAS系统的安装。本文的主要内容是一步步完成OMV的基本配置,包含新建一个简单的ZFS阵列和配置SMB服务。如果某些项目没有被提到,则使用默认设置即可。
另外,OMV的设置更改完后一般都会弹出一个提示窗口咨询你是否应用;如果确定要应用新配置,则手动保存并应用
即可。这种保护机制我是挺喜欢的,因为总有不小心手欠的时候 (ฅ´ω`ฅ)
废话不多说,直接开整!
系统
工作台
这里主要是设置OMV的http/https访问:
一般来说,可以用http://局域网ip:80
(此时80端口可以省略,即http://局域网ip
)。当然,也可以利用Nginx Proxy Manager设置https,这个看我博客的小伙伴应该都知道的,不再赘述。
日期和时间
中国大陆的小伙伴选北京东八区(亚洲/上海)即可:
通知
重点内容
这是非常重要的一个设置,建议大家都安排上。这样,如果NAS状态有什么变化(比如ZFS阵列出问题、或者有侵入者),可以及时预警。具体设置如下,其实就是一个SMTP发件服务:
事件类型按喜好选择即可:
计划任务
这里我添加了一个监测ZFS阵列状态的任务,但你现在不需要添加这个。后面讲到ZFS时会再讲怎么设置:
创建的过程也挺简单:
其实就是个Cron任务:
因此,你也可以直接编辑/etc/crontab
来实现类似的功能;这与其它Linux发行版区别不大。我就经常直接在OMV的/etc/crontab
里添加任务,比如下面这些:
# Run nextcloud cron task every 5 min
*/5 * * * * root docker exec -u 33 nextcloud3-app-1 php -f /var/www/html/cron.php 2>&1 /dev/null
# Create a snapshot in 3:00 am
0 3 * * * root openmediavault_zfs.sh snapshot >/dev/null 2>&1
# Destroy a snapshot in 5:00 am
0 5 * * * root openmediavault_zfs.sh destroy 15 >/dev/null 2>&1
# Clean system logs
* * */10 * * root /usr/bin/clean_system_log >/dev/null 2>&1
# Clean docker logs every 10-day
* * */10 * * root /usr/bin/clean_docker_log >/dev/null 2>&1
很多命令后面有>/dev/null 2>&1
的代码段,是因为我不想某任务在运行时产生日志信息,从而触发OMV的邮件提醒(毕竟清理系统日志并不是什么值得关心的事)。
其它说明
尽管PVE.OMV GUI界面提供了一些选项用于更新OMV,不过我还是建议在PVE.OMV Shell里使用命令:
omv-upgrade
这是最方便、最高效、最安全的OMV更新方法。
Linux内核记得选PVE内核,这样才可以使用ZFS;这在《NAS系列 安装OpenMediaVault虚拟机》中也提到过:
要安装什么插件,就直接搜索安装就行。挺简单。我个人平时用得插件不多。
omv-extras里面有Docker
、Portainer
、Yacht
等选项,但我们只要按以前使用VPS/Linux的习惯管理Docker即可。
总之,更新管理
、插件
、内核
、omv-extras
等选项我平时一般都不怎么使用。
网络
设置静态局域网IPv4地址对于NAS的稳定运行是十分重要的。我在《NAS系列 安装OpenMediaVault虚拟机》里也介绍过了。如果你搞懂了《了解IP地址》的内容,设置是十分简单的。使用安装系统时的默认值或自定义修改都行:
ZFS阵列
虽然OMV提供了一个界面对ZFS阵列进行管理,但我们一般不直接在上面管理,而是直接通过PVE.OMV Shell的ZFS命令进行设置。我一般只用GUI界面简单地查看ZFS状态:
测试环境
我目前所用的ZFS版本为:
zfs --version
# zfs-2.1.9-pve1
# zfs-kmod-2.1.9-pve1
据我观察,ZFS的基本命令很少变化。因此,如果你使用了更高的ZFS版本,不妨尝试一下本教程中的命令。只要阵列还没有正式使用,就可以随意折腾的 (ฅ´ω`ฅ)
改变硬盘ID
这不是使用ZFS阵列的必要操作,但我强烈推荐你做这一步。我们在PVE.OMV Shell中输入下列命令了解一下硬盘的原来ID长啥样:
ll /dev/disk/by-id/ata* -ltr
输出类似于:
lrwxrwxrwx 1 root root 9 Mar 29 21:30 /dev/disk/by-id/ata-WDC_WD40EFZX-68AWUN0_WD-WXA2DA14XTAN -> ../../sdb
lrwxrwxrwx 1 root root 9 Mar 29 21:30 /dev/disk/by-id/ata-WDC_WD40EFRX-68N32N0_WD-WCC7K3NRV01Z -> ../../sdc
...(后面还有一堆信息)
这里的ata-WDC_WD40EFZX-68AWUN0_WD-WXA2DA14XTAN
和ata-WDC_WD40EFRX-68N32N0_WD-WCC7K3NRV01Z
就是硬盘的原始ID。后面的-> ../../sdb
字样提示了硬盘挂载的文件系统。
硬盘的原始ID有几个明显的缺陷:
- 比较复杂,不够直观;
- 如果硬盘改动了在硬盘笼中的位置,硬盘ID与文件系统的对应关系可能会发生变化;
- 如果要替换旧的损坏硬盘,该名字会发生变化(因为每个硬盘都不一样)
因此,一般建议给阵列硬盘使用自定义名。比如,我的ZFS阵列中硬盘名长这样:
这里,4t
代表该硬盘的大小为4T
;-01
就代表1号硬盘。这样记既简单又有条理,逻辑上也更加有效。下面咱们就来讲讲如何实现ZFS阵列硬盘的ID修改。
创建新的ZFS Pool
小伙伴们也可以先看司波图的视频《玩转Freenas系统02——浅谈ZFS,Vdev,池,阵列(催眠警告)_哔哩哔哩_bilibili》了解一些ZFS的入门知识。创建ZFS阵列是有讲究的,小伙伴们不要乱来哈!
这里先简单介绍我是怎么做的。至于ZFS阵列有哪些不同、我为什么选mirror而不选raid-z1/raid-z2、更多硬盘(比如12个甚至是96个硬盘)应该怎么建ZFS阵列等问题我以后再细说。老实说,这个坑也是挺大的!
我直接创建一个基于mirror的新zfs阵列:
# sudo zpool create nas2 mirror <硬盘1> <硬盘2> mirror <硬盘3> <硬盘4>
zpool create nas2 mirror 4t-01 4t-02 mirror 4t-03 4t-04
具体命令解释如下:
如果有警告信息(磁盘之前有旧的ZFS阵列或者旧数据时容易出现该警告):
invalid vdev specification
use '-f' to override the following errors:
/dev/disk/by-vdev/4t-01-part1 is part of potentially active pool 'nas'
/dev/disk/by-vdev/4t-02-part1 is part of potentially active pool 'nas'
/dev/disk/by-vdev/4t-03-part1 is part of potentially active pool 'nas'
/dev/disk/by-vdev/4t-04-part1 is part of potentially active pool 'nas'
添加-f
强制覆盖即可:
zpool create -f nas2 mirror 4t-01 4t-02 mirror 4t-03 4t-04
在未来,如果你要增加新硬盘,除了新建一个pool外,还可以直接在原来的pool上添加更多的vdev来扩容。从整体上看,这些硬盘都属于nas2
这个pool
;添加新硬盘的效果是nas2
被“扩容”了,但原有文件的路径是不会被改变的。这也是磁盘阵列的优势之一。
根据测试文章https://www.servethehome.com/the-case-for-using-zfs-compression的结果,我准备使用lz4
压缩。命令如下:
sudo zfs set compression=lz4 nas2
可以查看zfs阵列的压缩率:
zfs get compressratio nas2
输出内容大致如下:
NAME PROPERTY VALUE SOURCE
nas2 compressratio 1.12x -
值得注意的是,如果你的阵列是新建不久,里面还没有多少文件时,一般这个值是1。压缩率与文件类型有很大的关系。比如,lz4对视频格式的压缩程度是不高的;但文本类的压缩率可以处于较高水平(下面这两个文件夹的内容是完全一样的):
下面,我们来看看该zfs阵列的状态:
zpool status
输出类似于:
pool: nas2
state: ONLINE
scan: scrub repaired 0B in 03:07:20 with 0 errors on Sun Mar 12 03:31:21 2023
config:
NAME STATE READ WRITE CKSUM
nas2 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
4t-01 ONLINE 0 0 0
4t-02 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
4t-03 ONLINE 0 0 0
4t-04 ONLINE 0 0 0
errors: No known data errors
ONLINE
就代表ZFS阵列正常工作。如果是其它状态,有可能是scrub状态,也有可能是阵列有问题。这个以后再细讲。下面,我们再观察一下ZFS阵列的挂载状态:
df -h
结果类似于:
Filesystem Size Used Avail Use% Mounted on
udev 12G 0 12G 0% /dev
... (忽略中间内容)
nas2 7.2T 128K 7.2T 1% /nas2 # 这个就是zfs阵列
这里,nas2
阵列(Filesystem
)已经挂载到/nas2
文件夹(Mounted on
)了。
此外,我发现一个特别情况:
两个非zfs阵列硬盘的温度要远高于zfs阵列硬盘。这不太可能是由于硬盘位置的问题,因为有1个zfs硬盘与8t硬盘是放同一个硬盘笼的。难道这意味着zfs的效率比普通情况下的直通要更好?原因暂时不知,有空查(也有可能是8t硬盘的功耗本来就比较高)。
最后,一定要记得:登陆OMV GUI应用配置使新建pool生效:
只有这样,文件系统
里才正式将nas2
这个pool挂载到OMV GUI里:
否则,该pool的生成可能是暂时的,此时添加的数据可能会在重启后丢失!切记,切记,切记!
ZFS基本命令
我一般是通过PVE.OMV Shell直接管理zfs阵列。常用命令有:
- 观察vdev的情况
zpool list -v
输出类似:
- 观察zpool状态
# zpool status -v <pool name>
zpool status -v nas2 # 或 zpool status
输出类似:
- 添加监测代码:新建一个shell脚本
vim /root/disk_warning.sh
加入以下内容:
#!/bin/bash
result=`zpool status -x`;
if [[ $result != 'all pools are healthy' ]]; then
echo "Something is wrong."
zpool status -v
fi
新建一个cron任务:
echo -e "\n# Check zfs every 1 hours\n0 */1 * * * root /usr/bin/bash /root/disk_warning.sh" >> /etc/crontab
当然,您也可以在PVE.OMV Shell里进行设置:
应用配置生效。这样,系统会每小时检测一次ZFS状态。如果有异常状况,会发邮件通知。不过,一些比较严重的问题系统也会发邮件的(前提是你在系统——通知
中已经允许了ZFS通知)。
- 其它常用命令
# 查看快照
zfs list -t snapshot -o name | /bin/grep nas2@AutoD- | /usr/bin/sort -r
# 查看存储池当前状态和 I/O 状况
zpool status
zpool status -v nas2
# 确定两个快照之间的差异(似乎不管用,原因暂不明确)
sudo zfs diff nas2@AutoD-2023-04-02 nas2@AutoD-2023-03-20
# Unable to obtain diffs:
# Not an earlier snapshot from the same fs
# scrub检查文件完整性。我个人平时并没有专门定期运行
sudo zpool scrub nas2
# 停止scrub
sudo zpool scrub -s nas2
# 偶尔会有些报错(可能与非ECC内存的应用有关)。 scrub后可以用clear清除
sudo zpool clear nas2
# 升级pool。系统提示可以升级的时候再升级。
sudo zpool upgrade nas2
# 删除全部snapshot。使用root用户运行。
zfs list -H -o name -t snapshot | xargs -n1 zfs destroy -R & # 耗时
# 删除快照
sudo zfs destroy -r nas2@AutoD-2022-01-13
# 使用zpool add在原来的pool上添加一个新的vdev
zpool status <pool_name> # 确认硬盘阵列内容及状态。确认无误后:
sudo zpool add <pool_name> mirror <disk1> <disk2> # mirror
sudo zpool add <pool_name> raidz <disk1> <disk2> <disk3> <disk4> # raidz
# 回滚 (不知在docker运行的时候是否可以成功。以后应该在新设备里进行测试)
sudo zfs rollback nas2@AutoD-2022-01-05
ZFS的自动化快照功能
ZFS支持Snapshot(快照)功能。快照可以帮助我们回滚到ZFS文件系统之前某个时间点的状态,这是使用ZFS的优势之一喔!
值得注意的是,强烈不建议将docker软件的根目录挂载到ZFS Pool中。否则,ZFS备份时会有很多overlay相关的snapshot,这可能会影响备份的回滚(我没测试过是否影响,只是推测)。再者,Docker根目录一般并不包含重要的个人文件,因此放至默认的系统盘位置是最合理的,没必要专门搞到ZFS的文件夹中。
我自己写过一个小脚本——huangwb8/openmediavault_zfs,它可以定期进行Snapshot(快照)的生成和删除:
我们进入PVE.OMV的root用户的Home目录:
cd ~
直接在PVE.OMV Shell中运行下列命令:
git clone https://github.com/huangwb8/openmediavault_zfs.git && \
chmod +770 $(pwd)/openmediavault_zfs/openmediavault_zfs.sh && \
ln -s $(pwd)/openmediavault_zfs/openmediavault_zfs.sh /sbin/openmediavault_zfs.sh && \
echo -e "\n# Create a snapshot in 3:00 am\n0 3 * * * root openmediavault_zfs.sh snapshot >/dev/null 2>&1" >> /etc/crontab && \
echo -e "\n# Destroy a snapshot in 5:00 am\n0 5 * * * root openmediavault_zfs.sh destroy 15 >/dev/null 2>&1" >> /etc/crontab
这样会在每天3:00
生成一个快照,而每天5:00
删除一个15天前的快照。更多自定义内容自己看仓库README。
另外,你最好检测一下脚本是否正常生效。我们在PVE.OMV Shell中输入命令:
openmediavault_zfs.sh test
如果输出类似:
Pool: XXX
-rwxrwxrwx
0 3 * * * root openmediavault_zfs.sh snapshot >/dev/null 2>&1
0 5 * * * root openmediavault_zfs.sh destroy 15 >/dev/null 2>&1
...
则表明脚本有效。
我回滚版本的需求很小,可能这与我比较好的文件保存和使用习惯有关——如果我感觉自己要对某文件做重大修改,我往往会新建一个备份在上面操作。我也很少随便删除文档。所以,openmediavault_zfs
写得也比较简单,并没有什么很强的功能。如果你进行Snapshot的时间更频繁(比如每小时1次),那么destroy
对你而言可能并不是很有效。不过,高级用户可以在这个基础上微调源代码。也欢迎小伙伴贡献自己的代码喔!
测试ZFS阵列的读写速度
我们先测试写入速度。直接在PVE.OMV Shell中输入命令:
time dd if=/dev/zero of=/nas2/tempfile bs=64k
该命令会自动生成一个/nas2/tempfile
的临时文件。稍等片刻后按Ctrl+c
停止,此时输出类似:
1979152+0 records in
1979152+0 records out
129705705472 bytes (130 GB, 121 GiB) copied, 69.6504 s, 1.9 GB/s
dd if=/dev/zero of=/nas2/tempfile bs=64k 1.99s user 60.30s system 89% cpu 1:09.66 total
可以看到该ZFS阵列的写入速度为1.9 GB/s
(注意,不是Gbps),这个速度我还是挺满意的。
我们再测试读取速度:
time dd if=/nas2/tempfile of=/dev/null bs=64k
输出类似于:
598277+0 records in
598276+0 records out
39208615936 bytes (39 GB, 37 GiB) copied, 22.3351 s, 1.8 GB/s
dd if=/nas2/tempfile of=/dev/null bs=64k 0.40s user 21.93s system 99% cpu 22.337 total
速度差不多。这就是使用磁盘阵列的好处之一,即获得超越个体磁盘本身的较高IO性能!另外,使用 dd 测试写入速度时,千万要注意 of 后接的文件必须是一个不存在的文件;如果你指定了一个已存在的文件,则可能造成该文件的数据丢失!使用 dd 测试读取速度时, if 后需要接上一个命令生成的文件。
参数解读如下:
- time 有计时作用,dd 用于复制,从 if 读出,写到 of;
- if=/dev/zero 不产生 IO,因此可以用来测试纯写速度;
- 同理 of=/dev/null 不产生 IO,可以用来测试纯读速度;
- bs 是每次读或写的大小,即一个块的大小,count 是读写块的数量。
感兴趣的小伙伴也可以试试hdparm
等软件,我就不作演示了。最后,记得删除临时文件/nas2/tempfile
,它只是测试用,并没有实际用途。
极端环境测试
依次测试重启、停止容器、重启PVE系统、断电。只有全部通过考验,该ZFS pool才可以正式投入使用。
存储器
硬盘
这里的设置我都是默认的:
S.M.A.R.T.
据说,如果硬盘经常性“停转-再转”,会增加硬盘损耗,缩短寿命。因此,我并没有为了省电而设置某种电源模式。至于温度监测,印象中也是默认值:
我对6个西数硬盘都启用了S.M.A.R.T.
监测,但系统盘(LVM-Thin)没有:
在详细信息中可以看一些状态信息:
但我很少看。非阵列硬盘并不被PT下载器使用,没有频繁读写操作,一般出不了什么岔子;我主要关注ZFS阵列的稳定情况。当然,关于良好的频繁读写性能还有赖于transmission/qBitorrent等PT下载器的正确设置,以后会详细介绍,这里按下不表。
最后,设置计划任务,每天短暂检测1次:
文件系统
这里就是将硬盘挂载到系统里使用:
对于一个全新的未分区的硬盘,也可以手动挂载;注意,这个操作可能会格式化硬盘,对旧硬盘会清空数据(可能是这样,有误请指正):
这里要特别注意,OMV系统强烈不推荐在Shell里直接通过mount
或修改某些配置文件来进行硬盘挂载;那些方案只能暂时挂载,重启之后都会失效。
共享文件夹
文件系统搞好后,直接添加文件系统中的某个文件夹即可:
这里我个人建议:每个新文件系统里都应该有一个类似share
的文件夹作为共享内容的根目录,你要共享的文件(夹)都放里面。这样,你在OMV里只需要添加一条共享share
的记录就可以了。
比如,我的ZFS阵列挂载到/nas2
目录下,它的文件结构类似:
├── [ 4] private
│ ├── [ 3] backup
│ └── [ 4] lucky-huangwb8
└── [ 11] share
├── [ 11] docker
├── [ 20] dump
├── [ 2] images
├── [ 2] private
├── [ 3] resources
├── [ 2] snippets
├── [ 6] softwares
├── [ 4] template
└── [ 5] windows
share
的子文件夹,比如dump
、images
、private
、snippets
和template
,是后来我添加SMB/CIFS存储时PVE自动生成的,用于保存各种类似的内容(比如虚拟机备份一般在dump
):
docker
是我自己生成的,主要用于托管各个docker stack的根目录:
/nas2/share/docker
$ tree -h -L 1
.
├── [ 5] duplicati
├── [ 5] jackett
├── [ 3] lxc_backup
├── [ 4] mysql
├── [ 6] nas-tool
├── [ 8] nextcloud
├── [ 5] Sync
└── [ 8] transmission
如果你用过Resilio Sync
或者transmission
等应用,就知道其内容文件都是保存在相应子目录里。这样,只共享share
文件夹就可以在日用PC(示例是Windows 10系统)里访问各种重要数据:
当然,管理视频文件一般使用nas-tool
/jellyfin
/emby
等专用媒体库管理系统,这个以后会出详细教程,这里按下不表。
文件夹权限暂时也不用设置,等以后讲用户(组)的时候再说。
用户组
我们查看一下/nas2
文件夹的情况:
ls -hl / | grep nas2
输出结果类似:
# drwxr-xr-x 2 root root 2 Feb 14 09:18 nas2
这提示该文件夹为root
所有。我建议大家为新zfs pool新建用户组/用户名。举个例子,我准备这样bensz:bensz
。方法很容易,以前在《Linux基础 个人VPS安全》中也讲过。
首先,我们查看所有用户/用户组:
sudo less /etc/passwd
新建用户组(这里我以bensz
为例,大家改一个自己惯用的且与现有用户组不重复的名字即可):
# 345可有较大的取值范围,自己试试
sudo groupadd -g 345 bensz
新建用户(这里我以bensz
为例,大家改一个自己惯用的且与现有用户不重复的名字名字即可):
sudo useradd \
-m -d /home/bensz `#自动创建用户目录`\
-s /bin/bash `#设置默认shell`\
-g bensz `#主组`\
-G sudo `#副组`\
bensz
改从属关系:
sudo chown -R bensz:bensz /nas2/
再次查看文件夹归属:
ls -hl / | grep nas2
输出类似:
drwxr-xr-x 2 bensz bensz 2 Feb 14 09:18 nas2
表明已经成功变更!请注意,OMV GUI后台并不需要特别操作。
我们可以进一步设置新用户密码:
# 设置密码
sudo passwd bensz # bitwarden的强密码走起!
值得注意的是,这个密码是在Shell、GUI里及相关服务里是共用的。不过,你还需要登陆GUI在用户的界面中设置一样的密码:
这里有些细节以后再慢慢补充。
服务
由于NAS共享主要是给日用PC用的,所以我这里仅以SMB为例。其它服务,比如NFS也是类似的,自己摸索或者Google/ChatGPT一下!
添加SMB共享
首先,我们启用并设置SMB服务:
保存并应用变更配置生效。
其次,我们要添加一个共享文件夹(前面步骤已经搞好了共享文件夹),如下图示:
保存并应用变更配置生效。
PVE使用SMB共享
当PVE.OMV中的SMB共享设置好后,一个较合理的方法是直接在PVE系统里挂载一个SMB存储,这样其它虚拟机在使用该SMB时十分方便。
如下图,添加一个SMB/CIFS存储:
设置如下:
有时会添加失败:
这个时候你应该去PVE Shell看一下/mnt/pve
文件夹是否有从属不明的文件夹。它们一般是之前删除的SMB卷的残留;新添加SMB卷时一般不太可能发生该error。重启PVE,直接删除残余文件夹即可(要先确保里面是空的)。
成功之后界面如下:
SMB存储直通给LXC
这里是在PVE.LXC和PVE中操作,而不是PVE.OMV中。
在PVE.LXC Shell
里创建文件夹:
mkdir -p /nas2/{transmission,Sync,share}
停止LXC,并在PVE Shell里直通挂载的SMB存储(按自己的实际情况添加即可):
# 新NAS。103改为自己的LXC ID
pct set 103 -mp0 /mnt/pve/nas2-transmission,mp=/nas2/transmission # explicitly configured lxc.apparmor.profile overrides the following settings: features:nesting, features:mount
pct set 103 -mp1 /mnt/pve/nas2-Sync,mp=/nas2/Sync
pct set 103 -mp2 /mnt/pve/nas2-share,mp=/nas2/share
刷新LXC的资源页面,已经成功挂载3个mp点:
这时启动LXC即可正常使用SMB服务。这里给小伙伴们提个小问题:如果我在LXC Shell里使用root用户在SMB空间中生成一个文件,在PVE.OMV Shell中的用户(组)归属情况是怎样的?为什么?
小结
OMV配置的过程细节还挺多的,我之后会慢慢补充。大家要特别注意《NAS系列 安装OpenMediaVault虚拟机》的“存储器和服务”小节的学习,要彻底吃透磁盘、文件系统、共享文件夹和服务的递进联系,这样才可以在使用OMV这种NAS系统中灵活地配置各种权限,知其然也知其所以然。
我之前有过ZFS阵列从旧NAS转到新NAS的经验,以后整理好再分享。ZFS的使用和维护的细节还是挺复杂的!
如果在设置中有什么问题,欢迎评论区留言!
扩展阅读
- How to set up ZFS RAID 10 (Mirror VDEVS) on Ubuntu 20.04 – UP TO 9 GIGABIT/S TRANSFER SPEED – YouTube:介绍了很多zfs的实用技巧
- 在Linux上安装和使用ZFS | Escape (escapelife.site):介绍了ZFS的常用命令
- PVE直通SATA控制器并直通核显 – 哔哩哔哩 (bilibili.com)
- 2022版通用型PVE_AIO服务器布局教程(下):有关于硬盘直通的细节。
- How to set up ZFS RAID 10 (Mirror VDEVS) on Ubuntu 20.04 – UP TO 9 GIGABIT/S TRANSFER SPEED – YouTube:更改ZFS的硬盘ID。非常实用的技巧!
- RAID-Z2 vs Striped Mirror (RAID10) Performance comparison | TrueNAS Community:mirror和zfs-z2的性能表现比较。
- Linux下用dd命令测试硬盘的读写速度_linux dd测试读写_La victoria的博客-CSDN博客
- 在 Linux 上测试硬盘读写速度 | Verne in GitHub
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍
为什么我的硬盘已经挂载了,但是在omv的gui比如zfs和snapraid里创建阵列的时候下拉菜单里没东西,是omv的问题嘛?