aufsを使って複数のディスクを結合したいです。コマンドラインから mount コマンドを使用して aufs ファイルシステムをマウントできます。
ただし、fstabエントリを介して同じファイルをインストールしようとすると失敗します。 Googleは、fstabが指定された順序でファイルシステムをマウントしないため、問題が発生したと述べました。また、 aufs が fstab の後にマウントされるように、rc.local にマウントコマンドを追加するよう提案しています。
私はsystemdを使用するArchlinuxを使用していますが、systemdで起動時にmountコマンドをどのように実行できますか?
答え1
私のような人のためにステップバイステップの指示を投稿する必要があると思いました。私がここに来るのを手伝ってくれたDavid Bagmanに感謝します。
/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
答え2
Systemdはmount()をデフォルトでサポートしていますman systemd.mount
。実際、systemdはそれを読み取り、/etc/fstab
それを使用してインストールユニットを作成し、ファイルシステム自体をマウントします。
fstab
依存関係の代わりにインストールユニットを手動で作成することも可能です。 、など/dev
の/sys
システムインストールが処理される方法です()。この方法では、システムの依存関係を使用して、エントリが正しい順序でインストールされていることを確認できます。/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
次に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
。
Requires
編集:sumの使用を拡張するには、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