V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
abbottcn
V2EX  ›  Linux

存储扩容

  •  
  •   abbottcn · 2020-01-29 10:08:45 +08:00 via iPhone · 4754 次点击
    这是一个创建于 1521 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需在线扩容。

    两台机器,
    机器 A 有一个 2T 的 RAID 0 阵列;
    机器 B 有一个 2T 的 RAID 0 阵列。

    两台机器均具有独立的系统硬盘。
    两台机器网络互通,其中 B 机器可以通过 NFS 挂载 A 上的阵列。

    问题,机器不能停机,可否把两个机器上的独立的 RAID0 阵列合并为一个存储空间,达到接近 4TB 的读写空间?
    9 条回复    2020-01-30 17:15:01 +08:00
    xuanzc880
        1
    xuanzc880  
       2020-01-29 10:20:28 +08:00
    你可以试试通过 iscsi 把另一个机器的硬盘挂载过来,然后再通过 lvm 啥的合并成一个硬盘,不过我感觉两个 raid0 的设备,加上网络访问,安全性堪忧呀.
    abbottcn
        2
    abbottcn  
    OP
       2020-01-29 10:29:26 +08:00 via iPhone
    只在内部私有网络操作。
    网络和外部物理隔离。安全性应该不用考虑。

    我根据你提供的关键词,去看看怎么搞。
    谢谢先。
    Mithril
        3
    Mithril  
       2020-01-29 10:32:26 +08:00
    他说的不是网络安全,是你存储介质。两个 RAID0 加上 iSCSI 比较容易炸。
    @abbottcn
    zydrsnuo
        4
    zydrsnuo  
       2020-01-29 10:47:42 +08:00 via Android
    把两个机器的存储空间合并成一个大的存储,这是分布式存储的概念。你可以搜一下分布式存储的方案,比如 glusterfs ceph 之类的。
    abbottcn
        5
    abbottcn  
    OP
       2020-01-29 12:14:41 +08:00
    @Mithril 谢谢提醒。 看来我理解错了。
    也感谢 @zydrsnuo 的提醒。 我查询下看看具体怎么处理。

    作为备用方案, 我可以把其他的机器上的存储先拿来用。
    因为本人技能有限,目前修改权限,暂时通过 NFS 借用其他机器的存储,是一个最快的解决方案。

    原机器上的 RAID0 是作为专用的读写缓存用的。
    没想到这次计算过程中,产生的读写特别大。
    我也写了一个监控, 算完一个,就立即提取数据, 而后删除 NetCDF 的原文件。

    原来没有预测到这个应用场景,读写缓存弄少了。
    郁闷中。

    再次感谢各位提供解决方案。
    CloudRaft
        6
    CloudRaft  
       2020-01-29 23:06:14 +08:00
    首先要看具体需求:
    a. 仅需要 A 获得 4TB 的读写空间
    b. 需要 AB 均能读写

    需求 a:
    1.B 中的阵列改成 JBOD,除非是万兆互联,否则性能瓶颈在网络 IO 而非磁盘,所以 Raid0 没有意义。
    2.将 B 中的存储空间已 iSCSI 的形式共享给 A
    3.A 中把 iSCSI 磁盘和本地 JBOD 组成 LVM,参考:redhat documentation (新人不能发链接)
    不过这个数据的安全性以及性能....

    需求 b:
    emm....别想了....
    abbottcn
        7
    abbottcn  
    OP
       2020-01-30 13:40:57 +08:00
    @CloudRaft 感谢分享。 其实想要的是存储空间, 机器 A 和 B 都能读写。
    为了节省成本,起初 A 和 B 机器上的 RAID0 读写都是采用主板内置的卡实现的。 我现在也不甚了解,不停机可否修改既有的 RAID0 配置。
    我换了另一思路,监控计算,算完一个,就提取一下数据,而后没用的东西直接删除。这样弄下来,空间基本够用了。
    再次感谢分享解决方案。
    CloudRaft
        8
    CloudRaft  
       2020-01-30 16:03:17 +08:00 via iPhone
    如果 AB 都用的话,对一致性是否有要求?如果没有特别的要求可以用 glusterfs。优势是多终端读写,冗余性可以自控,你可以单副本也就是获得两个 2T 的空间,也可以双副本也就是 1 个 2T 的空间但是任意机器宕机服务不受影响。

    Raid0 改其他的只能重新组,数据不可能保留。raid0 性能虽然好,但是生产环境非常不建议使用,除非是横向复制的负载均衡环境。
    abbottcn
        9
    abbottcn  
    OP
       2020-01-30 17:15:01 +08:00
    @CloudRaft 专业术语我不太懂,比如读写一致性。
    我按照我实际使用场景来描述。
    数据运算过程中,最多同时又 72 个进程对读写缓存进行读写,但是这 72 个读写进程相互独立,不需要访问其他任何一个进程写的数据。 纯粹的已经算完的占用空间,导致后来算完的没有地方存放。

    现在修改了以下控制脚本,任何一个计算,算完毕后,就地提取数据,而后就拿走。
    这样操作之后,空间问题基本解决了。

    RAID0 的可靠性问题,可以忽略不计。
    我的场景中,仅仅用于读写缓存。

    当然也可能涉及,比如 A 机器的读写放在本地的 RAID0 阵列; B 机器的读写放在其本地的 RAID0 阵列。
    对,最开始就是每个机器都有本地读写。
    后来也面临一个实际的问题,
    如果要“续算”,我用到的计算程序,需要知道之前运行用过的原始路径。
    而后续的计算,负责计算的机器,未必是同一个(由 slurm 负责分派机器),
    所以就拿到共享的读写空间了。

    不过稍微变通一下思路,暂时解决问题了。
    感谢各位提供思路,我也借鉴了部分灵感。 多谢多谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4007 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:15 · PVG 18:15 · LAX 03:15 · JFK 06:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.