![systemd 无法挂载分区](https://linux22.com/image/1433476/systemd%20%E6%97%A0%E6%B3%95%E6%8C%82%E8%BD%BD%E5%88%86%E5%8C%BA.png)
我在工作时使用 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”。
希望它能有所帮助