기존 luks 설정에 dm-cache를 추가하는 방법은 무엇입니까?

기존 luks 설정에 dm-cache를 추가하는 방법은 무엇입니까?

고속 SSD와 대형 HDD라는 두 개의 물리적 장치가 있습니다. SSD는 VG에 있으며 ssd궁극적으로 마운트 지점 역할을 하며 /, HDD는 VG에 있고 dump마운트 지점 역할을 합니다 /home. 둘 다 LUKS로 암호화되었으며 둘 다 ext4 형식입니다. SSD의 40GB를 HDD용 캐시로 쉽게 확보할 수 있는데, 다시 포맷하지 않고도 LV 설정을 변경할 수 있는지 궁금합니다.

루트 파일 시스템의 크기를 줄인 다음 LV 크기를 줄이고, 캐시 및 메타데이터를 위한 두 개의 새 LV를 추가하고, 새로 생성된 캐시 풀을 연결하여 HDD를 제공하는 것이 가능합니까? 암호화되지 않은 데이터가 캐시로 누출되지 않도록 설정하는 방법을 알려주세요...

답변1

이제 내 질문에 답하기에 충분한 정보를 추출했습니다. 다른 사람들이 따라야 할 단계는 다음과 같습니다.

일반 고지 사항: 기존 파일 시스템과 해당 기본 장치를 수정하면 데이터가 손상되거나 손실될 수 있습니다. 미리 계획하고 데이터를 백업하세요 :-)

