LUKS学习笔记(1)

QEMU + LUKS 加密镜像使用指南

1. 环境搭建

1.1 编译环境

apt install -y libgcrypt20-dev pkg-config

.../configure

--target-list=aarch64-softmmu

--disable-werror

--enable-gcrypt

2. 创建 LUKS 镜像

2.1 创建头文件

qemu-img create --object secret,id=sec0,data=abc123 -f luks

-o cipher-alg=aes-256,cipher-mode=xts,key-secret=sec0,detached-header=true

encrypted-header.img

说明:

密码:abc123

LUKS 头文件:encrypted-header.img

2.2 创建载荷文件(raw 格式)

qemu-img create -f raw encrypted-payload.raw 70G

2.3 创建密码文件

echo -n "abc123" > /tmp/luks.key

chmod 600 /tmp/luks.key

注意:

-n 防止换行符

权限必须是 600

2.4 打开加密容器

sudo cryptsetup open

--header encrypted-header.img

encrypted-payload.raw

my_encrypted_disk

--key-file=/tmp/luks.key

2.5 格式化文件系统

sudo mkfs.ext4 /dev/mapper/my_encrypted_disk

2.6 挂载 LUKS 磁盘

sudo mount /dev/mapper/my_encrypted_disk /mnt/encrypted

2.7 挂载原始镜像

kpartx -va system.img

mount /dev/loop1/ /mnt/orin

注意:loop 号可能不同

2.8 复制数据

sudo rsync -avHAX /mnt/orin/ /mnt/encrypted/

2.9 清理环境

umount /mnt/encrypted/

sudo cryptsetup close my_encrypted_disk

3. 启动 OS

.../0303/qemu-thor/build/qemu-system-aarch64

-machine virt,gic-version=3,accel=kvm,iommu=smmuv3

-cpu host

-smp 8

-m 40960M

-object secret,id=sec0,data=abc123

-blockdev driver=file,filename=encrypted-header.img,node-name=header

-blockdev driver=raw,file=header,node-name=header-raw

-blockdev driver=file,filename=encrypted-payload.raw,node-name=payload,aio=native,cache.direct=on,cache.no-flush=off

-blockdev driver=raw,file=payload,node-name=payload-raw

-blockdev driver=luks,file=payload-raw,header=header-raw,key-secret=sec0,node-name=luks-vol

-device virtio-blk-pci,drive=luks-vol,num-queues=8

-kernel .../Image_guest

-append "root=/dev/vda console=ttyAMA0 init=/sbin/init rootwait rw clk_ignore_unused pd_ignore_unused loglevel=20 isolcpus=domain,managed_irq,1-3 nohz_full=1-3 rcu_nocbs=1-3 nohlt"

-nographic

-device pcie-root-port,bus=pcie.0,id=rp1

-device vfio-platform,host=a80aa10000.usb

-device vfio-platform,host=a808680000.padctl

-device vfio-platform,host=8808c00000.display

-device vfio-platform,host=8181200000.host1x

-device vfio-platform,host=8808000000.dce

-device vfio-platform,host=nvdisplay-niso

-netdev tap,id=net0,ifname=tap0,script=no,downscript=no

-device virtio-net-pci,netdev=net0

-mem-prealloc

-mem-path /dev/hugepages

-name andy,debug-threads=on

4. 性能测试

测试项 性能 对比非 LUKS

大块顺序读 1100+ MB/s 24%

大块顺序写 1100+ MB/s 24%

小块随机读 194 MB/s 69%

小块随机写 212 MB/s 100%

5. 调试方法

5.1 查看 LUKS 信息

sudo cryptsetup status /dev/mapper/my_encrypted_disk

5.2 查看块设备信息(Guest 内)

echo "=== virtio-blk 队列参数 ==="

cat /sys/block/vda/queue/logical_block_size

cat /sys/block/vda/queue/physical_block_size

cat /sys/block/vda/queue/minimum_io_size

cat /sys/block/vda/queue/optimal_io_size

示例:

logical_block_size: 512

physical_block_size: 512

minimum_io_size: 512

optimal_io_size: 0

6. 注意事项

不要开启:

--enable-crypto-afalg

原因:

内核 crypto 性能更差

实测仅为非 LUKS 的 5%

相关推荐
秋漓3 分钟前
Nginx学习与应用
运维·学习·nginx
dong__csdn14 分钟前
websocket实现简单的单聊、群聊demo
网络·websocket·网络协议
一只小鱼儿吖14 分钟前
代理IP与内网穿透:网络世界的“隐形斗篷”与“任意门”
网络
天行健,君子而铎16 分钟前
自适应、全链路与智能识别——政务数据安全泛监测系统
java·网络·政务
searchforAI18 分钟前
长视频和播客怎么变成结构化读书笔记?一套 AI 时代的知识管理方法
人工智能·笔记·gpt·音视频·语音识别
搞科研的小刘选手36 分钟前
【西安交通大学主办】第六届人工智能、自动化与高性能计算国际会议 (AIAHPC 2026)
网络·人工智能·机器学习·数据挖掘·自动化·云计算·并行式
鸢惜40 分钟前
菜鸟教程学习笔记——html(二)
笔记·html5
XiaoLin laile43 分钟前
数据合规越查越严,企业内网通讯软件成安全刚需
网络
酉鬼女又兒1 小时前
零基础入门计算机网络可靠传输:从基本概念到三大实现机制(停止 - 等待 / 回退 N 帧 / 选择重传)全解析
网络·网络协议·计算机网络·考研·职场和发展·计算机外设·求职招聘
luweis1 小时前
企智孪生 ETA (6.5 人机协同:定义“协作界面 (Collaboration UI)”)【杭州联保致新科技有限公司 卢伟舜】
网络·人工智能·科技·程序人生·创业创新·学习方法