什么是systemd-analyze中的dev-sda.device,可以禁用它吗?

我的笔记本电脑上安装了Ubuntu 16.04和Windows。 在systemd-analyze blame一项名为’dev-sda7.device’的服务花费了太多时间。 如何解决此问题或应该禁用它?

systemd-analyze time结果

 Startup finished in 4.207s (firmware) + 4.576s (loader) + 3.466s (kernel) + 33.899s (userspace) = 46.149s 

systemd-analyze blame结果

  16.326s dev-sda7.device 12.859s ufw.service 11.263s systemd-tmpfiles-setup-dev.service 7.935s NetworkManager-wait-online.service 3.203s keyboard-setup.service 2.736s vboxdrv.service 2.467s accounts-daemon.service 2.349s apache2.service 2.239s NetworkManager.service 2.163s ModemManager.service 1.963s lightdm.service 1.843s nmbd.service 1.749s samba-ad-dc.service 1.599s systemd-fsck@dev-disk-by\x2duuid-B053\x2dA56B.service 1.367s thermald.service 1.127s polkitd.service 1.112s systemd-journald.service 1.066s teamviewerd.service 1.007s udisks2.service 975ms apparmor.service 926ms plymouth-start.service 

cat /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). # #       # / was on /dev/sda7 during installation UUID=493cc833-193e-435d-840a-b862ca367fba / ext4 errors=remount-ro 0 1 # /boot/efi was on /dev/sda2 during installation UUID=B053-A56B /boot/efi vfat umask=0077 0 1 # swap was on /dev/sda6 during installation UUID=a49f56b1-53c3-4eaf-9460-0a221e59957a none swap sw 0 0 

您无法禁用它,因为/dev/sda7是挂载根分区的位置。 在systemd中,它在启动时可以处理的所有内容都被制成一个systemd单元。 然后你就可以用它来做事情(比如在这种情况下跟踪时间,或者依赖它来获取服务)。 在设备的情况下,链是这样的:

  • 内核加载设备并激活它
  • systemd /dev/sdxy它并为其创建/dev/sdxy节点
  • 然后systemd激活从fstab生成的各种安装单元
  • 然后触发各种其他服务,等待安装文件系统
  • 等等

这确实允许您识别磁盘激活缓慢,但除非您可以获得新磁盘,否则您无法做到这一点。

您可以尝试分析关键路径并查看是否还有其他任何可以解决的问题:

 systemd-analyze critical-chain [UNIT...] prints a tree of the time-critical chain of units (for each of the specified UNITs or for the default target otherwise). The time after the unit is active or started is printed after the "@" character. The time the unit takes to start is printed after the "+" character. Note that the output might be misleading as the initialization of one service might depend on socket activation and because of the parallel execution of units. 

例:

 graphical.target @10.868s └─multi-user.target @10.868s └─squid-deb-proxy.service @10.816s +51ms └─network-online.target @10.814s └─NetworkManager-wait-online.service @2.419s +8.395s └─NetworkManager.service @2.243s +155ms └─dbus.service @2.192s └─basic.target @2.129s └─sockets.target @2.129s └─snapd.socket @2.127s +1ms └─sysinit.target @2.127s └─swap.target @2.127s └─dev-disk-by\x2duuid-498d24e5\x2d7755\x2d422f\x2dbe45\x2d1b78d50b44e8.swap @2.119s +7ms └─dev-disk-by\x2duuid-498d24e5\x2d7755\x2d422f\x2dbe45\x2d1b78d50b44e8.device @2.119s 

例如,在我的情况下,网络正在减慢启动速度。