Nit*_*hin 5 linux arch-linux fstab systemd
我想使用aufs来组合几个磁盘。我可以使用命令行中的mount命令挂载aufs文件系统。
但是,当尝试通过 fstab 条目挂载它时,它失败了。Google 告诉我 fstab 没有按照指定的顺序挂载文件系统,从而产生了这个问题。我还发现了在 rc.local 中添加 mount 命令的建议,以便在 fstab 之后挂载 aufs。
我正在使用使用 systemd 的 archlinux,那么如何在 systemd 中启动时运行 mount 命令?
Nit*_*hin 11
以为我会为像我这样的其他人发布分步说明。感谢 David Baggerman 帮助我到达这里。
我已经创建了/etc/systemd/system/mnt-aufs.mount,具有以下内容:
[Unit]
Description = AUFS disk
Requires = mnt-data01.mount
Requires = mnt-data02.mount
Requires = mnt-data03.mount
After = mnt-data01.mount
After = mnt-data02.mount
After = mnt-data03.mount
[Mount]
What = none
Where = /mnt/aufs
Type = aufs
Options = br:/mnt/data01/=rw:/mnt/data02/=rw:/mnt/data03/=rw,sum,create=mfs
[Install]
WantedBy = multi-user.target
Run Code Online (Sandbox Code Playgroud)
然后我运行systemctl daemon-reloadsystemd 来加载该单元。运行systemctl start mnt-aufs.mount以挂载磁盘,和/或systemctl enable mnt-aufs.mount让它在启动时启动。
这相当于将以下内容复制粘贴到/etc/rc.localinit 脚本中,并且会容易得多。我想知道为什么 systemd 没有等效文件。
mount -t aufs -o br:/mnt/disk01=rw:/mnt/disk02=rw: /mnt/disk03=rw,sum,create=mfs none /mnt/aufs
Run Code Online (Sandbox Code Playgroud)
Dav*_*man 10
Systemd 对挂载 ( man systemd.mount)具有本机支持。实际上 systemd 读取/etc/fstab,使用它来生成挂载单元,并挂载文件系统本身。
除了依赖于fstab,还可以手动创建安装单元。这是系统的坐骑怎么样/dev,/sys,/proc,等被处理(/usr/lib/systemd/system/*.mount)。此方法允许您使用 systemd 依赖项来确保以正确的顺序挂载内容。
systemd 挂载单元文件必须以其控制的挂载点命名 ( man systemd.unit)。例如,我创建了一个单元文件来将我的 USB 备份驱动器挂载到/mnt/backup. 按照命名约定,我创建了/etc/systemd/system/mnt-backup.mount,内容如下:
[Unit]
Description = USB backup disk
[Mount]
What = LABEL=david-usb-backup
Where = /mnt/backup
Type = ext4
[Install]
WantedBy = multi-user.target
Run Code Online (Sandbox Code Playgroud)
然后我运行systemctl daemon-reloadsystemd 来加载该单元。我可以运行systemctl start mnt-backup.mount来挂载磁盘,和/或systemctl enable mnt-backup.mount让它在启动时启动。
对于依赖项,Requires = some-other-mnt-point.mount在该[Unit]部分下添加。或者,您可以使用BindTo而不是Requires; 如果依赖项之一消失,这将导致它被卸载。但是Requires不影响磁盘的安装顺序。因此,要确保在 aufs 之前安装磁盘,请使用After.
编辑:为了扩大对使用Requires和After,单位部分可能类似于:
[Unit]
Description = USB backup disk
Requires = mnt-data01.mount
Requires = mnt-data02.mount
Requires = mnt-data03.mount
After = mnt-data01.mount
After = mnt-data02.mount
After = mnt-data03.mount
Run Code Online (Sandbox Code Playgroud)