技巧安装程序以压缩使用btrfs root


9

我想将Maverick安装到BTRFS根分区上。并不是为了娱乐或测试,而是因为我需要压缩的闪存盘(4GB)。

现在,10.10安装程序终于支持btrfs,但是无法在其中启用该compress标志。我可以以某种方式欺骗安装程序吗?对于旧版本并获得LUKS,您可以预先安装分区。还是有一个简单的猴子补丁可以启用btrfs + compress预安装?


您是否尝试过备用(文本模式安装程序)磁盘?
奥利(Oli)

@Oli:现在尝试一下。-alternate Debian安装程序更加详细。但是它仅列出标准文件系统标志(noatime,nodev,noexec)。它阻止设置特定于btrfs的选项,例如compressssd。没运气。
马里奥

Answers:


2

之所以遇到这个线程,是因为我希望将Linux Mint Debian Edition安装在闪存驱动器上,并从一开始就在压缩的btrfs上进行安装。尽管这些解决方案并不直接适用于达到我的结果,但我还是使用了一些信息来达到我的目标。

问题是,安装程序格式化和安装分区以及开始复制文件的要点彼此相邻,因此我无法执行上述其他人提到的“重新安装”选项。

安装程序脚本的LMDE版本位于python(usr / lib / live-installer / installer.py)中。我不确定与Ubuntu是否相同,但是如果是,这将直接适用。这使我可以编辑脚本并将此行添加到原来为“ /”安装分区的行的下面。

os.system("mount -o remount,compress /dev/sda3 /target -t btrfs")

的“ / dev / sda3”会因您的设备而异。

我知道这是一个Ubuntu论坛,但是就像我说的那样,它是由搜索提供的,如果安装程序基于python,则此解决方案将直接相关。无论如何我们都是Debian,对吧!


10

一种更简单的方法是更改mount实时环境的命令。

  1. 像往常一样启动到实时会话。
  2. mount可执行文件移动到另一个位置:

    sudo mv /bin/mount /bin/mount.bin
    
  3. 使用编辑新文件sudoedit /bin/mount并将以下脚本保存到其中(根据需要更改选项;此处已添加compress):

    #!/bin/sh
    if echo "$@" | grep -q -- "-t btrfs"; then
        /bin/mount.bin "$@" -o compress
    else
        /bin/mount.bin "$@"
    fi
    

    您还可以将块设备(例如/dev/sda1代替-t btrfs和)匹配,elif以对不同的设备和文件系统使用不同的安装选项。

  4. 将原始权限复制到新脚本中:

    sudo chmod --reference=/bin/mount.bin /bin/mount
    
  5. 照常安装,您的btrfs分区将使用指定的选项(此处为compress)进行挂载。

  6. 安装完成后,在退出实时环境之前,请更改/etc/fstab新安装的系统的,以匹配指定的选项,因此它将在新启动时使用相同的选项。

我用过:defaults,noatime,compress-force=lzo,space_cache作为安装选项。

这适用于每日定量(12/6/30)。

我将btrfs分区用作/和交换分区。

鸣谢于此帖子(在此主题中),而该帖子又引用了此博客帖子


我希望我可以对此进行三重表决,因为这是我第三次忘记如何正确执行此操作,而这仍然是我为此进行大量搜索的地方。当然,尽管在大多数情况下都需要使用sudo,但对于经验不足的用户来说可能并不明显。非常酷!
DanielSmedegaardBuus 2014年

4

在安装程序安装完分区后,您可以尝试切换到Shell并执行mount -o remount,compress /target,这可能会起作用。


这似乎有效!(尽管我搞砸了其他东西。)但这需要mount -o remount,compress,ssd /dev/mapper/target /target -t btrfs源设备的完整命令。
mario 2010年

最优秀的 经过一些测试,重新安装技巧完美无误。使用1.2G而不是2.6G,明显的速度增益。
mario 2010年

2

从13.04(Raring Ringtail)开始,您应该能够在不压缩的情况下安装在btrfs卷上,然后在启动到新安装后就压缩整个卷上的每个文件。

根据Oracle的文档,您可以通过使用-clzo选项对现有文件系统进行碎片整理来压缩现有文件系统上的文件。

sudo btrfs filesystem defragment -clzo /

传递单个斜杠可告诉btrfs对根卷上的所有文件和目录进行碎片整理。

请参阅:http : //docs.oracle.com/cd/E37670_01/E37355/html/ol_use_case1_btrfs.html

完成后,在/ etc / fstab中的卷行中添加compress = lzo(或者,如果需要,可以选择compress = zlib,但是建议使用lzo),然后重新启动,以便进一步压缩写入磁盘的任何文件。


2

