KAL1 LINUX 官方文档之安装 ---BTRFS安装

译者注:是什么btrfs文件系统,它是2007年Oracle开发,支持GPL协议,为了取代Linux早期的ext系列文件系统的下一代文件系统。https://blog.csdn.net/gongxifacai_believe/article/details/88706503

预览

我们要安装ka1i Linux,在apt操作过程中自动创建文件系统快照,以便在升级失败后回滚系统。

Btrfs是用于Linux的现代写时复制(copy on write  CoW)文件系统,旨在实现高级功能,例如池,快照,校验和以及集成的多设备跨接。特别是,快照支持使得Btrfs吸引了裸机上的ka1i安装。虚拟化解决方案(例如VMWare和Virtualbox)提供了自己的快照功能,实际上并不需要在这些环境中使用btrfs。

本演练的快照策略围绕着来自Ubuntu存储库的名为“ apt-btrfs-snapshot”的工具,该工具是“ apt”的包装。该包装程序透明地挂接到apt工作流中,并在任何apt操作之前和之后自动创建快照。这项精巧的小功能使升级失败后可以轻松回滚系统。

快照程序是另一个有用的实用程序,用于创建快照。我们正在通过为其快照创建一个单独的子卷来准备ka1i系统以供快照程序使用,但本演练中未包括快照程序的安装和使用。可在以下网站上找到有关快照程序的详细信息:http : //snapper.io/

安装概述

具有快照功能的ka1i Linux的安装与标准安装非常相似,但以下情况除外:

  1. 我们在中途暂停安装,以便在继续安装之前使用工具“ partman”在命令行上设置btrfs分区和btrfs子卷。
  2. 在重新启动到新安装的系统之前,我们调整fstab并将一些文件夹移至新的子卷

分区方案

我们将使用以下布局:

Mount Point         | Subvolume         | Description
-------------------------------------------------------------------------
/                   | @                 | The root filesystem incl. /boot
/home               | @home             | User home directories
/root               | @root             | The root user's home directory
/var/log            | @log              | Log files
/.snapshots         | @snapshots        | Snapper's snapshot directory

ka1i Linux Btrfs安装步骤

安装先决条件

  • 用于ka1i Linux安装的最小20 GB磁盘空间。
  • 适用于i386和amd64架构的RAM,最低:1GB,推荐:2GB或更高。
  • CD-DVD驱动器/ USB启动支持

准备安装

  1. 下载ka1i Linux
  2. 将ka1i Linux ISO刻录到DVD或将ka1i Linux Live刻录到USB
  3. 确保您的计算机设置为从BIOS中的CD / USB引导。

