首页 >> 金融 >> 智汇华云 | bcache原理及系统化

智汇华云 | bcache原理及系统化

2023-03-13 金融

ig -o /etc/grub2.cfg

5、重启

# reboot

6、加载多线程

# modprobe bcache

# lsmod | grep bcache

(二)、装设bcache-tools

1、装设依赖于libblkid-devel和gcc

# yum install libblkid-devel gcc -y

2、流媒体bcache-tools源码 流媒体链接为

3、解压包

# tar -zxvf bcache-tools-1.0.8.tar.gz

# cd /root/bcache-tools-1.0.8

4、装设

# make

# make install

中有意:如果是ubuntu环境可以并不一定需装设

# apt-get install bcache-tools

(三)、创立bcache仪器

1、创立后内侧加速仪器(一般是HDD、SATA盘等)

# make-bcache -B /dev/sdc

UUID:1eca911e-c9c9-4d9b-84c0-c1da023574ed

Set UUID:5cf29253-f347-435e-a3db-b99006c8e6e0

version:1

block_size:1

data_offset:16

可以看着,在sdb(HDD)存储器下,经常出现了bcache0结点,这个bcache0可以明白为就是/dev/sdb存储器了

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

└─bcache0 252:0 0 200G 0 disk

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

对bcache0顺利完成格式化配有了。

# mkfs.xfs /dev/bcache0

meta-data=/dev/bcache0 isize=256 agcount=4, agsize=1310720 blks

= sectsz=512 attr=2, projid32bit=1

= crc=0 finobt=0

data = bsize=4096 blocks=5242878, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=0

log =internal log bsize=4096 blocks=2560, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

挂载书目

# mkdir /wyl

# mount /dev/bcache0 /wyl

# df -h

Filesystem Size Used Avail Use% Mounted on

devtmpfs 2.0G 0 2.0G 0% /dev

tmpfs 2.0G 0 2.0G 0% /dev/shm

tmpfs 2.0G 8.6M 2.0G 1% /run

tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup

/dev/mapper/centos-root 18G 1.6G 16G 9% /

/dev/sda1 497M 170M 328M 35% /boot

tmpfs 394M 0 394M 0% /run/user/0

/dev/bcache0 20G 33M 20G 1% /wyl

2、创立同一时间内侧内存存储器(SSD)

# make-bcache -C /dev/sdb

UUID:51d3daf3-ca90-4bf7-9499-79b98321c43a

Set UUID:f43c7118-4595-49cf-a17c-1965ee939b4b

version:0

nbuckets:163840

block_size:1

bucket_size:1024

nr_in_set:1

nr_this_dev:0

first_bucket:1

构建连续函数人关系 把我们创立好的后内侧加速仪器和同一时间内侧高速仪器构建同德系,这样高速仪器才能为加速仪器透过内存作用。

首先需得到该内存盘(/dev/sdb)的cset.uuid,通过bcache-super-show号令检视:

# bcache-super-show /dev/sdb

sb.magicok

sb.first_sector8 [match]

sb.csumAD0668369D7EED63 [match]

sb.version3 [cache device]

dev.label(empty)

dev.uuid51d3daf3-ca90-4bf7-9499-79b98321c43a

dev.sectors_per_block1

dev.sectors_per_bucket1024

dev.cache.first_sector1024

dev.cache.cache_sectors167771136

dev.cache.total_sectors167772160

dev.cache.orderedyes

dev.cache.discardno

dev.cache.pos0

dev.cache.replacement0 [lru]

cset.uuidf43c7118-4595-49cf-a17c-1965ee939b4b

备构建同德

# echo "f43c7118-4595-49cf-a17c-1965ee939b4b"> /sys/block/bcache0/bcache/attach

配有完成后,可以通过lsblk号令检视结果

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

└─bcache0 252:0 0 200G 0 disk /wyl

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

└─bcache0 252:0 0 200G 0 disk /wyl

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

三、更极快配有方式则

上面我们配有约莫分了三个步骤:创立后内侧仪器、创立同一时间内侧内存仪器、构建他们之间的连续函数人关系。

1、更极快创立

# make-bcache -C /dev/sdb -B /dev/sdc

2、检视

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

└─bcache0 252:0 0 200G 0 disk /wyl

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

└─bcache0 252:0 0 200G 0 disk /wyl

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

3、同样全力支持多个后内侧仪器

# make-bcache -C /dev/sdb -B /dev/sdc /dev/sdd

四、高级功能

1、指定块较小 在make-bcache的时候加入-w和-b常量,主要是提高内存可靠性

-w block size 配有副本2K,一般需block size = 后内侧仪器的扇区较小。

-b bucket size,一般需bucket size = 同一时间内侧内存仪器的erase block size较小。

2、重写内存方针 检视内存方针,可以看着配有副本的方针是writethrough,也就是直写出方式则上

# cat /sys/block/bcache0/bcache/cache_mode

