1. 程式人生 > >libvirt-qemu-磁碟加密:LUKS

libvirt-qemu-磁碟加密:LUKS

LUKS是一種基於device mapper機制的加密方式。使用加密磁碟前要先mapper對映,對映時需要輸入密碼,寫入和讀取磁碟時不需要再輸入密碼。LUKS可以選擇不同的加密演算法,也可以開發使用自己的加密演算法。本文使用的虛擬機器磁碟就是LUKS的加密磁碟。

1. 建立luks格式的加密磁碟 # MYSECRET=`printf %s "123456" | base64` # qemu-img create -f luks --object secret,data=$MYSECRET,id=sec0,format=base64,qom-type=secret -o key-secret=sec0 encrypt.luks 1G

2. 在本地建立一個祕鑰xml secret.xml <secret ephemeral='no' private='yes'>     <uuid>7d195d98-6a06-4bb9-a0e9-6a2fde302f31</uuid> </secret> 注:uuid項可以沒有,那麼將隨機生成一個uuid

3. 定義一個libvirt的secret # virsh secret-define secret.xml  Secret 7d195d98-6a06-4bb9-a0e9-6a2fde302f31 created

4. 給secret設定密碼值(這裡的密碼就是給磁碟加密時使用的密碼123456) # virsh secret-set-value 7d195d98-6a06-4bb9-a0e9-6a2fde302f31 $MYSECRET 注:密值是base64的(MYSECRET=`printf %s "123456" | base64`) 注:產生的secret以及密碼在/etc/libvirt/secrets/中存在

5. 在虛擬機器xml檔案的disk段中加入secret <disk device="disk" type="file">   <driver name="qemu" type="raw" />   <source file="/tmp/encrypt.luks" />   <target bus="virtio" dev="vdb" />   <encryption format='luks'>     <secret type='passphrase' uuid='7d195d98-6a06-4bb9-a0e9-6a2fde302f31'/>   </encryption> </disk>

6. 啟動虛擬機器。虛擬啟動後就是使用的加密的磁碟。

7. 磁碟加密虛擬機器的遷移 在遷移之前要在遠端libvirt建立相同的secret。遠端建立secret的方式有兩種:使用libvrit遠端rpc的方式執行secret-define和secret-set-value ,或者直接在目標主機上執行上述過程。

注: 如果不在hypervior層使用secret-set-value進行解密,即在虛擬機器xml的disk段中不新增encryption。那就需要到虛擬機器中掛載磁碟時輸入密碼:

---------------------  原文:https://blog.csdn.net/isclouder/article/details/80731388