📂

Synology NASでリモートフォルダマウントの再接続自動化

2024/11/09に公開

はじめに

Synology NAS(記事執筆時、DSM7.2.2)にはリモートフォルダ(CIFSまたはNFS共有フォルダ)をローカルにマウントする機能がFile Stationにあります。
しかし共有サーバー側で何かしらのトラブルが発生し、フォルダの接続が切断してしまった場合、自動で復旧する機能はなく、File Stationのマウントリストから再接続の操作をしなければ復旧しません。
この記事では問題を解決すべく、タスクによる接続チェックと再接続の自動化の設定を説明します。

/etc/fstabへの登録

リモートフォルダをFile Stationのマウントリストからアンマウントし、fstabへ登録します。

例:SBMの場合

/etc/fstabt
\\xxx.xxx.xxx.xxx\share /volumeN/mountpoint
 cifs username=usr,password=pwd,iocharset=utf8,vers=3.0.2 0 0

※vers=でSMBのバージョンを指定しなければmount errorになります。

マウントポイントの再接続を行うシェルスクリプトの作成

mount.sh
#!/bin/bash

# マウントポイントを定義
MOUNT_POINT="/volumeN/mountpoint"

# マウントポイントがマウントされているかどうかを確認
if mount | grep "on ${MOUNT_POINT} type" > /dev/null; then
    echo "${MOUNT_POINT} is already mounted."

    # アクセステスト
    if ls ${MOUNT_POINT} > /dev/null 2>&1; then
        echo "Access to ${MOUNT_POINT} is successful."
    else
        echo "Access to ${MOUNT_POINT} failed. Remounting now..."
        umount ${MOUNT_POINT}
        mount ${MOUNT_POINT}
        
        # 再度アクセスを確認
        if ls ${MOUNT_POINT} > /dev/null 2>&1; then
            echo "${MOUNT_POINT} successfully remounted and accessed."
        else
            echo "Failed to remount and access ${MOUNT_POINT}."
        fi
    fi
else
    echo "${MOUNT_POINT} is not mounted. Mounting now..."
    mount ${MOUNT_POINT}
    
    # 再度確認
    if mount | grep "on ${MOUNT_POINT} type" > /dev/null; then
        echo "${MOUNT_POINT} successfully mounted."
    else
        echo "Failed to mount ${MOUNT_POINT}."
    fi
fi

タスクスケジューラーへ登録

作成したシェルスクリプトをタスクへ登録し、お好みのスケジュール間隔で実行してください。

Discussion