아래 단계를 따르면 제가 시작한 파일 시스템 레이아웃 중 일부가 설정에 맞지 않을 수 있으므로 적절하게 조정하세요.

  • 저는 페도라 21을 사용하고 있습니다.
  • SSD는 열려 있으며 /dev/sda/boot( ), 스왑( ) 및 포맷된 볼륨 그룹( -> -> -> )에서 LVM 볼륨을 호스팅하는 sda1LUKS 컨테이너를 제공합니다.sda2rootssdext4//dev/sda3/dev/mapper/luks-.../dev/mapper/ssd-root/
  • HDD가 열려 있고 /dev/sdb볼륨 그룹( -> -> -> )에서 LVM 볼륨을 호스팅하는 LUKS 컨테이너를 제공합니다.dumpdump/home/dev/sdb1/dev/mapper/luks-.../dev/mapper/dump-dump/home
  • /약 7.5GB의 암호화된(!) 캐시를 제공할 공간을 확보하기 위해 파일 시스템의 크기를 조정하겠습니다 /home.
  • LVM, LUKS, 파티션 테이블 및 파일 시스템은 서로 다른 블록 크기를 사용합니다(예: 내 LVM 볼륨에는 각각 4MB의 범위가 포함되어 있고 내 ext4 파일 시스템, LUKS 및 파티션은 각 구역당 512바이트 블록/섹터입니다). 정렬할 치수를 선택합니다.
  • 일관성을 보장하기 위해 수동으로 입력한 숫자를 다시 확인하세요. 논리 볼륨보다 큰 파일 시스템, 물리 볼륨보다 큰 논리 볼륨, LUKS 컨테이너보다 큰 물리 볼륨 또는 논리 볼륨보다 큰 LUKS 컨테이너로 끝나는지 다시 확인하세요. 용량. 파티션보다 큽니다.

  1. lsblk설정에 대해 다시 상기시키는 데 사용됩니다 . LiveCD로 재부팅하고 새 터미널 세션을 엽니다. ... 에 대한 모든 호출을 피하려면 sudo루트로 전환하십시오.

  2. LUKS 컨테이너의 Fedora 일반 이름이 여러 번 필요합니다. 먼저 변수에 넣어주세요

    SDA3UUID=luks-`sudo cryptsetup luksUUID /dev/sda3`
    SDB1UUID=luks-`sudo cryptsetup luksUUID /dev/sdb1`
    

    $SDA3UUID이제 장치의 UUID를 저장하십시오 /. $SDB1UUID/home.

    LUKS 를 사용하여 장치를 엽니다 /. LVM은 컨테이너 내부의 볼륨을 검색하여 이를 사용 가능하게 만듭니다( /dev/mapper/ssd-root제 경우처럼).

    sudo cryptsetup open /dev/sda3 $SDA3UUID
    
  3. 파일 시스템의 크기를 줄입니다.

    resize2fs먼저 파일 시스템 검사를 강제로 수행하십시오. 파일 시스템의 크기를 /20GB 로 조정하겠습니다 .

    sudo fsck -f /dev/mapper/ssd-root
    sudo resize2fs -p /dev/mapper/ssd-root 20g
    

    이 과정은 시간이 걸립니다. "파일 시스템은 이제 XYZ 블록 길이입니다."라는 출력과 각 블록의 크기(제 경우에는 5242880 4k 블록)를 확인하세요.

  4. 파일 시스템 지원 논리 볼륨의 크기를 비활성화하고 줄입니다.

    -매개변수의 -L기본값은 메가바이트 단위입니다.

    sudo lvchange -an /dev/mapper/ssd-root
    sudo lvreduce -L 20480 /dev/mapper/ssd-root
    
  5. 논리 볼륨을 지원하는 물리 볼륨의 크기를 줄입니다.

    LUKS 및 LVM은 약간의 오버헤드를 발생시키므로 물리 볼륨은 논리 볼륨보다 약간 크게 유지해야 합니다. 두 개의 범위를 추가했습니다.

    sudo pvresize --setphysicalvolumesize 20488 /dev/mapper/$SDA3UUID
    
  6. LUKS 컨테이너의 크기를 줄입니다.

    -파라미터는 -b블록으로 제공됩니다. 다음과 같이 사용 pvdisplay하고 계산하세요.총 물리적 익스텐트 수* 익스텐트 크기* 1024**2 / 512(예를 들어 python -c "print 5121*4*1024**2/512")

    sudo cryptsetup resize -b 41951232 $SDA3UUID
    

    sudo cryptsetup status $SDA3UUID컨테이너의 새로운 차원에 대해 알아보는 데 사용됩니다 . 제 경우에는 컨테이너 크기가 2MB였습니다.더 큰포함된 물리적 볼륨 및 파일 시스템보다(정렬하는 방법)

  7. 파티션 크기를 줄이고 캐시용 새 파티션을 만듭니다.

    논리 볼륨과 컨테이너를 비활성화하여 시작하세요.

    sudo cryptsetup luksClose $SDA3UUID
    sudo fdisk /dev/sda
    

    원래 파티션을 삭제합니다 sda3. 이전 파티션과 동일한 섹터(!)에 있고 크기가 "+XYZ"(제 경우에는 "+41951232")인 새 파티션을 만듭니다. 또한 장치를 채울 새 파티션을 만듭니다(제 경우에는 7.5GB). 파티션 테이블을 디스크에 쓰고 종료합니다 fdisk.

    파일 시스템이 여전히 존재하는지 확인하십시오.

    sudo cryptsetup open /dev/sda3 $SDA3UUID
    

    lvs논리 볼륨이 표시되어야 합니다.

    sudo fsck -f /dev/mapper/ssd-root
    
  8. 암호화된 캐시를 호스팅하기 위해 새 파티션에 새 LUKS 컨테이너를 만듭니다.

    sudo cryptsetup luksFormat /dev/sda4
    SDA4UUID=luks-`sudo cryptsetup luksUUID /dev/sda4`
    
  9. HDD용 LUKS 컨테이너를 열고 /home최종적으로 새 장치에서 호스팅할 볼륨 그룹을 확장합니다.

    sudo cryptsetup open /dev/sdb1 $SDB1UUID
    

    lvs이제 볼륨 그룹이 dump활성화된 것으로 표시되어야 합니다.

    sudo cryptsetup open /dev/sda4 $SDA4UUID
    sudo vgextend dump /dev/mapper/$SDA4UUID
    
  10. 캐시의 메타데이터와 캐시 자체에 대한 논리 볼륨을 생성합니다.

    메타데이터 볼륨은 캐시 자체 크기의 0.1%가 되어야 하는데, 최소 8MB 이상이어야 한다고 합니다. 약간의 오버헤드가 있다는 점을 다시 한 번 참고하세요. 그래서 저는 물리 볼륨의 남은 크기의 99%인 캐시 크기를 선택했습니다.

    sudo lvcreate -L 20M -n lv_cache_meta dump /dev/mapper/$SDA4UUID
    sudo lvcreate -l 99%FREE -n lv_cache dump /dev/mapper/$SDA4UUID
    sudo lvconvert --type cache-pool --poolmetadata dump/lv_cache_meta dump/lv_cache
    
  11. 관리되는 논리 볼륨에 캐시를 추가합니다 /home.

    sudo lvconvert --type cache --cachepool dump/lv_cache dump/dump
    

    출력은 "논리 볼륨 덤프/덤프가 이제 캐시되었습니다."와 유사해야 합니다.

  12. crypttab부팅 중에 새 LUKS 컨테이너를 열도록 업데이트되었습니다 .

    mkdir root
    sudo mount /dev/mapper/ssd-root root
    sudo su
    UUID=`cryptsetup luksUUID /dev/sda4`
    echo "luks-$UUID UUID=$UUID none" >> root/etc/crypttab
    exit
    sudo umount root
    
  13. 기도하고 원래 시스템으로 재부팅하십시오.

    다시 시작한 후 다음과 같이 캐시에 대한 통계를 얻을 수 있습니다.

    lvs --rows -o +devices,cache_total_blocks,cache_used_blocks,cache_dirty_blocks,cache_read_hits,cache_read_misses,cache_write_hits,cache_write_misses dump
    

이제 알 수 있습니다.

답변2

lvmcache(7)나는 이 작업 에 대한 좋은 기사를 사용할 것입니다 dm-cache.

https://rwmj.wordpress.com/2014/05/22/using-lvms-new-cache-feature/

저자에 따르면 이를 위해서는 단일 볼륨 그룹을 사용해야 합니다. 따라서 볼륨 그룹을 병합해야 합니다. 이 작업을 수행하는 데 vgmerge(8)가 사용되는 다음 링크를 참조하세요.

https://sites.google.com/site/rhelworldexperience/home/rhel-disk-management---tips-and-tricks/mergingvolumegroupsinrhel-vgmerge

있는 경우 장치 관리자의 설명에 따라 캐시가 암호화되지 않을 것이라고 생각합니다 LVM.LUKShttps://help.ubuntu.com/community/EncryptedFilesystemHowto. 암호화된 데이터가 캐시되어 있다고 생각 LUKS합니다 .LVM

LVM위의 경우 크기 조정에 대한 좋은 참고 자료는 다음과 같습니다 LUKS.https://help.ubuntu.com/community/ResizeEncryptedPartitions. 사람들은 이에 반대 방향으로 적응할 수 있어야 합니다.

프로세스를 확인하거나 테스트/검증된 복구 프로세스를 사용하여 전체 복구를 수행하려면 테스트 시스템을 설정하는 것이 가장 좋습니다.

관련 정보