趁着双十一入手了 EQ12 当软路由,装了一块 NVME 做系统盘,又用 SATA 口挂了一块 2T 的 SSD 做下载盘。
计划是用一个虚拟机运行 qBittorrent 做下载器,另外运行一个或多个虚拟机/LXC 容器来跑 jellyfin 、alist 之类的服务。所以这几个虚拟机之间需要能同时访问这块 2T 的 SSD 作为数据源。
现在 PVE 装好了,但是没找到合适的的协议来共享磁盘,NFS 应该可以,但 NFS 可能有性能损失。这方面有什么比较好的实践吗?
1
freechuzhuo 2023-11-04 10:55:25 +08:00 2
pct set 125(lxcid) -mp1 /mnt/sda1,mp=/mnt/sda1
pve 里挂载 |
2
zhouzm 2023-11-04 13:50:41 +08:00
推荐 samba
|
3
Jisxu 2023-11-04 14:01:40 +08:00
pve 宿主机或者单独一个 omv 给这块 2t 的盘开 smb server ,其他所有要用硬盘的机器都用 smb 协议挂载,你用 nfs 协议也可以,看哪个方便
|
4
iloveayu 2023-11-04 14:37:44 +08:00
你的想法可以实现,如果你对安全要求没那么高,只是家用 那 nfs 可以了,这是最方便配置和稳定的,并且可以多用户同时写入。
根据我古早的记忆,smb 多用户同时写可能会出些莫名其妙的问题,不知道现在怎么样了。 |
5
laminux29 2023-11-04 15:28:22 +08:00
你都软路由,小主机了,还考虑 NFS 性能损失???实在搞不清你的思路。
我倒是喜欢 SSHFS ,第一是方便部署,能跨内外网,能方便端口映射,而且协议本身自带加密,不用再去考虑加密问题。 NFS 与 SMB ,主要是部署不方便,如果不组虚拟局域网,异地访问很麻烦,而且安全性也有问题。 |
6
fonlan OP @freechuzhuo 我现在用的就是类似的命令,不过因为我用的不是 LXC 容器,是虚拟机所以我是用`qm set 104 --virtio1 /dev/disk/by-id/ata-xxx`这种命令直接把硬盘挂载到虚拟机上去的,但这样的话这块硬盘只有这个虚拟机能用,我现在是想把这块硬盘再共享给其他虚拟机
|
7
fonlan OP @laminux29 主要对 NFS 能达到的性能不太了解,网上搜到的一个测试结果是千兆内网下只能达到 11MB 的写入速度,虽然不太相信只能到这么点速度但还是想先找找有没有别的 PVE 原生不依赖网络的共享方法😅
|
8
allplay 2023-11-04 17:26:17 +08:00
PXE 里面开一个 LXC ,专门映射磁盘,给虚拟机内所有的 LXC 或 docker 使用
|
10
bt7vip 2023-11-04 19:16:44 +08:00 via Android 1
我的存储管理方案
硬盘挂载到 PVE ,同时加入到 storage 中,方便查看剩余空间和直接备份虚拟机或容器。 起一个特权 lxc>strange ,命名为 A ,挂载硬盘新建一个目录穿透到这个 strange ,在容器中部署 NFS server ,共享出去。 因为 NFS 和 samba 需要特权容器,我有洁癖,所以后面用于接入 strange 的 CLI 全是起的虚拟机。 起一个虚拟机,命名为 B ,挂载 NFS 共享,用于 pt 下载。 起一个虚拟机,命名为 C ,挂载 NFS ,同时部署 samba severe ,用于共享给局域网或虚拟局域网,samba 是有很多缺点,但是挡不住可以在 win10 以上直接加载 iOS 文件,香的一批。 起一个虚拟机,命名为 D ,挂载 NFS ,部署 vsFTPd ,用于 FTP 只读共享。 其中最主要的不是多层结构,是权限下落,不用一路 777 ,仍然安全落到 PVE 下挂载硬盘的子目录切权限可靠。 B C D 服务可随时下线上线重新部署,丝毫不影响其他服务的运行。 B C D 服务都是单独服务用户,即使被入侵,也只是在服务影响之内。交叉文件除外。 以上方案在加一个 wire guard 组网,体验直线上升,Windows 起个 robocopy 备份异地文件,异地挂载 samba ,随时随地登录 PVE 管理,在起个 grafana 做个大屏展示。 目前遇到的问题是:samba 和 FTP 对 emoji 表情符号不支持,下载的 ytb 视频会因为表情符号导致文件丢失。 |
11
fonlan OP @bt7vip #10 嗯,又查了一圈,似乎内网不加密的情况下确实是 NFS 性能最好,我暂时不需要 SAMBA 和 FTP ,我内网用的更多的是 Webdav ,感觉性能比 SAMBA 好
|
13
laminux29 227 天前 1
@tingfeng1
1.SSH Server OS 与 SSH Client OS 都要设置时间自动更新,建议 1 小时一次。Linux 用 crontab ,Windows 用任务计划就行。 2.对于 OS 为 Linux 的 SSH Client OS ,需要在 Linux SSH Client OS 上设置对 SSH Server OS 的证书免密登录。 3.在 SSH Server OS 创建专门的文件夹,作为 SSHFS 的仓库目录。 4.对于 OS 为 Linux 的 SSH Client OS ,安装 sshfs: apt install -y sshfs 然后创建测试目录,进行临时挂载远程 SSHFS 目录测试。测试成功后,删除这个测试目录。 最后编辑 /etc/fstab ,实现开机自动挂载。 5.对于 OS 为 Windows 的 SSH Client OS ,按顺序: 安装 WinFSP; 安装 SSHFS-Win; 安装 SSHFS-Win-Manager-Setup; 以上 3 款软件都在 Github 且免费。 |
15
laminux29 227 天前
@tingfeng1 自动更新时间,也就是自动同步时间。
对于 Linux 来说,是让 crontab 每隔 1 小时甚至 1 分钟执行一次:ntpdate -d -v 0.centos.pool.ntp.org 对于 Windows 来说,是加一条计划任务,让系统每隔 1 小时甚至 1 分钟执行一次:w32tm /resync |
17
Feather0314 178 天前
wsl2 使用的 9p 貌似性能最佳,但是文档少的可怜,linux VM 共享还好,Window VM 弄不成。也不知道咋解决
|
18
Feather0314 178 天前
或者有没有人尝试过 virtiofs 。貌似也是一个很好的解决方案
|
19
insomnia417 166 天前
unraid 解决方案可能更好 原生 SHFS
|