如何释放被 bcache 锁定的设备

如何释放被 bcache 锁定的设备

今天买了一个128MB的SSD盘,装上去,然后安装bcache-tools。尝试访问设备后,出现以下错误:

root@dev:/sys/block/sda/bcache# make-bcache -B /dev/sdb1 /dev/sdb1 -C /dev/sda
Can't open dev /dev/sda: Device or resource busy


root@dev:/sys/block/sda/bcache# fdisk /dev/sda

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

/dev/sda: device contains a valid 'bcache' signature; it is strongly recommended to wipe the device with wipefs(8) if this is unexpected, in order to avoid possible collisions

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xfef282bc.

Command (m for help): q

root@dev:/sys/block/sda/bcache# wipefs -a /dev/sda
wipefs: error: /dev/sda: probing initialization failed: Device or resource busy
root@dev:/sys/block/sda/bcache# 

所以我有以下问题:

  • 为什么bcache它没有征求我的同意就开始使用我的 SSD 磁盘 (/dev/sda)?这对权威来说是一种极大的不尊重。
  • 我该如何禁用bcache以便能够正确格式化设备,它们尚未格式化。

bcache这是设备中 ls -l 的输出:

root@dev:/sys/block/sda/bcache# ls -l
total 0
-r--r--r-- 1 root root 4096 Apr 26 18:47 block_size
-r--r--r-- 1 root root 4096 Apr 26 18:47 btree_written
-r--r--r-- 1 root root 4096 Apr 26 18:47 bucket_size
-rw-r--r-- 1 root root 4096 Apr 26 18:47 cache_replacement_policy
--w------- 1 root root 4096 Apr 26 18:47 clear_stats
-rw-r--r-- 1 root root 4096 Apr 26 18:47 discard
-r--r--r-- 1 root root 4096 Apr 26 18:47 io_errors
-r--r--r-- 1 root root 4096 Apr 26 18:47 metadata_written
-r--r--r-- 1 root root 4096 Apr 26 18:47 nbuckets
-r--r--r-- 1 root root 4096 Apr 26 18:47 priority_stats
lrwxrwxrwx 1 root root    0 Apr 26 18:47 set -> ../../../../../../../../../../fs/bcache/b9d9517a-a606-4ac2-86dc-3399e9678381
-r--r--r-- 1 root root 4096 Apr 26 18:47 written
root@dev:/sys/block/sda/bcache# pwd
/sys/block/sda/bcache
root@dev:/sys/block/sda/bcache# 

root@dev:/sys/fs/bcache# ls -l
total 0
drwxr-xr-x 7 root root    0 Apr 26 19:00 b9d9517a-a606-4ac2-86dc-3399e9678381
--w------- 1 root root 4096 Apr 26 19:00 register
--w------- 1 root root 4096 Apr 26 19:00 register_quiet
root@dev:/sys/fs/bcache# 

答案1

bcache不会这样做。要么是您购买的磁盘不干净,拆箱时已经包含 bcache 超级块(因此可能是退回的驱动器,没有正确擦除),要么是您运行的第一个命令有问题:/dev/sdb1命令行上出现了两次,这可能混淆了命令,并且它已经创建了超级块并附加了/dev/sdb1

为了摆脱它,请拆除支持设备:

# echo 1 >/sys/block/sdb/sdb1/bcache/detach

然后取消注册缓存:

# echo 1 >/sys/fs/bcache/b9d9517a-a606-4ac2-86dc-3399e9678381/unregister

现在,在 udev 重新注册之前立即擦除它:

# wipe -a /dev/sda

不要感到困惑,它/dev/sdb1仍然显示为受 bcache 控制。它不会造成任何影响,您可以通过 访问它/dev/bcache0。它未附加到缓存,因此不会从任何缓存中受益,它以直通模式工作,直到您手动将其重新附加到缓存:

# echo CACHE_SET_ID >/sys/block/sdb/sdb1/bcache/attach

在这种情况下,您只创建一个缓存设备,然后将任何磁盘连接到它(使用上面的命令):

# make-bcache -C CACHE_DEV

相关内容