고속 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 볼륨을 호스팅하는sda1
LUKS 컨테이너를 제공합니다.sda2
root
ssd
ext4
/
/dev/sda3
/dev/mapper/luks-...
/dev/mapper/ssd-root
/
- HDD가 열려 있고
/dev/sdb
볼륨 그룹( -> -> -> )에서 LVM 볼륨을 호스팅하는 LUKS 컨테이너를 제공합니다.dump
dump
/home
/dev/sdb1
/dev/mapper/luks-...
/dev/mapper/dump-dump
/home
/
약 7.5GB의 암호화된(!) 캐시를 제공할 공간을 확보하기 위해 파일 시스템의 크기를 조정하겠습니다/home
.- LVM, LUKS, 파티션 테이블 및 파일 시스템은 서로 다른 블록 크기를 사용합니다(예: 내 LVM 볼륨에는 각각 4MB의 범위가 포함되어 있고 내 ext4 파일 시스템, LUKS 및 파티션은 각 구역당 512바이트 블록/섹터입니다). 정렬할 치수를 선택합니다.
- 일관성을 보장하기 위해 수동으로 입력한 숫자를 다시 확인하세요. 논리 볼륨보다 큰 파일 시스템, 물리 볼륨보다 큰 논리 볼륨, LUKS 컨테이너보다 큰 물리 볼륨 또는 논리 볼륨보다 큰 LUKS 컨테이너로 끝나는지 다시 확인하세요. 용량. 파티션보다 큽니다.
lsblk
설정에 대해 다시 상기시키는 데 사용됩니다 . LiveCD로 재부팅하고 새 터미널 세션을 엽니다. ... 에 대한 모든 호출을 피하려면sudo
루트로 전환하십시오.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
파일 시스템의 크기를 줄입니다.
resize2fs
먼저 파일 시스템 검사를 강제로 수행하십시오. 파일 시스템의 크기를/
20GB 로 조정하겠습니다 .sudo fsck -f /dev/mapper/ssd-root sudo resize2fs -p /dev/mapper/ssd-root 20g
이 과정은 시간이 걸립니다. "파일 시스템은 이제 XYZ 블록 길이입니다."라는 출력과 각 블록의 크기(제 경우에는 5242880 4k 블록)를 확인하세요.
파일 시스템 지원 논리 볼륨의 크기를 비활성화하고 줄입니다.
-매개변수의
-L
기본값은 메가바이트 단위입니다.sudo lvchange -an /dev/mapper/ssd-root sudo lvreduce -L 20480 /dev/mapper/ssd-root
논리 볼륨을 지원하는 물리 볼륨의 크기를 줄입니다.
LUKS 및 LVM은 약간의 오버헤드를 발생시키므로 물리 볼륨은 논리 볼륨보다 약간 크게 유지해야 합니다. 두 개의 범위를 추가했습니다.
sudo pvresize --setphysicalvolumesize 20488 /dev/mapper/$SDA3UUID
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였습니다.더 큰포함된 물리적 볼륨 및 파일 시스템보다(정렬하는 방법)파티션 크기를 줄이고 캐시용 새 파티션을 만듭니다.
논리 볼륨과 컨테이너를 비활성화하여 시작하세요.
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
암호화된 캐시를 호스팅하기 위해 새 파티션에 새 LUKS 컨테이너를 만듭니다.
sudo cryptsetup luksFormat /dev/sda4 SDA4UUID=luks-`sudo cryptsetup luksUUID /dev/sda4`
HDD용 LUKS 컨테이너를 열고
/home
최종적으로 새 장치에서 호스팅할 볼륨 그룹을 확장합니다.sudo cryptsetup open /dev/sdb1 $SDB1UUID
lvs
이제 볼륨 그룹이dump
활성화된 것으로 표시되어야 합니다.sudo cryptsetup open /dev/sda4 $SDA4UUID sudo vgextend dump /dev/mapper/$SDA4UUID
캐시의 메타데이터와 캐시 자체에 대한 논리 볼륨을 생성합니다.
메타데이터 볼륨은 캐시 자체 크기의 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
관리되는 논리 볼륨에 캐시를 추가합니다
/home
.sudo lvconvert --type cache --cachepool dump/lv_cache dump/dump
출력은 "논리 볼륨 덤프/덤프가 이제 캐시되었습니다."와 유사해야 합니다.
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
기도하고 원래 시스템으로 재부팅하십시오.
다시 시작한 후 다음과 같이 캐시에 대한 통계를 얻을 수 있습니다.
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)가 사용되는 다음 링크를 참조하세요.
있는 경우 장치 관리자의 설명에 따라 캐시가 암호화되지 않을 것이라고 생각합니다 LVM
.LUKS
https://help.ubuntu.com/community/EncryptedFilesystemHowto. 암호화된 데이터가 캐시되어 있다고 생각 LUKS
합니다 .LVM
LVM
위의 경우 크기 조정에 대한 좋은 참고 자료는 다음과 같습니다 LUKS
.https://help.ubuntu.com/community/ResizeEncryptedPartitions. 사람들은 이에 반대 방향으로 적응할 수 있어야 합니다.
프로세스를 확인하거나 테스트/검증된 복구 프로세스를 사용하여 전체 복구를 수행하려면 테스트 시스템을 설정하는 것이 가장 좋습니다.