Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4644
  • 博文数量: 1
  • 博客积分: 130
  • 博客等级: 入伍新兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-04 16:08
文章分类
文章存档

2017年(1)

我的朋友

分类: LINUX

2017-06-08 17:51:15

#用本地文件加载为虚拟块设备作实验

#生成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) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~