磁盘正在使用时重新分区?

磁盘正在使用时重新分区?

我有两个密切相关的问题,因此我将它们保留在一个 SF 问题中:

问题 1

我有一台 Linux (debian) 服务器,必须尽量减少停机时间。磁盘有两个分区,一个是/(ext3),一个是交换分区。我想将其移动/home到自己的分区,因为出于某种原因,它最初是将所有内容都放在一个分区中构建的;但是,我不想让机器停机几分钟来调整磁盘大小并创建新分区。

我可以/在使用过程中调整大小吗?

问题2

我最终想重新安装同一台服务器。同样,无需停机。使用问题 1 的答案调整磁盘大小后,我可以在原始系统仍在线的情况下以某种方式安装在新分区上吗?因此,我可以简单地重新启动进入新操作系统并删除旧操作系统分区,然后调整新分区的大小以接管旧分区(现已删除)的空间。

感谢您对这个有点奇怪的问题的回答,很遗憾,我在这个特定项目中缺少一点服务器。不幸的是,我怀疑这无法完成,但我认为在得出结论之前最好先检查一下。

一些说明和问题:

  • 也许有一个可行的解决方案就是让我以某种方式启动到网络托管内核?
  • 无法使用第二张磁盘,不幸的是,这台机器位于一个非常不灵活的托管服务提供商处。
  • 暂时取消交换是否可以实现这一点?这样我就有 2GB 未分区的空间可以使用。

答案1

问题 1:

否。来自 man resize2fs “如果文件系统已安装,则可以使用它来扩展已安装文件系统的大小,假设内核支持在线调整大小。”

问题2:

是的,您可以在使用 chroot 运行时安装在不同的分区上。

给它买一个额外的磁盘。或者,如果您没有物理访问权限,请在另一台服务器在线时将内容迁移到该服务器,然后进行快速切换。

回答编辑:

是的,还有其他选项可用于处理网络问题,从而帮助您减少停机时间。这取决于您的服务器正在做什么以及您有哪些选项。我给出了一个通用解决方案,即在两台服务器都在线的情况下将数据移动到另一台服务器,停止服务器 1,启动服务器 2 执行服务器 1 正在执行的操作。修复服务器 1,然后以相同的方式返回到它。

如果没有网络,您可以执行 swapoff,使用 chroot 在交换中安装 linux,重新启动或尝试使用 kexec,然后快速缩小其他分区并添加一个新分区。

答案2

为自己找一个新的托管服务提供商。正如 Ian 已经回答的那样,您无法缩小已安装的 ext3 文件系统,但是一旦您有了空间,您就可以在 chroot 中重新安装(使用 debootstrap)并重新启动以进行切换。

删除交换是获取第 2 部分空间的一种可能性,因为如果您可以将重新安装所需的所有内容挤进交换分区,则可以启动该分区,摆弄当前根分区使其稍微小一些并将其变成 /home,在新释放的空间中创建一个新的交换分区,然后从那里继续。

考虑到停机时间是必然的,而且可能会搞砸事情,造成巨大的混乱,更不用说你做这一切所花费的时间(包括在发生问题时清理所需的成本),我首先会解决你的托管问题。只是因为你如果真的必须这样做,并不意味着你应该被无用的供应商强迫这样做。

哦,下次试试 LVM,只分配你需要的空间。ext3 的在线扩展真是天赐之物。

相关内容