ka1i Linux安装过程

  1. 要开始安装,请使用所选的安装介质启动。您应该会看到ka1i Boot屏幕。选择“ 图形安装”

  2. 安装步骤与标准ka1i安装相同,不同之处在于您在选择域名的步骤中会暂停,如下所示。

    btrfs-g-08-di.png

  3. 出现提示时,请暂停安装并通过“ Ctrl + Alt + 2”切换到第二个VT

    btrfs-g-09-cli.png

    按下enter以激活该控制台并运行partman以对硬盘进行分区。

    btrfs-g-11-cli.png

  4. 首先,我们创建两个分区:swap和root。manual在“分区方法”下选择,然后按enter

    btrfs-g-12-partman.png

  5. 选择您的硬盘:

    btrfs-g-13-partman.png

  6. 确认创建一个新的分区表

    btrfs-g-14-partman.png

  7. 接下来,选择新定义的“可用空间”:

    btrfs-g-15-partman.png

  8. 选择Create a new partition

    btrfs-g-16-partman.png

  9. 为交换分区选择所需的大小:

    btrfs-g-17-partman.png

  10. 选择首选的分区类型:

    btrfs-g-18-partman.png

  11. 交换分区的位置是个人喜好,我们在此处选择“结束”,以免干扰

    btrfs-g-19-partman.png

  12. 选择“完成设置分区”:

    btrfs-g-20-partman.png

  13. 接下来,我们重复该过程以设置maim btrfs分区:

    btrfs-g-21-partman.png

  14. 让我们创建一个新分区:

    btrfs-g-22-partman.png

  15. 使用剩余的可用空间:

    btrfs-g-23-partman.png

  16. 选择“ Primary”作为分区类型:

    btrfs-g-24-partman.png

  17. 配置以下参数并选择Done setting up the partition

    Use as:          btrfs journaling file system
    Mount point:     /
    Bootable flag:   on
    

    btrfs-g-25-partman.png

  18. 完成分区并确认将分区表写入磁盘:

    btrfs-g-26-partman.png

    btrfs-g-27-partman.png

  19. 我们返回命令行,并可以确认新的btrfs分区已安装在/ target上:

    btrfs-g-28-postpartman.png

  20. 接下来,我们创建所需的子卷:

    btrfs subvolume create /target/@
    btrfs subvolume create /target/@home
    btrfs subvolume create /target/@log
    btrfs subvolume create /target/@root
    btrfs subvolume create /target/@snapshots
    

    btrfs-g-30-postpartman.png

  21. 最后,我们通过以下方式从新的根子卷“ @”中获得子卷ID:

    btrfs subvolume list /target
    

    在这里“ 257”-我们将其设置为新的默认值并卸载分区

    btrfs subvolume set-default 257 /target
    umount /target
    

    btrfs-g-33-postpartman.png

  22. 现在可以通过Ctrl + Alt + F5切换回图形化安装并继续安装:

    btrfs-g-08-di.png

  23. 当我们进入分区阶段时,只需跳过它并确认我们很高兴使用现有的文件系统:

    btrfs-g-38-di.png

    btrfs-g-39-di.png

  24. 如果愿意,可以切换回VT 2并确认安装程序确实已将我们的“ @”子卷作为安装“ / target”的临时根目录安装:

    btrfs-g-40-cli.png

  25. 返回到VT 5,我们可以继续安装,直到最后一次暂停时我们到达最后一个屏幕:

    btrfs-g-45-di.png

  26. 按下Ctrl + Alt + F2我们可以返回到VT2并执行我们的安装后步骤:

    • 创建临时挂载点
    • 安装子卷
    • 将“ / home”,“ / var / log”,“ / root”移至其专用子卷:

      mkdir /target/mnt/root
      mkdir /target/mnt/home
      mkdir /target/mnt/log
      mkdir /target/.snapshots
      
      mount -t btrfs -o subvol=@root /dev/sda2 /target/mnt/root
      mount -t btrfs -o subvol=@home /dev/sda2 /target/mnt/home
      mount -t btrfs -o subvol=@log /dev/sda2 /target/mnt/log
      
      mv /target/root/.* /target/mnt/root/
      mv /target/home/* /target/mnt/home/
      mv /target/var/log/* /target/mnt/log/
      
      nano /target/etc/fstab
      
  27. 之后,我们可以编辑fstab以通过nano /target/etc/fstab以下方式挂载每个子卷

    UUID=<UUID of btrfs partition> /               btrfs   defaults,subvol=@             0       0
    UUID=<UUID of btrfs partition> /home           btrfs   defaults,subvol=@home         0       0
    UUID=<UUID of btrfs partition> /var/log        btrfs   defaults,subvol=@log          0       0
    UUID=<UUID of btrfs partition> /root           btrfs   defaults,subvol=@root         0       0
    UUID=<UUID of btrfs partition> /.snapshots     btrfs   defaults,subvol=@snapshots    0       0
    

    例如:

    btrfs-g-48-postinst.png

  28. 我们也可以配置 "locate "来忽略snapper使用的.snapshot文件夹(如果后来安装的话) 在/mnt/root/etc/updatedb.conf中添加PRUNENAMES = ".snapshots"。

    btrfs-g-49-postinst.png

  29. 最后一步,我们必须将“默认子卷”重置为5,因为这是“ apt-btrfs-snapshot”正常运行的要求:

    btrfs-g-50-postinst.png

  30. 现在安装已完成,我们可以切换回VT5(Ctrl + Alt + F5)并重新启动。

    btrfs-g-52-finish.png

  31. 重新启动后,我们可以登录并安装更多我们需要的工具。首先让我们安装“ btrfs-progs”:

    sudo apt install btrfs-progs

  32. 现在我们可以从Ubuntu存储库下载并安装“ apt-btrfs-snapshot”工具

    wget https://launchpad.net/ubuntu/+archive/primary/+files/apt-btrfs-snapshot_3.5.2_all.deb
    sudo apt install ./apt-btrfs-snapshot_3.5.2_all.deb
    

恭喜,您已经安装了具有自动快照功能的ka1i系统!接下来,我们将介绍一些基本用法示例。

用法

创建快照

在apt操作期间会自动创建快照。不需要其他步骤,例如:

btrfs-50-示例快照

列出快照

首先,快照也是子卷,因此在列出btrfs子卷时,所有快照也都会显示,例如通过 sudo btrfs subvolume list /

btrfs-51-example-subvolume-list

要仅列出快照,我们可以使用以下命令: sudo apt-btrfs-snapshot list

btrfs-52-示例快照列表

删除快照

删除快照的最简单方法是使用以下命令: sudo apt-btrfs-snapshot delete

btrfs-52-示例快照删除

瞧,它不见了:

btrfs-53-示例快照列表删除后

有删除多个快照的更复杂的方法,例如,以下删除所有早于2天的快照:

sudo apt-btrfs-snapshot delete-older-than 2d

有关“ apt-btrfs-snapshot”的所有不同功能,请参阅帮助输出

回滚

要回滚到先前的快照,我们必须记住两件事:-文件系统的根目录“ /”已安装在子卷“ / @”中,而不是btrfs分区“ /”的根目录中-处理了快照就像另一个子卷

因此,我们要做的就是挂载btrfs分区,并用最后一个快照替换当前的根子卷“ @”。为了安全起见,我们将备份当前根目录(“ @”)子卷。例如:

# mount your root partition (replace "/dev/mmcblk2p2" with yours):
sudo mount /dev/mmcblk2p2 /mnt

# Move the old root away:
sudo mv /mnt/@ /mnt/@_badroot

# Roll back to a previous snapshot:
sudo mv /mnt/@ /mnt/@apt-snapshot-2019-10-13_18:07:40 /mnt/@

sudo reboot -f

从apt全面升级到回滚的完整演练

全面升级

全新安装后,我们还没有任何快照,我们可以通过以下网址查看: sudo apt-btrfs-snapshot list

btrfs-70-Rollback-01.png

让我们进行完整的系统升级:

apt update
apt full-upgrade

btrfs-72-Rollback-03.png

我们可以观察到在安装任何软件包之前正在创建快照:

btrfs-74-Rollback-05.png

完成后,我们可以确认没有更多可用的更新:

btrfs-74-Rollback-05b.png

如果我们再次列出快照,我们可以看到刚刚创建的快照:

btrfs-75-Rollback-06.png

回滚

请记住,“ /”本身就是子卷“ @”。要回滚到快照,我们要做的就是用所需的快照替换“ @”。

  1. 首先,我们必须通过以下方式挂载btrfs分区:

    sudo mount /dev/<your btrfs partition> /mnt

    如果我们列出该分区的内容,则可以看到所有子卷,包括快照:

    btrfs-77-Rollback-08.png

  2. 在用快照替换当前根之前,为了安全起见,我们将“ @”移开:

    sudo mv /mnt/@ /mnt/@_badroot

    btrfs-78-Rollback-09.png

  3. 现在,我们可以从上一次升级之前选择快照,并将其重命名为“ @”:

    sudo mv /mnt/@apt-snapshot-2019-10-21_23:50:26 /mnt/@

    btrfs-79-Rollback-10.png

    这就是全部,这里是新的“ @”:

    btrfs-80-Rollback-11.png

    让我们重新启动以使回滚生效:

    btrfs-81-Rollback-12.png

确认回滚有效

重新启动后,我们可以看到快照已消失,因为我们回滚了快照:

btrfs-82-Rollback-13.png

如果我们发布另一个“ apt更新”,我们可以看到我们回到了快照之前的状态:

btrfs-83-Rollback-14.png

确认系统正常运行后,您可以通过挂载btrfs分区并使用“ btrfs subvolume delete”命令来删除旧的“ root”:

sudo mount /dev/<your btrfs partition> /mnt
sudo btrfs subvolume delete /mnt/@_badroot

btrfs-84-Rollback-15.png

参考文献:

Btrfs WikiBtrfs Debian siteapt-btrfs-snapshotSnapper

原文地址:https://www.cnblogs.com/GKLBB/p/13581628.html