#用本地文件加载为虚拟块设备作实验
#生成10M大小空文件
dd if=/dev/zero of=v0 bs=1M count=10
dd if=/dev/zero of=v1 bs=1M count=10
dd if=/dev/zero of=v2 bs=1M count=10
dd if=/dev/zero of=v3 bs=1M count=10
#加载为loop块设备
sudo losetup /dev/loop0 v0
sudo losetup /dev/loop1 v1
sudo losetup /dev/loop2 v2
sudo losetup /dev/loop3 v3
#查看块设备扇区数量fdisk -l 和 blockdev --getsz都可以
blockdev --getsz /dev/loop0
......
#计算chunk数
#等下要在dmsetup命令里填入chunk参数,此参数为chunk数量。块设备每次读写I/O大小等于chunk数乘以每个chunk大小。每个chunk大小等于一个扇区大小,扇区一般都为512Byte。linux kernel memory page I/O大小在x86、x64电脑上一般都为4KB,块设备每次读写I/O最小值不能小于这个值。所以chunk总大小至少为4KB。chunk数最少为8(虽然文档里是这么说的,但我实际上分配小于4KB时也未报错)。分配更大的chunk数时要为2的次方。
#计算扇区数
#dmsetup命令里要填入扇区数,此数字必须为chunk数的倍数。如果扇区数除以chunk数有余数要舍弃。比如一个块设备有156168扇区,chunk数为128。156168 / 128 商1220 余8。所以等下单个设备扇区数为156160而不是原来的扇区数。然后单个设备扇区数乘以设备总数。
#加载为条带化块设备(相当于raid0)
sudo dmsetup create striped0 --table '0 81920 striped 4 8 /dev/loop0 0 /dev/loop1 0 /dev/loop2 0 /dev/loop3 0'
#上面sudo需要root权限
#dmsetup linux系统一般自带此命令
#create(创建)
#striped0(自定义要创建的条带化设备名称,一般创建后会出现在/dev/mapper下面)
#--table (此选项后跟具体参数,也可填一个含有参数指定文件名)
#0 从哪个扇区开始
#81920 设备总大小(扇区数)
#striped 设备类型。这里为条带化设备。如果是普通拼接扩容则填linear。
#4 条带化总设备数
#8 chunk数。最小I/O大小为8 * 0.5KB = 4KB。即每次读写到此设备最小单位为4KB。
#/dev/loop0 需进行条带化的设备
#0 偏移值。一般为0
#进行加密,可在最前面加个空格,避免被bash加入历史记录
dmsetup create crypted0 --table '0 81920 crypt aes-xts-plain64 1111111111222222222233333333334444444444555555555566666666661234 0 /dev/mapper/striped0 0'
#格式基本跟前面条带化时差不多。
#crypted0 自定义的设备名称。创建后同样会出现在/dev/mapper下
#crypt 表示加密设备类型
#aes-xts-plain64 由三部分组成,可根据自己需要选择不同参数。
#1111111111222222222233333333334444444444555555555566666666661234 因为选择了xts所以需要256位key。上面那64个字符相当于加密的密钥。每个字符是一个4bit的16进制字符串,只能是0-9、a-f的字符。
#0 是称为Initialization Vector初始向量的偏移值。一般填0即可。
#最后面根据需要还可以加入"1 allow_discards"打开discard功能(相当于trim)用于SSD优化。不过这个功能不利于保密。
#然后就可以当作普通块设备来使用了。
sudo mkfs.ext4 /dev/mapper/crypted0
#sudo mount /dev/mapper/crypted0 挂载目录
#使用dmsetup remove来卸载
sudo umount /dev/mapper/crypted0
sudo dmsetup remove /dev/mapper/crypted0
sudo dmsetup remove /dev/mapper/striped0
#下次使用相同的参数可重新载入。
阅读(2142) | 评论(0) | 转发(0) |