저는 다양한 cryptsetup
볼륨을 벤치마킹하고 있는데 Debian에서 예상치 못한 결과를 얻었습니다.
내가 사용한 전화번호는이 말대략적인 참고 사항입니다. 슬라이드 중 하나는 다양한 구성에 대한 벤치마크 결과를 보여줍니다.
내 설정이 동일하지 않고 모든 테스트를 가상 머신에서 실행하므로 결과가 정확히 동일할 것이라고 기대하지는 않지만 슬라이드에 있는 내용을 대략적으로 반영해야 한다고 생각합니다. 특히 인증된 무결성 모드의 성능은 약 35(AES-XTS, HMAC-SHA256) 인증되지 않은 제품(AES-XTS), 일기 완성도와 일기가 아닌 완성도의 경우 35%입니다.
하지만 Ubuntu Server 20.04 및 Debian 10.4와 유사한 결과는 다음과 같습니다.
LUKS2 container:
Capacity 1056964608 B
Read 26.5MB/s
Write 8855kB/s
LUKS2 with hmac-sha256, no journal:
Capacity 1040322560 B
Read 19.0MB/s
Write 6352kB/s
LUKS2 with hmac-sha256, journaled:
Capacity 1040322560 B
Read 18.9MB/s
Write 6311kB/s
무결성을 활성화하면 성능이 약 30% 감소할 것으로 예상됩니다. 그러나 일기와 일기가 아닌 무결성의 차이는 미미합니다. 즉, 이것이 원래 벤치마크보다 훨씬 낫기 때문에 기쁠 것입니다. 하지만 저널이 실제로 제 역할을 하고 있는지 어떻게 알 수 있으며, 그렇다면 어떻게 옵트아웃할 수 있습니까?
이것은 내 cryptsetup
형식 명령입니다.
cryptsetup luksFormat --type luks2 /dev/sdb --sector-size 4096
cryptsetup luksFormat --type luks2 /dev/sdb --sector-size 4096 --integrity hmac-sha256
cryptsetup luksFormat --type luks2 /dev/sdb --sector-size 4096 --integrity hmac-sha256 --integrity-no-journal
벤치마크 명령:
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=/dev/mapper/sdb --bs=4k --iodepth=64 --readwrite=randrw --rwmixread=75
VM은 각각 Debian 또는 Ubuntu의 기본 설정을 사용하여 VirtualBox 6.1에서 구성되었습니다. 디스크는 1GB VDI이며 크기가 고정되어 있고 0으로 미리 채워져 있으며 호스트 버퍼링이 비활성화되어 있습니다. 기본 SSD는 4k 섹터를 사용하므로 --sector-size 4096
.
흥미롭게도 기본 --integrity
변형과 --integrity-no-journal
변형 모두 sdb_dif
로그가 포함된 중간 매핑 장치를 생성하고 두 sdb
장치 모두 크기가 동일합니다.
$ sudo integritysetup status /dev/mapper/sdb_dif
/dev/mapper/sdb_dif is active and is in use.
type: INTEGRITY
tag size: 32
integrity: (none)
device: /dev/sdb
sector size: 4096 bytes
interleave sectors: 32768
size: 2031880 sectors
mode: read/write
failures: 0
journal size: 8380416 bytes
journal watermark: 50%
journal commit time: 10000 ms
$ sudo blockdev --getsize64 /dev/mapper/sdb
1040322560
답변1
답변 요약:
cryptsetup format
소홀히 하다배너 --integrity-no-journal
.
대신 옵션은 다음과 같습니다.
- 매번
open
항상 배달됩니다--integrity-no-journal
. - 처음 열 때(즉, 내부 장치를 파일 시스템으로 포맷하거나 내부 장치를 MD RAID에 추가하는 경우)
--persistent --integrity-no-journal
보존--integrity-no-journal
설정을 제공합니다. 그러면open
앞으로는 플래그가 필요 없게 될 것입니다. 이 옵션은cryptsetup
direct를 사용하는 경우에만 적용되며 효과가 없습니다integritysetup
. open
장치가 편집 되었을 때 발생합니다refresh --persistent --integrity-no-journal
. 이 옵션은cryptsetup
직접 사용하는 경우에만 적용되며 효과가 없습니다integritysetup
.
이전 텍스트:
--integrity-no-journal
에 로고를 제공 하셨나요 integritysetup open
? dm-integrity
그런 것 같아요아니요포맷할 때 슈퍼블록에 기존 로그를 저장합니다(아님).
나는 사용한다 integritysetup format /dev/sdb1 --no-wipe
.
그런 다음 integritysetup open /dev/sdb1 int-sdb1
및 를 사용하여 엽니다 sync; echo 1 > /proc/sys/vm/drop_caches; dd count=16384 bs=4096 if=/dev/zero of=/dev/mapper/int-sdb1
. 이는 항상 2.1Mb/s에서 2.4Mb/s 사이의 결과를 제공합니다.
닫았다가를 사용하여 다시 열고 integritysetup open /dev/sdb1 int-sdb1 --integrity-no-journal
동일한 dd
명령을 실행했습니다. 이번에는 4.0Mb/s에서 7.0Mb/s로 속도가 향상되었는데, 이는 상당한 개선입니다. 큰 차이점은 아마도 플래시 변환 레이어 때문일 것입니다. 그것은 형편없는 일회용 저렴한 디스크입니다.
나는 그것을 다시 반복했다 integritysetup format /dev/sdb1 --no-wipe --integrity-no-journal
. 다시 말하지만 중요한 것은 기부 여부입니다 --integrity-no-journal
.open
주문하다,아니요도착하다format
주문하다.
따라서 이것은 불분명한 질문일 수 있습니다 integritysetup
. 명령 --integrity-no=journal
을 따르면 format
.