我的驱动器使用 LVM 并且经过 LUKS 加密 (EFI)。我试图进入我的驱动器,但在输入 LUKS 加密的密码后,它挂起。
我最近需要向我的根逻辑卷添加更多内存。所以,一开始我删除了交换文件,减少了日志文件,并删除了 Pacman 一直在使用的大量缓存(我使用的是 Arch Linux)。这样做之后,我意识到,由于我使用的是 LVM,所以我可以减少我的主逻辑卷中的内存量并将剩余内存用于我的根分区,因此我执行了以下命令(根据我的回忆;仅供参考)我的物理卷中只有两个逻辑卷):
lvresize -L-20G /dev/mapper/volgroup0-lv_home
lvresize -L+20G /dev/mapper/volgroup0-lv_root
resize2fs /dev/mapper/volgroup0-lv_root
可能出现问题的一件事是我不确定我的根逻辑卷是什么文件系统,而且我(不幸的是)不知道resize2fs
它专门用于 ext3/ext4 文件系统。我所知道的是,在使用 lv 命令调整大小后,在查看df -h
.
一切都很顺利,直到我关闭机器并尝试启动它。输入密码访问 LUKS 加密驱动器后,出现以下错误:
[FAILED] Failed to activate swap /swapfile.
[DEPEND] Dependency failed for Swaps.
并且该错误消息会重复出现。所以,然后我得到了一个活动磁盘,安装了驱动器,然后尝试创建交换文件。这些是我使用的命令:
cryptsetup luksOpen /dev/sda3 home
mount /dev/mapper/volgroup0-lv_root /mnt
cd /mnt
dd if=/dev/zero of=/mnt/swapfile bs=1M count=2048 status=progress
chmod 600 /mnt/swapfile
mkswap /mnt/swapfile
swapon /mnt/swapfile
执行此操作后,我能够登录且没有错误消息,但它会挂在登录屏幕上,并且计算机没有显示它正在处理任何内容(我在该屏幕上等待了 10 分钟,没有任何反应)。基本上与我之前尝试登录时发生的情况相同,没有错误消息。
[编辑] 删除 fstab 文件中的行并从目录中删除交换文件后。我认为这个问题与交换文件没有任何关系。无论如何,在输入 LUKS 加密密码后,我无法登录我的驱动器。任何帮助仍然将不胜感激。我很乐意提供更多详细信息。
[编辑2]
您是否将 /home 文件系统的备份安全地存储在其他地方?
不,不幸的是
请显示您的 /etc/fstab (通过以 root 身份登录,或从活动磁盘启动,然后访问根文件系统,就像重新创建交换文件一样;然后您会发现它为 /mnt/etc/fstab )。这应该标识 /dev/mapper/volgroup0-lv_home LV 上使用的文件系统类型。
看起来两个 volgroup 都是 ext4。
您还可以尝试挂载 yout /home 文件系统以查看显示的错误消息(如果有),如果挂载尝试成功,还可以尝试备份任何重要文件。
当我尝试以下命令“mount /dev/mapper/volgroup0-lv_home homey”(homey 是我创建的目录)时,出现以下错误:
mount: /root/homey: wrong fs type, bad option, bad superblock on /dev/mapper/volgroup0-lv_home, missing codepage or helper program, or other error
答案1
不幸的是,问题很可能是您列出的第一个命令:
lvresize -L-20G /dev/mapper/volgroup0-lv_home
如果没有该-r
选项,该命令将仅收缩逻辑卷,并假设其中的文件系统已经适当收缩。您没有提及您正在使用哪种文件系统类型,但许多文件系统仅在卸载文件系统时才允许收缩,而有些文件系统(例如 XFS)根本不允许收缩。
因此,除非您的记忆遗漏了一些主要步骤,否则您很可能/home
通过粗暴地从尾部砍掉 20G 来损坏您的文件系统。这很可能也是您在尝试登录之前在启动时明显没有看到任何错误的原因。
可能出现问题的一件事是我不确定我的根逻辑卷是什么文件系统,而且我(不幸的是)不知道
resize2fs
它专门用于 ext3/ext4 文件系统。我所知道的是,在使用 lv 命令调整大小后,在查看df -h
.
如果您尝试resize2fs
在不是有效的文件系统上使用ext2
,它将显示一条错误消息并且不会执行任何其他操作。所以看起来那部分工作得很好,或者至少没有造成任何损坏。3
4
看来您也正确地重新生成了您之前删除的交换文件。 (旁注:您应该swapoff
在删除交换文件之前使用,但这不再重要,因为系统已经重新启动。)
为了规划后续步骤,您应该编辑问题以添加以下信息:
您是否将文件系统的备份
/home
安全地存储在其他地方?请显示您的
/etc/fstab
(通过以 root 身份登录,或从活动磁盘启动,然后访问根文件系统,就像重新创建交换文件一样;您会像/mnt/etc/fstab
那时一样找到它)。这应该可以识别 LV 上使用的文件系统类型/dev/mapper/volgroup0-lv_home
。您还可以尝试挂载文件
/home
系统以查看显示的错误消息(如果有),如果挂载尝试成功,还可以尝试备份任何重要文件。
如果您的文件系统类型lv_home
是可收缩的,并且文件系统的截断部分实际上不包含任何数据,那么这种情况可能是可以修复的。您可能必须暂时伪造丢失的 20 G,以lv_home
允许文件系统收缩工具正常工作,例如使用稀疏文件作为伪造的 LVM PV,但让我们首先检查基本事实。