サイレントインストール(および再インストール)systemd

サイレントインストール(および再インストール)systemd

fstabにCIFSマウントがあり、ネットワークまたはリモートサーバーに問題が発生し、回復できない限りうまく機能します。障害が発生したときに共有が自動的に再マウントされることを望んでいますが、私が知っている限り、fstabはこの機能をサポートしていません。

今私がしたことはそれをautofsマウントに移動することで、公正に言うとうまくいきますが、常にautofsマウントがfstabに比べて少し遅いことがわかりました(コマンドラインで直感的に感じただけです)。他のソリューションの経験がある人はいますか?

答え1

再インストール中の既存のインストールでは、/etc/fstab次の方法を使用して強制的に再インストールできます。

$ sudo mount -a -t cifs

すべてman mount:

   -t, --types vfstype
   [...]

   More than one type may be specified in a comma  separated  list.
   The  list of filesystem types can be prefixed with no to specify
   the filesystem types on which no action should be taken.   (This
   can be meaningful with the -a option.) For example, the command:

            mount -a -t nomsdos,ext

mount -a -t cifsその後、スケジュールされた時間に従ってコマンドを実行するシェルスクリプトをチェックインするか、inotify別の方法を使用してインストールの状態を確認し、インストールが失敗したことが検出された場合は、上記のmount ..コマンドを実行できます。 。

答え2

サイレントインストール(および再インストール)systemd

この例では、私たちの持分は「大容量記憶負荷

systemd(ほとんどのチュートリアルでは扱わないファイルパスとユニットファイルエスケープをよく説明するためです)

  1. マウントポイントを作成します。
    sudo mkdir -p "/mnt/Loads o' Big-Storage"
    sudo chown -R "$(whoami)":"$(whoami)" "/mnt/Loads o' Big-Storage"
    
  2. systemd-escape --pathファイル名の作成に使用されます.mount
    my_systemd_mountfile="$(
        systemd-escape --path "/mnt/Loads o' Big-Storage"
    )"
    echo "${my_systemd_mountfile}"
    
    mnt-Loads\x20o\x27\x20Big\x2dStorage
    
  3. /etc/system/system/次のコマンドを使用してファイルを作成します。言葉ファイルパスの内容(エスケープなし)
    sudo vim "/etc/system/system/${my_systemd_mountfile}.mount"
    
    [Unit]
    Description=My CIFs Media Mounter
    Requires=network-online.target
    After=network-online.service
    
    [Mount]
    What=//192.168.2.200/Loads o' Big-Storage
    Where=/mnt/Loads o' Big-Storage
    Options=username=foo-user,password=foo-secret
    Type=cifs
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
  4. その.automountファイルを作成します。
    sudo vim "/etc/system/system/${my_systemd_mountfile}.automount"
    
    [Unit]
    Description=My CIFs Media Automounter
    
    [Automount]
    Where=/mnt/Loads o' Big-Storage
    
    [Install]
    WantedBy=multi-user.target
    
  5. サービスをロードして有効にします。
    sudo systemctl daemon-reload
    sudo systemctl enable "${my_systemd_mountfile}".automount
    sudo systemctl start "${my_systemd_mountfile}".automount
    

トラブルシューティング

問題が発生した場合は、journalctl自己紹介よりも優れたログ情報がありますsystemd status

sudo journalctl -xe "${my_systemd_mountfile}".mount

関連情報