较新的发行版可busybox用于大多数命令,包括mount。在这些发行版中,/bin/mount是的符号链接,/bin/busybox并且该符号链接必须命名为“ mount”,而不是“ mount.bin”,才能正常工作。因此,Mskje的上述答案可以更改为以下内容:

  1. 正常启动实时会话。
  2. sudo rm /bin/mount
  3. sudo mkdir /bin/orig
  4. sudo ln -s /bin/busybox /bin/orig/mount
  5. sudo nano /bin/mount -这将创建一个新脚本。
  6. 将其复制到脚本并保存(根据需要更改选项,此处压缩):

    #!/bin/sh  
    if echo $@ | grep "btrfs" >/dev/null; then  
        /bin/orig/mount $@ -o compress  
    else  
        /bin/orig/mount $@  
    fi
    
  7. sudo chmod 755 /bin/mount 使它可执行。

  8. 正常安装,您的btrfs分区将使用指定的选项安装(此处为compress)。
  9. 安装完成后,在退出实时环境之前,请更改fstab新安装的系统的,以匹配指定的选项,因此它将在新启动时使用相同的选项。

1

手动选择:/ dev / sda1作为/一些扩展名的btrfs?/启动一些交换

在终端中:sudo bash

按安装

在终端行上按Enter :(已完成sudo)mount -t btrfs -o重新安装,压缩/ dev / sda1 / target


1

您可以通过手动运行mkfs.btrfs命令来获得Btrfs的任何新功能或所有功能。该备用安装具有在任何时候一个选项,回到你所选择的上一步。您可以使用它来在安装程序创建btrfs之后创建自己的btrfs,然后在上一步中启动安装程序,以便使用fs。

  1. 运行安装程序,直到分区阶段结束。
  2. 让它安装基本系统。

  3. alt-F2转到终端并运行mkfs.btrfs-/ dev / sdXY

  4. 返回安装程序alt-F1
  5. 点击“返回按钮”,然后再次选择分区选项。默认值是不重新格式化,因此您可以单击继续。它将重新安装基本系统。对不重新格式化的警告说“是”。

  6. 请享用。


1

我通过将压缩棒上的ext4分区替换为压缩的btrfs分区来使其工作。可以使用另一台计算机来完成。

  1. 通过复制所有内容

    须藤cp -ar / ext4Partition / * / backupspace /
  2. 使用gparted用btrfs替换一个分区

  3. 使用sudo mount mount -o compress / dev / yourdevice / btrfsPartition挂载新分区
  4. 复制一切

    须藤cp -ar / backupspace / * / btrfsPartition /
  5. 将/ btrfsPartition / etc / fstab更新为新的设备uuid和新的分区类型。删除重新安装选项,因为btrfs没有此选项。
  6. 重新安装引导加载程序(例如,通过BootRepair

注意:目录/btrfsParition/ext4Partition并且/backupspace可以根据需要设置。


0

您可以稍后再添加压缩。打开/etc/fstab并编辑您的根文件系统的行。compress像这样添加到mount-options:

UUID=0c8e6d48-e6b3-425a-ab33-24205a9cb586 / btrfs defaults,compress 0 1

现在重新安装或重新引导,不要忘记/ boot不能在btrfs上运行,因为GRUB2不支持它。


2
据我所知,在fstab中添加compress对现有文件没有任何影响(当您仅在安装后添加它时,这已经是该4 GB SSD的很大一部分!)。我认为使用Live CD时,最好在预安装时创建并安装分区。
2010年1

是的,以后添加该选项不会压缩文件。上一次我进行了完整的文件备份,然后更改了文件系统标志,然后覆盖了所有内容。很麻烦 只是tar有时会忘记一些文件属性,不确定我是否使用pax或rsync代替。
马里奥

如果仅安装ubuntu-minimal并稍后安装其余部分,该怎么办?
2010年

0

您总是可以遵循中国古代谚语:

如果您不喜欢安装程序分区程序的功能,请自行对其进行分区,并告诉安装程序将其安装到这些分区上。


我要问谁来质疑古老的中国谚语?但是新的10.10安装程序是否支持已安装的/ target?如果坚持要重新安装,那么我所有宝贵的手动分区都是徒劳的。
mario 2010年

通过。如果我仍然有ISO,可以在VirtualBox中对其进行测试,但是我还是想,如果使用备用安装程序,您可能会比较幸运(它对用户干扰的反应会更好)
Oli

刚给它一个旋转。这两个安装程序都非常令人满意。手动分区仍然是LUKS的解决方案,但是btrfs不会保留手动安装选项。备用安装向导通常对非标准选项不太满意,但是至少您可以看到发生了什么。桌面安装程序将目标卸载两次或三次。
马里奥
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.