RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 778557
Accepted
Mikhail Politaev
Mikhail Politaev
Asked:2020-02-01 16:25:38 +0000 UTC2020-02-01 16:25:38 +0000 UTC 2020-02-01 16:25:38 +0000 UTC

在正在运行的操作系统上创建 2 个磁盘的 RAID 1(镜像)

  • 772

1 Tb 磁盘上有 CentOS 6,您需要再添加 1 个磁盘 1 Tb 磁盘并从 2 个磁盘组成 RAID 1,而不会长时间中断系统。做这个的最好方式是什么?他们说您可以从当前磁盘即时执行此操作,但在我看来,在 RAID 1 下重新分区磁盘会破坏当前磁盘布局。这是真的吗,如果是这样,哪种方式更好?谢谢你。

raid
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Мелкий
    2020-02-02T05:22:09Z2020-02-02T05:22:09Z

    因此,您很幸运,系统已启动LVM,它大大简化了程序,并允许您迁移到raid没有任何停机时间。

    只有一个小的“但是”——你需要从某个地方在 PV 上获得 1-2 兆字节的未分配空间——raid 超级块需要这个地方。

    做(一切都以root身份)

    pvdisplay
    

    如果至少有一个,Free PE那么一切都应该发生。理论上,如果有not usable至少 1 或 2 兆字节的区域且具有相同容量的磁盘,它应该可以工作。让我们假设这个地方原来是并继续迁移:

    首先,使用您最喜欢的(任何fdisk、、、、parted等等)磁盘分区实用程序,创建所需的磁盘布局,例如,作为现有磁盘。让我们假设它/dev/sdb1适用于数据/boot和/dev/sdb2数据。

    raid1接下来,我们以最初降级的形式创建几个数组:

    mdadm --create /dev/md0 -l 1 -n 2 missing /dev/sdb1
    mdadm --create /dev/md1 -l 1 -n 2 missing /dev/sdb2
    

    (一般情况下,可能grub已经知道如何从lvm上面启动了md,我好久没试过了)

    然后我们将数据数组初始化为一个新卷LVM:

    pvinit /dev/md2
    

    将已用空间扩展到新驱动器:

    vgextend имя_группы_томов /dev/md2
    

    卷组名称 - 它VG Name在pvdisplay

    现在主要关注点:我们将数据从现有的单个磁盘传输到新阵列:

    pvmove /dev/sda2 /dev/md2
    

    值得在screenor中推出tmux,东西很长。在块级别工作,并将复制Allocated PE. 但它会报告完成的百分比。

    当命令完成时,可能在几个小时后,您需要再次运行它pvdisplay。你会看到两个Physical volume,在这个例子中旧/dev/sdb2的应该Allocated PE等于 0。新的相应地忙于某事。如果不是这样,那么有必要减少一些逻辑卷,我将在最后写。

    因此,旧物理磁盘现在不包含 LVM 中的数据,可以从卷组中删除:

     vgreduce имя_группы_томов /dev/sda2
     pvremove /dev/sda2
    

    现在数据已经位于 RAID1 上,还需要向该阵列添加磁盘:

     mdadm --manage /dev/md1 --add /dev/sda2
    

    重建数组的后台过程可以在cat /proc/mdstat

    仍然要移动/boot该部分。但这是一件如此简单的事情,几乎总是可以被认为是只读的。因此,我们将准备一个新的文件系统

    mkfs.ext4 /dev/md0
    mount /dev/md0 /mnt/
    rsync -av /boot/ /mnt/
    umount /mnt
    umount /boot
    mount /dev/md0 /boot
    

    我认为创建文件系统、挂载和传输内容rsync不会引起意外。

    然后您需要使用加载器将第二部分添加到数组中

    mdadm --manage /dev/md0 --add /dev/sda1
    grub-install /dev/sda1
    grub-install /dev/sdb1
    

    不要忘记修复它/etc/fstab。/boot改变了。但根目录和其他文件系统仍保留在原来的位置UUID。

    现在让我们创建一个配置文件mdadm(根本不需要,但应该保证系统不会在启动时重命名阵列)

    echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
    mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
    

    您需要通过update-initramfs.

    阵列完成同步后,您可以重新启动检查。

    PS:我强烈建议您首先检查您的发行版的虚拟机。一不小心忘了提点什么,好久没这么变态了。


    如果运气不好且磁盘空间不足。有必要从任何 LVM 逻辑卷中锯掉必要的部分。或者/boot,顺便说一下,它的新成本可能会低一些。

    首先要缩小文件系统的大小(要看是什么文件系统,比如XFS原则上是不能缩小的,还有很多需要卸载才能缩小)。我建议减少文件系统的大小,以免意外切断使用的块 -lvreduce没有检查文件系统的大小,而不是那个级别。

    然后减小逻辑卷的大小(在示例中减小 1GB)

    lvreduce -L-1G /dev/имя_группы_томов/уменьшаемый_логический_диск
    
    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5