web-dev-qa-db-ja.com

archlinuxの起動時にaufsファイルシステムをマウントする方法は?

Aufsを使用していくつかのディスクを結合したいのですが、コマンドラインからmountコマンドを使用してaufsファイルシステムをマウントできます。

ただし、fstabエントリを介して同じものをマウントしようとすると、失敗します。 Googleによると、fstabは指定された順序でファイルシステムをマウントしないため、この問題が発生します。また、マウントコマンドをrc.localに追加して、fstabの後にaufsがマウントされるようにするための推奨事項も見つけました。

Systemdを使用するarchlinuxを使用していますが、systemdの起動時にmountコマンドを実行するにはどうすればよいですか?

3
Nithin

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

次に、systemdに対してsystemctl daemon-reloadを実行して、ユニットをロードします。 systemctl start mnt-backup.mountを実行してディスクをマウントしたり、systemctl enable mnt-backup.mountを実行して起動時に開始したりできます。

依存関係については、Requires = some-other-mnt-point.mountセクションの下に[Unit]を追加します。オプションで、BindToではなくRequiresを使用できます。これにより、依存関係の1つがなくなると、マウントが解除されます。ただし、Requiresは、ディスクがマウントされる順序には影響しません。したがって、ディスクがaufsの前にマウントされていることを確認するには、Afterを使用します。

編集:RequiresAfterの使用を拡張するには、ユニットセクションは次のようになります。

[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
8
David Baggerman

私のような他の人のために、ステップバイステップの説明を投稿すると思いました。ここに到達するのを手伝ってくれた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

次に、systemdに対してsystemctl daemon-reloadを実行して、ユニットをロードしました。 systemctl start mnt-aufs.mountを実行してディスクをマウントするか、systemctl enable mnt-aufs.mountを実行して起動時に開始します。

これは、以下を/etc/rc.local initスクリプトにコピーして貼り付けるのと同じであり、はるかに簡単でした。 systemdに同等のファイルがないのはなぜだろうか。

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

Fstabを使い続けたい場合は、オプションに_netdevを追加してみてください。

none   /mnt/aufs   aufs  sum,create=mfs,dirs=.....,_netdev   0  0

これにより、ネットワークが起動するまでマウントが遅延します。

1
DaneeL

/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
0
stackexchanger

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
0
David C. Bishop