如何在 archlinux 启动时挂载 aufs 文件系统?

如何在 archlinux 启动时挂载 aufs 文件系统?

我想使用 aufs 来组合几个磁盘。我可以使用命令行中的 mount 命令来挂载 aufs 文件系统。

但是,当尝试通过 fstab 条目安装相同的文件时,它会失败。 Google 告诉我 fstab 没有按照指定的顺序挂载文件系统,从而产生了这个问题。我还发现了在 rc.local 中添加 mount 命令的建议,以便 aufs 在 fstab 之后挂载。

我使用的是archlinux,它使用systemd,那么如何在systemd中启动时运行mount命令?

答案1

我想我会为像我这样的人发布一步一步的说明。感谢大卫·巴格曼帮助我到达这里。

我创建了/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

然后我运行systemctl daemon-reloadsystemd 来加载该单元。运行systemctl start mnt-aufs.mount以安装磁盘,和/或systemctl enable mnt-aufs.mount使其在引导时启动。

这相当于将以下内容复制粘贴到/etc/rc.local初始化脚本中,并且会容易得多。我想知道为什么 systemd 没有等效的文件。

mount -t aufs -o br:/mnt/disk01=rw:/mnt/disk02=rw: /mnt/disk03=rw,sum,create=mfs none /mnt/aufs

答案2

Systemd 对挂载 ( ) 具有本机支持man systemd.mount。事实上,systemd 读取/etc/fstab,使用它来生成安装单元,并安装文件系统本身。

fstab也可以手动创建安装单元,而不是依赖。这就是处理/dev/sys、等系统安装的方式 ( )。此方法允许您使用 systemd 依赖项来确保以正确的顺序安装事物。/proc/usr/lib/systemd/system/*.mount

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

然后我运行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

答案3

较新版本的 systemd 支持 fstab 中的 x-systemd.requires 选项,因此如果您不想使用 systemd.mount 单位并希望坚持使用 fstab,请尝试以下操作:

aufs /mnt/storage aufs ro,nobootwait,dirs=/mnt/storage2=ro:/mnt/storage1=ro:/mnt/storage3=ro:/mnt/storage4=ro:/mnt/storage0=ro:/mnt/storage5=ro:/mnt/storage6=ro:/mnt/storage7=ro:/mnt/storage8,xino=/dev/shm/aufs.xino,x-systemd.requires=mnt-storage0,x-systemd.requires=mnt-storage1,x-systemd.requires=mnt-storage2,x-systemd.requires=mnt-storage3,x-systemd.requires=mnt-storage4,x-systemd.requires=mnt-storage5,x-systemd.requires=mnt-storage6,x-systemd.requires=mnt-storage7,x-systemd.requires=mnt-storage8  0 0

答案4

你最好使用/etc/rc.local

试试这个例子:

# cat > /etc/rc.local << EOF
mount -t squashfs -o loop /usr/src/system_packages.squashfs /var/mount_point/
mount -t aufs -o remount,append:/var/mount_point/ none / 
EOF

相关内容