다음과 같은 파티션 테이블이 있습니다.
NAME
nvme0n1
├─nvme0n1p1 part /boot
└─nvme0n1p2 part
└─crypt crypt
├─crypt-swap lvm [SWAP]
├─crypt-root lvm /
└─crypt-home lvm /home
드라이브가 SSD이므로 실행하고 싶습니다.치다디스크 자체의 성능/수명을 향상시키는 명령입니다.
특히 주기적 TRIM을 활성화하고 싶습니다.
두 번째 파티션(예: nvme0n1p2
)은 암호화되어 있으므로 보안상의 이유로 TRIM이 비활성화됩니다(https://wiki.archlinux.org/title/Dm-crypt/Specialties#Discard/TRIM_support_for_solid_state_drives_(SSD)).
그러나 encrypt
암호화된 파티션을 열 때 구성하여 TRIM을 활성화할 수 있습니다.
커널 부팅 시 파티션이 열렸을 때 커널 매개변수(예 allow-discards
: )를 수정했습니다.
cryptdevice=/dev/sdaX:root:allow-discards
(파티션 이름 지정 및 볼륨 이름은 위 코드 조각과 관련이 없습니다.).
이렇게 하면 실제로 디스크에서 TRIM 명령을 성공적으로 실행할 수 있었습니다.
# cryptsetup luksDump /dev/nvme0n1p2 | grep Flags
Flags: allow-discards
그리고:
# fstrim ...
/home: [..] trimmed on ...
/: [..] trimmed on
여태까지는 그런대로 잘됐다.
문제는 원래 상태로 복원하려고 할 때 발생합니다.
커널 매개변수를 제거했지만 여전히 파티션에 표시되고 명령 이 성공적 allow-discards
으로 수행됩니다.Flags
allow-discards
fstrim
- 어떻게 이럴 수있어?
- 암호화된 파티션에서 거부된 드롭을 복구하는 방법은 무엇입니까?
답변1
LUK2는 메타데이터를 헤더에 영구적으로 저장할 수 있는 것으로 나타났습니다.
allow-discards
다음 명령을 사용하여 (커널 매개변수와 같은 추가 구성 없이) 파티션 자체에 이를 활성화하고 저장할 수 있습니다 :
cryptsetup --allow-discards --persistent refresh root
분명히 나는 과거에 폐기 옵션을 활성화하기 위해 이 명령을 실행한 적이 있습니다.
이 플래그는 다음을 통해 제거할 수 있습니다.
cryptsetup --persistent refresh root
https://man7.org/linux/man-pages/man8/cryptsetup.8.html
선택적 인수 없이 장치를 새로 고치면 기본 설정을 사용하여 장치가 새로 고쳐집니다(장치 유형에 따라 다름).