如果未安装分区,为什么系统会使用该分区?


12

在遇到VM的性能问题后,我一直在将系统从btrfs迁移到ext4。我的笔记本电脑中有两个硬盘驱动器。我已经成功移动了我的主分区,但是我使用的相同步骤不适用于root用户。

到目前为止的进展:

我已经dd“从D我的根分区/dev/sda3/dev/sdb3。我修改/etc/fstab为以下内容:

$ cat /etc/fstab
# 
# /etc/fstab: static file system information
#
# <file system> <dir>   <type>  <options>       <dump>  <pass>
# UUID=95f13c34-96ca-49e3-bcb2-ff594df31506
/dev/sdb3               /               btrfs           rw,noatime,ssd,space_cache,discard      0 0

# UUID=0fe04f59-599f-41e2-ac30-2ad0f17a9727
/dev/sda2               /boot           ext2            rw,relatime     0 2

# UUID=44741e0f-924a-4841-80ef-2132bef84182
/dev/sda4               /home           ext4            rw,noatime,discard      0 0

然后跑sudo mkinitcpio -p linux。它似乎有效。我可以通过在第二张磁盘上安装分区来启动。df显示:

$ df
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb3        28G   18G  9.8G  65% /

因此,显然sdb3是安装了,而不是sda3。这是一个有问题的步骤:当我尝试格式化sda3应该是未使用的时,得到以下信息:

$ sudo mkfs.ext4 /dev/sda3
[sudo] password for stew: 
mke2fs 1.42.11 (09-Jul-2014)
/dev/sda3 contains a btrfs file system
Proceed anyway? (y,n) y
/dev/sda3 is apparently in use by the system; will not make a filesystem here!

sda3正在使用中。它可能如何以及为什么会被使用?

根据casey的评论,mount的输出:

mount | grep sd
/dev/sdb3 on / type btrfs (rw,noatime,ssd,discard,space_cache)
/dev/sda4 on /home type ext4 (rw,noatime,discard,data=ordered)
/dev/sda2 on /boot type ext2 (rw,relatime)

根据Warwick的评论,正在卸载:

$ sudo umount /dev/sda3
umount: /dev/sda3: not mounted

在其他地方挂载和卸载sda3可以成功进行,但是什么也没做。

更新:更多可疑行为:

$ mount | grep sd
/dev/sdb3 on / type btrfs (rw,noatime,ssd,discard,space_cache)
/dev/sda4 on /home type ext4 (rw,noatime,discard,data=ordered)
/dev/sda2 on /boot type ext2 (rw,relatime)
$ sudo mount /dev/sda3 mnt
[sudo] password for stew: 
$ mount | grep sd
/dev/sda3 on / type btrfs (rw,noatime,ssd,discard,space_cache)
/dev/sda4 on /home type ext4 (rw,noatime,discard,data=ordered)
/dev/sda2 on /boot type ext2 (rw,relatime)
/dev/sda3 on /home/stew/mnt type btrfs (rw,relatime,ssd,discard,space_cache)

挂载sda3之后,sdb3不再是挂载程序。奇怪吧?

根据mikeserv:

$ rmmod btrfs
rmmod: ERROR: Module btrfs is in use

这是非常可预期的,因为sdb3是btrfs,应该挂载到root。从我的mkinitcpio.conf文件:

MODULES=""
HOOKS="base udev autodetect modconf block filesystems keyboard fsck"

尝试安装它,然后卸下它。可能在某个位置设置了一个标志,使其认为未挂载它。如果在安装时出错,则希望它告诉您它认为已安装在的安装点。
沃里克

从initramfs中获取btrfs内核模块/挂钩。拱门有几个。否则,将其列入黑名单或将其列入wipefs磁盘以删除超级块..... rmmod您可以采取很多方法,但是它们可能全部归因于您没有加载或卸载模块。
mikeserv

1
也许一些其它程序具有的/ dev / sda3的打开
programmerjake

1
您确实应该在现场环境中进行此操作……
jasonwryan 2014年

@case完成。的/ dev / sdb3清楚地安装
stewSquared

Answers:


5

我想到了。我的引导程序未正确配置。听起来很明显,对不对?修改fstab并不能完全等同于配置引导程序。我必须更改一行/boot/syslinux/syslinux.cgf以引用正确的引导分区。

就是说,无需首先从第二个磁盘启动。我本可以通过在实时环境中完成整个过程并尝试运行来避免此问题mkinitcpio


2
因此,您启动了sda3,然后将sdb3安装在其上方/上方,这覆盖了mtab条目,因此mount命令输出未显示sda3的迹象。
凯尔·琼斯

@KyleJones是的。总结一下。
stewSquared
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.