迁移到 LVM

迁移到 LVM

我的 Ubuntu 媒体服务器上的驱动器几乎已满。我希望为机器再增加 2TB 的容量,并希望所有 3.5 TB 都被识别为单个驱动器。更复杂的是,我不想丢失驱动器上的任何数据,也不想重新配置任何程序。

我的计划是使用 LVM 在新驱动器上创建卷组,并使用 dd 复制旧驱动器的内容。然后我计划擦除旧驱动器并将其添加到卷组。

这个计划能成功吗?

我最大的疑问是:-dd 能否毫无问题地将我的安装复制到另一个驱动器?即使它是一个卷组?-dd 能否将 1.5TB 驱动器复制到 2TB 驱动器并保持剩余空间可用。

答案1

如果您已经在使用 LVM:

  • 确保新磁盘已安装并为 LVM 分区(切换 LVM 位)
  • 在新磁盘上创建 PV(pvcreate /dev/your-new-disk
  • 扩展您的 VG 以包含新的 PV(vgextend your-volume-group /dev/your-new-disk
  • pvmove将数据从旧磁盘移至新磁盘。无需dd。(pvmove /dev/your-old-disk将强制 LVM 将数据从旧磁盘移至任何其他可用磁盘。)

如果您尚未使用 LVM:

  • 在新磁盘上创建 PV 和 VG。
  • 将数据复制到新 VG 中的新 LV 中。如果文件系统可用,
    我会使用dump+ ,但如果您愿意,也可以使用或或 even 。restorecpiotardd
  • 格式化旧磁盘,将其变成 PV,然后将其添加到 VG。

以下内容有些主观,与 LVM 无关。

  • dump+ restore
    • 在原始块设备上运行,因此源atime等不受影响,并且ctime可以正确设置目标等。
    • 保留所有硬链接,并且应该足够了解文件系统内部,以保留所有扩展属性、安全策略和其他文件系统特定的元数据。
    • 源和目标的大小可以不同;仅复制正在使用的数据。
    • 应该是最快的方法。
  • cpio/ tar/ rsync/ cp
    • 在已挂载的文件系统上进行操作,因此源atime会发生变化、目标ctime无法保留、inode 编号会发生变化等。
    • 保留硬链接需要将所有已知的 inode 保留在内存中,并且可能正确完成,也可能不正确。工具可能对文件系统了解得不够好,或者没有权限保留扩展属性、安全策略和其他文件系统特定的元数据。
      (例如,ext4 支持亚毫秒时间戳,但据我所知,这些工具都无法保留它们。)
    • 源和目标的大小可以不同;仅复制指定的数据。
    • 在系统调用上花费大量时间(,,,,,,,,,,stat... )。opendirreaddirclosedirmkdiropenreadwriteclose
  • dd
    • 是原始块设备的精确副本。
    • 复制所有块,无论是否正在使用。
    • 复制所有文件系统结构,包括应为唯一的内容(例如 UUID)。
      如果它们是 XFS,则无法在同一系统上同时挂载两者(默认情况下)。
    • 复制期间无法调整大小。
    • 如果文件系统不是很满的话,速度就会相对较慢。

相关内容