我发现的所有帖子都是关于迁移到新机器或将整个操作系统从一个硬盘迁移到另一个硬盘。我真的不知道我到底在做什么,但我显然是 Linux 专家。
我们目前有一台带有 RAID 配置的 1TB 服务器。我还不确定什么类型的 RAID。我们将需要在接下来的几个月内扩大我们的硬盘空间,而当前大小翻倍将为我们以目前的数据使用率争取几年的时间。
现有 RAID 当前位于 /dev/md1,我们将所有有问题的文件保存在 /srv/Data。
我们想要做的是将此数据目录迁移到新的 2TB RAID 1 设置,并最好保留相同的安装点,这样我们就不必更改数据库中的任何内容。也就是说,我们希望将现有数据移动到这组新的 HDD,但仍将其称为 /srv/Data,以便我们可以立即开始写入,而无需在软件方面进行太多更改。
这是否像将新的 RAID 设备(大概是 /dev/md2)安装为 /srv/Data 并复制现有数据一样简单?
答案1
/dev/md2
首先安装/srv/DataNew
,运行第一轮副本作为根用户(其实我建议同步,恕我直言,这种工作更适合):
rsync -a --delete /srv/Data/ /srv/DataNew
或者,您可以重新运行 cmd - 第二次执行应该更快(rsync 能够跳过已复制的文件和 up2date),并且会给您一个粗略的持续时间,用于估计使用以下命令关闭应用程序需要多少时间实际分区开关的分区 - 见下文。
然后使用 /srv/Data 分区暂时停止并禁用您的应用程序(甚至可以重新启动以确保没有可能导致数据丢失的瞬态写入,确保应用程序不会在启动时重新启动)并重复重新运行相同的内容同步上面的命令作为根用户使用自上一个分区以来旧分区中可能发生的任何更改来更新新分区同步执行。
可能需要重新运行几次,直到 rsync cmd 显示不再有更新 - 这意味着 2 个分区已同步。如果您选择的话,每次重新运行将大约花费上述第二次执行的时间
然后卸载/srv/Data
并/srv/DataNew
修改/etc/fstab
文件以挂载/dev/md1
在/srv/DataOld
和/dev/md2
下/srv/Data
。
然后挂载/srv/Data
(/srv/DataOld
如果您想运行另一个同步检查),或者如果您愿意的话可以选择重新启动,系统应该会出现新的分区。
如果您愿意,可以运行另一个 rsync 检查,这次对新挂载点稍微修改一下 cmd(如果没有瞬时访问,它应该不会显示任何更新):
rsync -a --delete /srv/DataOld/ /srv/Data
现在您可以重新启用并重新启动您的应用程序,这应该不会注意到任何差异(除了额外的磁盘空间)。
最后,如果不再需要它,您可以卸载/srv/DataOld
并删除它的条目/etc/fstab
- 就完成了。
如果您之前没有使用过 rsync,则可能需要空运行 rsync 部分,但使用一些临时/测试目录和作为源的一些较小的目录,这些目录通常不会更改(不存在无法避免的不受控制的瞬变,除非您停止应用程序)只是为了习惯其操作,您可以在安装后使用新分区,因为它是空的:
mkdir /srv/DataNew/rsync_test
rsync -a --delete /some_smaller_dir /srv/DataNew/rsync_test
模拟暂时删除 /srv/Data/some_smaller_dir 中的文件:
touch /srv/DataNew/rsync_test/deleted_file_equivalent
ls -la /srv/DataNew/rsync_test/deleted_file_equivalent
下一个 rsync 应该在新目录中找到并删除该文件(也许还有其他瞬态文件?):
rsync -a --delete /srv/Data/some_smaller_dir /srv/DataNew/rsync_test
ls -la /srv/DataNew/rsync_test/deleted_file_equivalent
下一个 rsync 不应再找到已删除的文件等效项(如果出现其他不受控制的瞬态,请重复):
rsync -a --delete /srv/Data/some_smaller_dir /srv/DataNew/rsync_test
最后删除测试目录:
rm -rf /srv/DataNew/rsync_test
答案2
总之,是的。更具体地说,您需要将新阵列安装在其他位置(不能在同一位置安装两个东西),复制文件,卸载两者,然后将系统设置为在该位置安装新的 raid(编辑 /etc/fstab )。