在遇到虚拟机性能问题后,我一直将系统从 btrfs 迁移到 ext4。我的笔记本电脑中有两个硬盘可供使用。我已成功移动我的主分区,但我使用的相同步骤不适用于 root。
到目前为止的进展:
我已将dd
我的根分区/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
是 Mounted,而不是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
正在使用中。它如何以及为何被使用?
根据凯西的评论,安装的输出:
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 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 不再是挂载程序。很奇怪吧?
根据迈克服务:
$ rmmod btrfs
rmmod: ERROR: Module btrfs is in use
这是非常值得期待的,因为 sdb3 是 btrfs 并且应该安装到 root。从我的 mkinitcpio.conf 文件:
MODULES=""
HOOKS="base udev autodetect modconf block filesystems keyboard fsck"
答案1
我想到了。我的引导加载程序配置不正确。听起来很明显,对吧?修改 fstab 并不完全等同于配置引导加载程序。我必须更改一行/boot/syslinux/syslinux.cgf
以引用正确的引导分区。
也就是说,一开始就不需要启动第二个磁盘。我本可以通过在实时环境中完成整个过程并 chroot 来运行来避免这个问题mkinitcpio
。