[步骤] 通过 crypt 实现硬盘逻辑卷加密并自动挂载

步骤目录:
步骤一:硬盘加密后的注意事项

步骤二:生成一个新的分区
2.1 查看现有的分区
2.2 创建一个新的分区

步骤三:创建逻辑卷
3.1 创建卷组
3.2 创建逻辑卷

步骤四:给逻辑卷加密
4.1 给逻辑卷加密
4.2 解锁逻辑卷
4.3 格式化逻辑卷
4.4 锁住逻辑卷

内容五:自动挂载加密逻辑卷
5.1 修改系统自动挂载文件
5.2 创建一个映射器
5.3 创建随机密钥文件
5.4 将密钥文件设为只读为 root
5.5 将密码添到 luks 中,让密码立刻生效
5.6 测试挂载效果
5.6.1 挂载加密逻辑卷
5.6.2 测试加密效果

具体的操作步骤:
步骤一:硬盘加密后的注意事项
(1)加密后不能直接挂载
(2)加密后硬盘丢失也不用担心数据被盗
(3)加密后必须做映射才能挂载

步骤二:生成一个新的分区
2.1 查看现有的分区
# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   10G  0 disk 
└─vda1 253:1    0   10G  0 part /
vdb    253:16   0   10G  0 disk 

(补充:在这里是加了一个 vdb 硬盘用来进行分区并加密)

2.2 创建一个新的分区
# fdisk /dev/vdb
命令(输入 m 获取帮助):n
分区号 (1-8,默认 1):
起始 扇区 (0-20971440,默认 0):
Last 扇区 or +扇区 or +size{K,M,G,T,P} (0-20971440,默认 20971440):+5G
分区 1 已设置为 Linux native 类型,大小设为 5 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

2.2 查看新的分区
# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   10G  0 disk 
└─vda1 253:1    0   10G  0 part /
vdb    253:16   0   10G  0 disk 
└─vdb1 253:17   0    5G  0 part 

步骤三:创建逻辑卷
3.1 创建卷组
# vgcreate mysqldatavg /dev/vdb1
WARNING: sun signature detected on /dev/vdb1 at offset 508. Wipe it? [y/n]: y
  Wiping sun signature on /dev/vdb1.
  Physical volume "/dev/vdb1" successfully created.
  Volume group "mysqldatavg" successfully created

3.2 创建逻辑卷
# lvcreate -n mysqldatalv -L 1G mysqldatavg
  Logical volume "mysqldatalv" created.

步骤四:给逻辑卷加密
4.1 给逻辑卷加密
# cryptsetup luksFormat /dev/mapper/mysqldatavg-mysqldatalv

WARNING!
========
这将覆盖 /dev/mapper/mysqldatavg-mysqldatalv 上的数据,该动作不可取消。

Are you sure? (Type uppercase yes): YES
输入 /dev/mapper/mysqldatavg-mysqldatalv 的口令:
确认密码:

4.2 解锁逻辑卷
# cryptsetup luksOpen /dev/mapper/mysqldatavg-mysqldatalv mysqldata
输入 /dev/mapper/mysqldatavg-mysqldatalv 的口令:

(补充:这里的 mysqldata 是解锁后的硬件名称)

4.3 格式化逻辑卷
# mkfs.ext4 /dev/mapper/mysqldata

(注意:要先解锁了逻辑卷以后才能格式化逻辑卷)

4.4 锁住逻辑卷
# cryptsetup luksClose mysqldata

内容五:自动挂载加密逻辑卷
5.1 修改系统自动挂载文件
# vim /etc/fstab
添加以下内容:
......
/dev/mapper/mysqldata /var/lib/mysql ext4 defaults 0 0

5.2 创建一个映射器
# vim /etc/cypttab
添加以下内容:
......
mysqldata /dev/mapper/mysqldatavg-mysqldatalv /root/keyfile luks

(补充:这里的三个参数分别代表:虚拟设备名、真实设备、密码的存储文件)

5.3 创建随机密钥文件
# dd if=/dev/urandom of=/root/keyfile bs=1024 count=4

5.4 将密钥文件设为只读
# chmod 0400 /root/keyfile

5.5 将密码添到 luks 中,让密码立刻生效
# cryptsetup luksAddKey /dev/mysqldatavg/mysqldatalv /root/keyfile
输入任意已存在的口令:

5.6 测试挂载效果
5.6.1 挂载加密逻辑卷
# mount -a

5.6.2 测试加密效果
# df -h