将数据从常规分区移至lvm

将数据从常规分区移至lvm

我读过一些有关 lvm 的内容,并决定改用它。看起来实际上可以通过 debian 安装程序来设置 lvm,所以我想这将是最简单的。我不确定如何将所有文件复制到新系统。

我想复制我的整个系统,而不仅仅是我的主目录或我的包,我已经搞乱了很多东西,以至于我不知道我的所有配置文件到底在哪里。我在互联网上找到的指南似乎对这一步很茫然,只提到可以做到这一点的工具,而不是如何使用它们,即使用rsync.直觉告诉我,我不能只是rsync将备份的根目录复制到 lvm 系统的根目录,我将复制一些重要的内容,例如 lvm 配置文件,但我不确定到底需要排除什么,同时确保不要排除我可能改变的任何内容。有小费吗?

为了清楚起见,我计划的步骤是:我有一个 1tb 硬盘和一个 250GB 固态硬盘。我想缩小硬盘上的分区,使用可用空间(我有足够的空间)创建两个新分区,并将我的 SSD 和 HDD 分区添加到这些分区作为备份。然后我想擦除我当前使用的 SSD 分区和 HDD 分区,并在它们上设置 lvm(为了简单起见,最好使用 debian 安装程序,但也可以手动)。然后我想以某种方式将所有内容从备份分区复制到新的 lvm 分区。然后擦除备份分区,并调整现有 lvm 分区的大小以包含剩余空间,或者将剩余空间设为 lvm 上的另一个物理卷并以这种方式添加。

答案1

除非您想从头开始重做系统配置,否则不要安装新系统。请注意,您可能想要这样做 - 复制您的主目录,并逐步恢复系统配置,注意 1. 安装等等管理员2. 系统安装程序完成后重新启动后,不要在/etc主目录之外进行更改。但是,如果您想保留现有的安装,将其移动到不同的分区方案比将其移动到另一个安装之上要容易得多。

您无法使用官方工具对分区进行“LVMize”。有一个第三方工具叫blocks to-lvm(最初称为lvmify可以做到这一点。我从来没有尝试过。您可能希望尝试一下,但首先要确保您的备份是最新的。

假设您不使用blocks-to-lvm,您需要在磁盘上腾出一些空间,为 LVM 卷创建一些空间,移动数据,然后重复,直到所有数据都被移动。许多文件系统,包括 ext4(Debian 的默认设置),在安装时无法调整大小,因此您需要从实时系统(例如系统救援光盘或者GParted 现场直播

  1. 缩小现有文件系统之一及其所在分区。假设您正在处理sda并且当前分区号为 1。如果可能的话,将文件系统缩小到原来的一半减去一些更改,因为这样您就可以一次性将其移动。如果你做不到这一点,请缩小文件系统以只剩下很少的可用空间。有两种方法可以做到这一点:

    • 使用parted /dev/sda(文本模式)或gparted(GUI,选择sda)及其resizepart 1/“调整大小”命令。
    • 用于resize2fs /dev/sda1收缩文件系统,然后fdisk /dev/sda或其他一些分区实用程序。请注意,fdisk 没有调整分区大小的命令,您需要删除该分区,然后创建一个除大小外具有相同特征的分区。这并不难,但容易出错;错误复制数字或混淆单位可能会破坏您的数据。

    此时,也删除交换分区,以腾出更多空间。

  2. 在现在的可用空间中,创建一个分区。将其声明为类型 8e (MBR) 或“Linux LVM”(GPT)。假设新分区的编号为 2,因此其设备路径为/dev/sda2

  3. 运行pvcreate /dev/sda2以使新分区成为 LVM 物理卷。这会分配/dev/sda2给 LVM 使用,但尚未将该空间用于任何用途。
  4. Run vgcreate drowhd /dev/sda2,其中drowhd是您为卷组选择的名称。这会在 LVM 上创建一些工作空间:卷组。
  5. 运行lvcreate -n root -L 42g drowhdwhereroot是您为第一个逻辑卷指定的名称,42g 是大小。逻辑卷是您可以放置​​文件系统或交换空间的地方。
  6. 移动一些数据。

    • 如果逻辑卷至少与您现有的根文件系统现在一样大,您可以批量复制它。

      cat /dev/sda1 >/dev/mapper/drowhd-root
      
    • 如果没有足够的空间,则需要将文件分块移动。在新卷上创建文件系统,然后移动一些文件。

      mkfs.ext4 /dev/mapper/drowhd-root
      mount /dev/sda1 /media/old-root
      mount /dev/mapper/drowhd-root /media/new-root
      mkdir /media/new-root/usr
      mv /media/old-root/usr/lib /media/new-root/usr
      umount /media/old-root
      

      现在重复步骤 1-3 以缩小旧的根文件系统并进行更多分区,并/dev/sda3在现在的可用空间上创建一个新的物理卷(例如 )。将新物理卷添加到现有卷组并扩大逻辑卷:

      pvcreate /dev/sda3
      vgextend drowhd /dev/sda3
      lvresize -L 99g drowhd/root
      

      如上所述再移动一些文件。重复此操作,直到移动完所有内容。

  7. 当您移动所有内容后,将以前的数据分区转换为物理卷并将其添加到卷组中:

    pvcreate /dev/sda1
    vgextend drowhd /dev/sda1
    

    您可以使用此空间来扩展现有逻辑卷或创建新逻辑卷。不要忘记为交换创建一个逻辑卷并使用 对其进行初始化mkswap。如果您打算使用此功能,您可能需要留出一些可用空间来创建快照。

  8. 除非您有单独的/boot分区并且没有修改它,否则您需要更新引导加载程序配置。对于蛴螬:

    1. 将新的系统分区挂载到某处:

      mount /dev/mapper/drowhd-root /media/new-root
      
    2. 使一些内存中的文件系统在新根下可用:

      mount --rbind /dev /media/new-root/dev
      mount --bind /proc /media/new-root/proc
      mount --bind /sys /media/new-root/sys
      mount --bind /run /media/new-root/run
      
    3. 在系统中获取命令行:

      chroot /media/new-root
      
    4. 跑步update-grub
    5. 退出 chroot 并卸载所有内容。
  9. 您可能需要更新/etc/fstab(除非您只移动了整个文件系统)cat 您的 fstab 仅使用UUID=LABEL=来识别分区)。编辑该文件以反映新的分区位置。

LVM 本身不会保留有关磁盘的任何配置/etc,它们全部存储在物理卷本身上。下面的配置文件/etc/lvm是 LVM 工具的配置(扫描规则、日志首选项等)以及自动更新的卷排列的缓存。您可以从插入包含 LVM 卷的磁盘的任何系统访问它们。

每个底层块设备使用一个卷组。在极少数情况下,不这样做是明智的。底层块设备通常是磁盘、RAID 阵列或加密卷。在您的情况下,请在硬盘上创建一个 VG,并在 SSD 上创建一个 VG,除非您设置了一些 RAID。

相关内容