V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fonlan
V2EX  ›  服务器

在 PVE 的不同虚拟机/LXC 容器之间共享磁盘

  •  
  •   fonlan · 175 天前 · 2040 次点击
    这是一个创建于 175 天前的主题,其中的信息可能已经有所发展或是发生改变。

    趁着双十一入手了 EQ12 当软路由,装了一块 NVME 做系统盘,又用 SATA 口挂了一块 2T 的 SSD 做下载盘。

    计划是用一个虚拟机运行 qBittorrent 做下载器,另外运行一个或多个虚拟机/LXC 容器来跑 jellyfin 、alist 之类的服务。所以这几个虚拟机之间需要能同时访问这块 2T 的 SSD 作为数据源。

    现在 PVE 装好了,但是没找到合适的的协议来共享磁盘,NFS 应该可以,但 NFS 可能有性能损失。这方面有什么比较好的实践吗?

    16 条回复    2024-04-10 17:23:25 +08:00
    freechuzhuo
        1
    freechuzhuo  
       175 天前   ❤️ 1
    pct set 125(lxcid) -mp1 /mnt/sda1,mp=/mnt/sda1
    pve 里挂载
    zhouzm
        2
    zhouzm  
       175 天前
    推荐 samba
    Jisxu
        3
    Jisxu  
       175 天前
    pve 宿主机或者单独一个 omv 给这块 2t 的盘开 smb server ,其他所有要用硬盘的机器都用 smb 协议挂载,你用 nfs 协议也可以,看哪个方便
    iloveayu
        4
    iloveayu  
       175 天前
    你的想法可以实现,如果你对安全要求没那么高,只是家用 那 nfs 可以了,这是最方便配置和稳定的,并且可以多用户同时写入。
    根据我古早的记忆,smb 多用户同时写可能会出些莫名其妙的问题,不知道现在怎么样了。
    laminux29
        5
    laminux29  
       175 天前
    你都软路由,小主机了,还考虑 NFS 性能损失???实在搞不清你的思路。

    我倒是喜欢 SSHFS ,第一是方便部署,能跨内外网,能方便端口映射,而且协议本身自带加密,不用再去考虑加密问题。

    NFS 与 SMB ,主要是部署不方便,如果不组虚拟局域网,异地访问很麻烦,而且安全性也有问题。
    fonlan
        6
    fonlan  
    OP
       174 天前
    @freechuzhuo 我现在用的就是类似的命令,不过因为我用的不是 LXC 容器,是虚拟机所以我是用`qm set 104 --virtio1 /dev/disk/by-id/ata-xxx`这种命令直接把硬盘挂载到虚拟机上去的,但这样的话这块硬盘只有这个虚拟机能用,我现在是想把这块硬盘再共享给其他虚拟机
    fonlan
        7
    fonlan  
    OP
       174 天前
    @laminux29 主要对 NFS 能达到的性能不太了解,网上搜到的一个测试结果是千兆内网下只能达到 11MB 的写入速度,虽然不太相信只能到这么点速度但还是想先找找有没有别的 PVE 原生不依赖网络的共享方法😅
    allplay
        8
    allplay  
       174 天前
    PXE 里面开一个 LXC ,专门映射磁盘,给虚拟机内所有的 LXC 或 docker 使用
    laminux29
        9
    laminux29  
       174 天前
    @fonlan 建议使用 SSHFS ,各种特性综合起来没有短板的选手,可以代替 SMB 、NFS 。
    bt7vip
        10
    bt7vip  
       174 天前 via Android
    我的存储管理方案
    硬盘挂载到 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 视频会因为表情符号导致文件丢失。
    fonlan
        11
    fonlan  
    OP
       174 天前
    @bt7vip #10 嗯,又查了一圈,似乎内网不加密的情况下确实是 NFS 性能最好,我暂时不需要 SAMBA 和 FTP ,我内网用的更多的是 Webdav ,感觉性能比 SAMBA 好
    tingfeng1
        12
    tingfeng1  
       18 天前
    @laminux29 打扰一下,请问是不是服务端打开 ssh server, 然后客户端装个 sshfs ,就可以挂载了
    laminux29
        13
    laminux29  
       17 天前   ❤️ 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 且免费。
    tingfeng1
        14
    tingfeng1  
       17 天前
    @laminux29 非常感谢,想问一下第一条的自动更新是指更新什么
    laminux29
        15
    laminux29  
       16 天前
    @tingfeng1 自动更新时间,也就是自动同步时间。

    对于 Linux 来说,是让 crontab 每隔 1 小时甚至 1 分钟执行一次:ntpdate -d -v 0.centos.pool.ntp.org

    对于 Windows 来说,是加一条计划任务,让系统每隔 1 小时甚至 1 分钟执行一次:w32tm /resync
    tingfeng1
        16
    tingfeng1  
       16 天前
    @laminux29 明白了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2959 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:46 · PVG 16:46 · LAX 01:46 · JFK 04:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.