systemd 无法挂载分区

systemd 无法挂载分区

我在工作时使用 ssh 隧道浏览互联网。昨天我意识到我的终端响应命令非常慢,我检查了 htop、iotop、netop,没有发现任何特别的问题,只有控制台很慢,隧道工作正常。

回到家后,我尝试登录我的 X 会话,按下 Enter 键后,计算机挂起 5 分钟。

我决定重新启动,并进入 systemd 紧急模式。

查看 journalctl(此处粘贴)我尝试了一些方法,其中包括在我的 /etc/fstab 中注释一些分区/设备。

碰巧的是,当我注释我的 /home 时,我可以正常登录。这是我的 /etc/fstab:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda5 during installation
UUID=f0e6eea4-264d-42f2-97c1-0ad6d60e9e76 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda6 during installation
#UUID=d464c414-6e10-4fb1-adaf-43096cf52ab5 none            swap    sw              0       0
# changed home on new partition
#UUID=83192ee9-fd8a-4d8c-9988-bca2d0fdf630   /home   ext4   nodev,nosuid   0   2
#/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
#/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
#/dev/md0   /media/raid5   ext4   defaults   0   0

#UUID=ea59484a-3652-4d1d-a398-f417cbd0ae7c   /media/backup   ext4   defaults   0   0

# for virtualbox, changed on june 5th
#none   /proc/bus/usb   usbfs   devgid=126,devmode=664   0   0

# for sftp in chroot
#/media/raid5/TV\040SHOWS/   /home/quest/tv/      ext4   bind,ro      0   0
#/media/raid5/MOVIES/      /home/quest/movies/   ext4   bind,ro      0   0
#/media/raid5/ANIME/      /home/quest/anime/   ext4   bind,ro      0   0

#garmin fenix 2
#UUID=489A-9E97         /media/raid5/fenix2   vfat   defaults,user,noauto,errors=remount-ro   0   1

因此,我尝试更好地了解可能发生的情况,并决定查看 uuid 是否不匹配(我看到一些帖子讨论这个问题),但不幸的是 uuid 确实匹配。查看 blkid 输出:

/dev/sdc1: UUID="e7c87d29-37d0-d6b4-9a33-6d4f0e239a13" UUID_SUB="4cc4d747-5c88-9bc6-59c1-5f29603fba57" LABEL="bigbenn:0" TYPE="linux_raid_member" PARTLABEL="Linux filesystem" PARTUUID="af78f725-7354-448b-a3f7-9149937d440c"
/dev/sdb1: UUID="83192ee9-fd8a-4d8c-9988-bca2d0fdf630" TYPE="ext4" PARTUUID="8aaed40e-01"
/dev/sdb5: UUID="f0e6eea4-264d-42f2-97c1-0ad6d60e9e76" TYPE="ext4" PARTUUID="8aaed40e-05"
/dev/sdb6: UUID="d464c414-6e10-4fb1-adaf-43096cf52ab5" TYPE="swap" PARTUUID="8aaed40e-06"
/dev/sde1: UUID="ea59484a-3652-4d1d-a398-f417cbd0ae7c" TYPE="ext4" PARTUUID="1433120b-01"
/dev/sdf1: UUID="e7c87d29-37d0-d6b4-9a33-6d4f0e239a13" UUID_SUB="69383fe0-2113-a305-87fe-51057bfdd681" LABEL="bigbenn:0" TYPE="linux_raid_member" PARTUUID="873db73f-01"
/dev/sda1: UUID="e7c87d29-37d0-d6b4-9a33-6d4f0e239a13" UUID_SUB="cfdfaca9-f350-3c3a-a6a7-75a9844e9660" LABEL="bigbenn:0" TYPE="linux_raid_member" PARTUUID="4483559b-01"
/dev/sdd1: UUID="e7c87d29-37d0-d6b4-9a33-6d4f0e239a13" UUID_SUB="efb1db76-0169-ee95-ba36-d64adf36de65" LABEL="bigbenn:0" TYPE="linux_raid_member" PARTUUID="092c2257-01"
/dev/sdg1: UUID="e7c87d29-37d0-d6b4-9a33-6d4f0e239a13" UUID_SUB="c6dc6576-3d94-e0e9-77b8-abb62563277d" LABEL="bigbenn:0" TYPE="linux_raid_member" PARTUUID="000d77f7-01"
/dev/md0: UUID="0a0dc09a-0714-4fed-99e2-31a08b753373" TYPE="ext4"

现在我很茫然,我也尝试对 /home 所在的磁盘进行智能控制,看起来很正常(测试通过)但我不确定,因为最后有错误......这是 smartctl

答案1

你遇到了一个奇怪的情况,udev 似乎直到 systemd 完成才开始挂载分区,但是当 /etc/fstab 中提到此类分区时,就会出现问题:在这种情况下,udev 会等待 systemd 完成(这会导致超时),并且只有然后它挂载了该分区。

我完全不知道这是怎么发生的。但我知道你可以通过创建一个新服务来解决问题:创建一个文件/etc/systemd/system/mounthome.service在其中放置以下代码:

 [Unit]
 Description=Mount Home
 DefaultDependencies=no

 [Service]
 Type=oneshot
 RemainAfterExit=yes
 ExecStart=/bin/mount /dev/sdb1

现在添加到文件/usr/lib/systemd/system/systemd-udev-trigger.service下面这行,

 Wants=systemd-udevd.service mounthome.service

如下所示:

  [Unit]
  Description=udev Coldplug all Devices
  Documentation=man:udev(7) man:systemd-udevd.service(8)
  DefaultDependencies=no
  Wants=systemd-udevd.service mounthome.service
  After=systemd-udevd-kernel.socket systemd-udevd-control.socket
  Before=sysinit.target
  ConditionCapability=CAP_MKNOD

  [Service]
  Type=oneshot
  RemainAfterExit=yes
  ExecStart=/usr/bin/udevadm trigger --type=subsystems --action=add ; /usr/bin/udevadm trigger

我相信这会解决你的问题。

答案2

nodev 代表“不解释文件系统上的块特殊设备”
尝试将参数从 nodev 和 nosuid 更改为“默认值”
如果这不起作用,请尝试将驱动器的安装点更改为不同于 home 的位置,比如说创建目录 home2,并将其安装在那里,然后发出:“sudo ln -s /home2 /home”。
希望它能有所帮助

相关内容