シャットダウン前にsystemdを使用してネットワークドライブをマウント解除する

シャットダウン前にsystemdを使用してネットワークドライブをマウント解除する

システムのシャットダウンにはかなり時間がかかり(Debian 8.1を使用しています)、システムをシャットダウンする前にネットワークドライブをアンマウントすると問題を解決できることがわかりました。すべてのドライブがマウント解除される前にネットワーク接続が失われたようです。

これを自動化するためにsystemdサービスを作成しようとしましたが、うまくいきませんでした。つまり、時々削除されていないようで、終了プロセスにはまだ長い時間がかかりました。私のアプローチは以下からインスピレーションを受けました。この質問に対する答えそして、systemd.serviceのマニュアルページを参照してください。

[unit]
description=Unmount network drives on shutdown
Before=shutdown.target reboot.target halt.target network.target

[Service]
type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/bin/sh umount /media/networkdrive1 /media/networkdrive2

[Install]
WantedBy=multi-user.target

編集する

ネットワークドライブは、次の行を使用して/etc/fstabにマウントされます。

//192.168.1.5/networkdrive1 /media/nw1 cifs _netdev,uid=myuser,credentials=/home/myuser/.credfile
//192.168.1.5/networkdrive2 /media/nw2 cifs _netdev,uid=myuser,credentials=/home/myuser/.credfile

答え1

3日間の検索とテストの最後に、Debian-Jessie、Linux Mint、i386(32ビット)インストールのための機能的なソリューションを開発しました。最初にアンマウントしないと、シャットダウンまたは再起動時に120秒間中断されるネットワークCIFS共有があります。このスクリプトを使用すると、再起動またはシャットダウンする前に共有を手動でアンマウントする必要がなくなります。

シャットダウンおよび再起動時に実行される自動cifs umountスクリプト

  • 次のスクリプトを作成します/etc/init.d/aaaumount (スクリプトは数字とアルファベット順で実行されるため、aaa最初に実行されます)。

    #!/bin/sh
    
    #
    # aaaumount initscript
    #
    ### BEGIN INIT INFO
    # Provides:          aaaumount
    # Required-Start:    $local_fs $remote_fs
    # Required-Stop:     $remote_fs
    # Default-Start:     S
    # Default-Stop:      0 1 6
    # Short-Description: umounts cifs shares
    # Description:       This script unmounts cifs shares
    ### END INIT INFO
    
    case "$1" in
     stop)
                umount -t cifs -af
    esac
    
  • 実行可能にする:

    sudo chmod 755 /etc/init.d/aaaumount
    
  • /lib/systemd/system/ でサービスへのシンボリックリンクを作成します。

    cd /lib/systemd/system/
    sudo ln -s /dev/null aaaumount.service
    
  • /etc/rc0.d/etc/rc6.d0および6終了/再開ランレベル)にシンボリックリンクを作成します。

    sudo ln -s /etc/init.d/aaaumount /etc/rc0.d/K01aaaumount 
    sudo ln -s /etc/init.d/aaaumount /etc/rc6.d/K01aaaumount 
    
  • 有効にしてください:

    sudo systemctl enable aaaumount.service
    

答え2

_netdevからリモートファイルシステムにマウントオプションを追加します/etc/fstab。これにより、systemctl daemon-reloadネットワークインストールが依存remote-fs.target関係を確認する必要がありますsystemctl list-dependencies remote-fs.target。これらのファイルシステムは、ネットワークがシャットダウンされる前にマウント解除されます。

答え3

いくつかの試行錯誤の後、私はwpa_supplicant.serviceUbuntu 16.04でWi-Fiを使用するために必要なシステムが実際にsystemdによって管理されていないことを発見しました(そしてsystemdデバイスは「無効になっています」)。 DBus経由で起動しているようです。まだなぜなのかわかりませんが、消えました。今後 network-online.targetそしてnetwork.target

最後に、ドライブが正しくマウント解除されていることを確認するために、ドライブをAfter=graphical.targetマウントデバイスに追加しました。これを行うには、次のようにx-systemd.requires=graphical.targetファイルにオプションを追加します。/etc/fstab

6.5より前のバージョンでは、それ以外のものmount.cifsで始まるオプションを無視するには、ユーティリティ(私の場合)をインストールする必要があります。x-mount.cifs

関連情報