如何将SSD缓存添加到加密的HDD以供桌面/ GUI使用?

SSHD似乎停留在4TB和8GB SSD缓存( 一种型号可用1TB / 32GB),而更大的SSD可广泛使用,并且存在一些解决方案,用于在Linux中将HDD与SSD配对。 我正在寻找一种在桌面设置完成后易于在桌面上使用的解决方案。 理想情况下,需要单击一个或两个启动器图标,输入加密存储的密码并在Nautilus中安装驱动器,而无需记住任何特定命令。

  • 所有存储和缓存数据都必须加密存储。
  • 一个单独的大型硬盘可用于数据迁移到新的分区方案或任何需要的。

我到目前为止阅读的相关文章:

  • http://blog-vpodzime.rhcloud.com/?p=45 – bcache和LVM缓存的比较
  • http://blog.zorangagic.com/2016/01/linux-flash-caching-bcache-and-dm-cache.html
  • AU: 如何使用磁盘加密和SSD缓存安装Ubuntu – 这很接近,但现有的答案与我正在寻找的不同。
  • AU: Ubuntu 15.10的任何SSD缓存解决方案? – 这是关于没有加密的根分区。
  • 如何将dm-cache添加到现有的luks设置中?
  • https://wiki.archlinux.org/index.php/LVM#LVM_Cache_.28lvmcache.29

LUKS上的非根LVM

介绍

信息:

  • 我刚开始使用LVM因为这个function,我的目的是使用带有SSD的加密数据分区进行缓存。
  • 我通常在Linux上使用ZFS(另请参见ARC )进行数据归档和冗余,这似乎更易于管理和设置。 如果你想使用多个硬盘驱动器,你可能想看一下ZFS,LVM在Linux上优于ZFS的优点是它不依赖于DKMS构建的内核模块,如果你需要它可能无法构建和运行例如,使用来自内核PPA的主线内核。 (可能是我在ZFS上做错了,但Phoronix上的一些文章读起来好像就是这样。)
  • 这适用于工作站使用,并且GUI方式解决方案是首选,可能显示当前GUI可以实现的目标。

警告:

  • 不要只是将任何SSD作为缓存添加到您的硬盘驱动器,并期望大幅提升性能。 目前使用的480GB的BX200看起来很合理,但在基准和产品评论中显示的写入速度比硬盘速度慢。 另请注意,两个设备必须在不处于写回缓存模式的同时默认写入数据 – 这样会有更高的数据损坏风险 – 所以不要混淆总加载速率加倍和指标等工具写入速度慢-multiload。

概述:

为了提供更多的见解,以下是我在查看问题中的文章之后在VM中设置的内容,然后再在实际硬件上进行尝试。 当使用GUI解锁加密设备时,将自动创建以luks-命名的设备,LVM将检测到设备已变为可用,并将提供您像往常一样在nautilus中安装文件系统。

 lwbt@vxenial:~$ lsblk … sdb 8:16 0 8G 0 disk └─luks-6bc875f1-de30-4698-ba74-eea2c5d5bb87 252:0 0 8G 0 crypt └─vg0-datalv_corig 252:5 0 7,9G 0 lvm └─vg0-datalv 252:1 0 7,9G 0 lvm sdc 8:32 0 8G 0 disk └─luks-e20dd038-9886-4895-b786-855ba4c31c7e 252:2 0 8G 0 crypt ├─vg0-cache_cdata 252:3 0 8G 0 lvm │ └─vg0-datalv 252:1 0 7,9G 0 lvm └─vg0-cache_cmeta 252:4 0 12M 0 lvm └─vg0-datalv 252:1 0 7,9G 0 lvm lwbt@vxenial:~$ ll /dev/mapper/ total 0 drwxr-xr-x 2 root root 180 Sep 6 02:54 ./ drwxr-xr-x 20 root root 4420 Sep 6 02:54 ../ crw------- 1 root root 10, 236 Sep 6 00:37 control lrwxrwxrwx 1 root root 7 Sep 6 02:54 luks-6bc875f1-de30-4698-ba74-eea2c5d5bb87 -> ../dm-0 lrwxrwxrwx 1 root root 7 Sep 6 02:54 luks-e20dd038-9886-4895-b786-855ba4c31c7e -> ../dm-2 lrwxrwxrwx 1 root root 7 Sep 6 02:54 vg0-cache_cdata -> ../dm-3 lrwxrwxrwx 1 root root 7 Sep 6 02:54 vg0-cache_cmeta -> ../dm-4 lrwxrwxrwx 1 root root 7 Sep 6 02:54 vg0-datalv -> ../dm-1 lrwxrwxrwx 1 root root 7 Sep 6 02:54 vg0-datalv_corig -> ../dm-5 

