lvmcache 및 LUKS-on-LVM을 사용하여 NixOS 설정

lvmcache 및 LUKS-on-LVM을 사용하여 NixOS 설정

내 노트북에 NixOS 19.09를 설치하려고 합니다. 내 디스크 설정은 30GB SSD와 700GB HDD입니다. 저는 SSD를 HDD용 캐시로 사용하기로 결정했고 전체 루트 파티션도 암호화하고 싶었습니다.

따라서 내 파티션 설정은 다음과 같습니다.

  • /dev/sda- SSD
    • /dev/sda1- 부팅 파티션, UEFI 부팅 가능 플래그, FAT 형식, 암호화되지 않음
    • /dev/sda2- 캐싱용
  • /dev/sdb- 파티션되지 않은 HDD, LVM의 기본 디스크로 사용됨

포맷했습니다/dev/sda1mkfs.fat를 사용하여 볼륨 그룹 vg를 설정했습니다./dev/sda2그리고/dev/sdb, 그런 다음 다음에서 찾을 수 있는 단계를 따릅니다.lvmcache 매뉴얼 페이지. 이름이 지정된 단일 캐시 볼륨을 생성한 후HDD 0, LUKS-on-LVM 시나리오를 구현할 수 있도록 cryptsetup을 실행했습니다. 전체 캐시HDD 0다음과 같이 암호화됩니다.럭스 2.
그런 다음 잠금을 해제했습니다.HDD 0cryptsetup을 다시 사용하여 매핑합니다./dev/매퍼/루트. 설치했습니다/mnt그 위에 생성된/mnt/시작설치하고/dev/sda1거기. 그 후 NixOS 구성을 생성하고 기본적으로 기본값으로 두었습니다. 주목할만한 변경 사항은 다음과 같습니다.DM 캐시도착하다boot.initrd.kernelModule, 그리고 설정boot.initrd.luks.devices."root".preLVM도착하다잘못된. 그런 다음 성공적으로 실행 nixos-install하고 재부팅했습니다.

시스템이 GRUB를 성공적으로 실행했지만 루트 볼륨을 찾지 못했습니다. 다음과 같은 오류 메시지를 제공합니다.

device-mapper: table: 254:3: cache: Error creating cache's policy  
device-mapper: reload ioctl on (254:3) failed: Invalid argument

나는 그것이 전체를 감지한다고 가정하고 있습니다.HDD 0. 라이브 설치 USB 스틱에서 부팅을 시도했는데 활성화해야 합니다.DM 캐시modprobe를 사용한 다음 실행하십시오.

# lvchange -ay vg

얻기 위해HDD 0활동적이고 눈에 띕니다.

비슷한 설정을 시도한 사람이 있습니까? 자동으로 시작되게 하려면 어떻게 해야 합니까? 아니면 이 설정에 개념적으로 결함이 있어 절대 작동하지 않을 것입니까?

추신: 질문이 충분히 자세하기를 바랍니다. 여기서 처음으로 질문합니다.

답변1

머리를 긁적이는 일을 겪은 후 오늘 출근하게 된 소식은 다음과 같습니다.

boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "ehci_pci" "usb_storage" "usbhid" "sd_mod" "sr_mod" ];
  boot.initrd.kernelModules = [ "dm-cache" "dm-cache-smq" "dm-cache-mq" "dm-cache-cleaner" ];
  boot.kernelModules = [ "kvm-amd" "dm-cache" "dm-cache-smq" "dm-persistent-data" "dm-bio-prison" "dm-clone" "dm-crypt" "dm-writecache" "dm-mirror" "dm-snapshot"];

  boot.initrd.luks.devices = {
    "decrypted" = {
      device = "/dev/mapper/vg-crypt";
      allowDiscards = true;
      preLVM = false;
    };
  };

주요 비결은 "dm-cache-smq"모듈에서 이를 사용하는 것입니다. 이것이 없으면 귀하가 받는 것과 유사한 오류 메시지가 표시됩니다.

누락에 대한 추악한 경고 메시지가 표시됩니다 cache_check. 이를 제거하려면 다음을 추가하세요.

services.lvm.boot.thin.enable = true;

관련 정보