[writethrough] writeback writearound none

重写内存方针

# echo writeback> /sys/block/bcache0/bcache/cache_mode

然后检视是否订立

# cat /sys/block/bcache0/bcache/cache_mode

writethrough [writeback] writearound none

中有:就算机器重启以后内存方针也不但会失效的。

3、检视内存 确认所有的东西都在此之后正确地配有了:

# cat /sys/block/bcache0/bcache/state

可用的概要有以下可能:

no cache: 这代表你还不会绑定内存仪器到你的后内侧仪器上

clean: 这代表一切正常,内存是clean的

dirty: 这代表一切正常,内存方式则上被增设成了writeback,内存是dirty的

inconsistent: 这代表缺陷很大,后内侧仪器与内存仪器不会并行可用一个不会内存仪器的 /dev/bcache0 的话所有的IO都但会并不一定需在后内侧仪器上执行,等同pass-through方式则上。

4.IO路径监控

bcache但会监控每个IO,如果IO的时间至少也就是说,则路中会cache仪器,并不一定需念书写出backing仪器。

如果你的SSD足够强大,可以不监控,减少监控的开销。

# echo 0> /sys/fs/bcache//congested_read_threshold_us

# echo 0> /sys/fs/bcache//congested_write_threshold_us

停止路中会的另一个好处是,所有的频域念书写出都但会经过cache仪器,从而不但会导致cache missing。

配有副本情况下当念书乞求求至少2ms,写出乞求求至少20ms时,路中会cache仪器。

The default is 2000 us (2 milliseconds) for reads, and 20000 for writes.

5.将依次IO也命中会到cache中会 锁住依次IO内存:

# echo 0> /sys/block/bcache0/bcache/sequential_cutoff

增设回来配有副本值:

# echo 4194304> /sys/block/bcache0/bcache/sequential_cutoff

五、移除bcache

1、解除内存盘和后内侧盘人关系

要将内存盘从当同一时间的后内侧存储器移除,无需将内存盘的cset.uuid detach到bcache仪器即可实现

检视ssd的cset.uuid

# bcache-super-show /dev/sdb | grep cset.uuid

cset.uuidf43c7118-4595-49cf-a17c-1965ee939b4b

解除绑定

# echo f43c7118-4595-49cf-a17c-1965ee939b4b> /sys/block/bcache0/bcache/detach

检视结果

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

└─bcache0 252:0 0 200G 0 disk

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

可以看着sdb下面在此之后不会bcache0了。

2、移除后内侧盘

# umount /wyl/

# echo 1> /sys/block/bcache0/bcache/stop

# echo 1>/sys/fs/bcache/f43c7118-4595-49cf-a17c-1965ee939b4b/unregister

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

└─bcache0 252:0 0 200G 0 disk

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

3、解析

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdb 8:16 0 80G 0 disk

sr0 11:0 1 1024M 0 rom

fd0 2:0 1 4K 0 disk

sdc 8:32 0 200G 0 disk

sda 8:0 0 80G 0 disk

├─sda2 8:2 0 79G 0 part

│ ├─centos-swap 253:1 0 4G 0 lvm [SWAP]

│ └─centos-root 253:0 0 75G 0 lvm /

└─sda1 8:1 0 1G 0 part /boot

4、格式化存储器

# mkfs.xfs /dev/sdb -f

# mkfs.xfs /dev/sdc -f

六、碰到的缺陷

1、擦除存储器中会的超级块中会的数据库

用存储器作为Bcache存储器同一时间,乞求先确保存储器是飞的,或者存储器中会的数据库毫无意义。如果存储器中会有副本该系统,将但会经常出现如下错误:

# make-bcache -C /dev/sdc

Device /dev/sdc already has a non-bcache superblock, remove it using wipefs and wipefs -a

擦除存储器中会的超级块信息:

# wipefs -a /dev/sdc

/dev/sdc: 2 bytes were erased at offset 0x00000438 (ext4): 53 ef

2、如果可用make-bcache号令经常出现了如下打印,那就话概述当同一时间存储器在此之后是bcache存储器,

# make-bcache -B /dev/sdb

Already a bcache device on /dev/sdb, overwrite with ---wipe-bcache

加上 ---wipe-bcache常量就可以了:

# make-bcache -B /dev/sdb ---wipe-bcache

3、仪器处于上下班中会

# make-bcache -C /dev/sdf -B /dev/sdc

Can't open dev /dev/sdf: Device or resource busy

这时候其所该可以看着这个lv的superblock还有信息,这就是诱因.

# bcache-super-show /dev/sdf

# wipefs -af /dev/sdf

# dd if=/dev/zero of=/dev/sdf bs=1M count=512

# reboot

郑州治疗不孕不育好方法
长春生殖感染医院哪里最好
昆明甲状腺哪家医院最好
郑州看白癜风哪家专科医院好
漳州看妇科哪家医院比较好
TAG:原理
友情链接