如果您对块设备(SSD / HDD)进行分区而不是使用LUKS直接加密它们,则lsblk的输出可能会有一个额外的层。 当然,如果您对LUKS加密没兴趣,可以在以下说明中跳过这些步骤,这也很好。

说明

安装所需的包:

 sudo apt install lvm2 thin-provisioning-tools cryptsetup 

以下部分中的命令将销毁驱动器上的所有现有数据

加密每个设备:

 sudo cryptsetup luksFormat ${device_name} sudo cryptsetup luksOpen ${device_name} ${mapper_name_hdd_or_ssd} 

注意:gnome-disks有加密和装载加密设备的选项,但它也会创建EXT4文件系统,必须删除它们才能继续按照说明操作。

然后将设备作为物理卷添加到LVM,在HDD上创建一个卷组(名为vg0 )和一个逻辑卷(名为datalv ),稍后将对其进行格式化以保存所有数据:

 pvcreate /dev/mapper/${mapper_name_hdd} vgcreate vg0 /dev/mapper/${mapper_name_hdd} lvcreate -l 100%pvs -n datalv vg0 /dev/mapper/${mapper_name_hdd} 

注意: 100%pvs将创建一个跨越您选择的整个设备的卷(例如加密容器或分区)。 可以在lvmcache和其他相关联机帮助页中找到更多详细信息和选项。

现在,通过将SSD添加到卷组来扩展LVM配置:

 pvcreate /dev/mapper/${mapper_name_ssd} vgextend vg0 /dev/mapper/${mapper_name_ssd} 

在SSD上的vg0创建名为cache的缓存池卷,然后将新缓存池作为缓存添加到datalv

 lvcreate --type cache-pool -l 100%pvs -n cache vg0 /dev/mapper/${mapper_name_ssd} lvconvert --type cache --cachepool vg0/cache vg0/datalv 

注意:lvcreate会自动为您选择cache_cdata和cache_cmeta的最佳大小。

更改LVM配置后,如果要避免重新启动,可能需要重新扫描pv,vg和lv以激活LVM设备:

 pvscan vgscan lvscan vgchange -ay 

如果未提供名称,以下命令将停用所有LVM卷:

 vgchange -an 

最后是格式化逻辑卷和传输数据的时候了。

  1. 使用Gparted GUI进行格式化的示例

     pkexec gparted /dev/mapper/vg0-datalv 
  2. 使用命令行工具进行格式化的示例:

     sudo mkfs.ext4 /dev/mapper/vg0-datalv 

现在新的文件系统应该出现在Nautilus中。

用法

许多LVM命令使设置看起来相当复杂,甚至可能无法充分利用LVM对有经验的用户的潜力,但是一旦设置好并且计算机重新启动,您只需要从Unity启动器或gnome中安装加密磁盘。磁盘,然后像任何其他文件系统或磁盘一样安装显示在Nautilus中的卷。 不需要记忆复杂的命令。 据我所知,目前还没有可用的GUI工具来处理Ubuntu中缓存池的LVM设置。

笔记:

  • 我更喜欢在安装HDD之前安装较小的加密缓存SSD设备
  • 可以删除和替换缓存 ,请参阅lvmcache联机帮助页中的缓存删除
  • 要显示有关缓存的所有指标,可以使用以下命令:

     sudo lvs -o+cache_total_blocks,cache_used_blocks,cache_dirty_blocks,cache_read_hits,cache_read_misses,cache_write_hits,cache_write_misses,cachemode,cache_policy,cache_settings