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- LVM에서 메인 디스크로 사용되는 파티션되지 않은 HDD

포맷했습니다/dev/sda1mkfs.fat를 사용하여 다음을 포함하는 볼륨 그룹 vg를 설정했습니다./dev/sda2그리고/dev/sdb, 그런 다음 다음에서 찾을 수 있는 가이드를 따랐습니다.lvmcache 매뉴얼 페이지. 다음과 같은 단일 캐시 볼륨을 생성한 후하드디스크0, LUKS-on-LVM 체계를 달성할 수 있도록 cryptsetup을 실행했습니다. 캐시된 전체하드디스크0로 암호화됩니다루크스2.
그런 다음 잠금을 해제했습니다.하드디스크0다시 cryptsetup을 사용하여 매핑합니다./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

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

# lvchange -ay vg

얻기 위해하드디스크0활성화되고 눈에 띄게 됩니다.

비슷한 설정을 시도한 사람이 있습니까? 자동으로 부팅되게 하려면 어떻게 해야 합니까? 아니면 설정에 개념상 결함이 있어 절대 작동할 수 없나요?

추신: 질문이 충분히 자세했으면 좋겠습니다. 여기에 처음으로 질문하는 것입니다.

답변1

다음은 헤드뱅어(headbangery)를 마치고 오늘 출근하게 된 내 conf입니다.

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;

관련 정보