CentOS 7からWindowsの共有フォルダをマウント
必要なソフトウェアのインストール
# yum install cifs-utils
参考: Windowsの共有フォルダをLinuxにcifsマウントする際のハマりどころ - Qiita
マウント
# mkdir /mnt/hoge
# mount -t cifs -o vers=3.0,sec=ntlmv2,username=user_name,password=password,domain=domain_name,ro,file_mode=0444,dir_mode=0555 //server_name/share_name /mnt/hoge
- vers
- SMBのバージョン.指定しないと1.0になるが,接続先が最近のWindowsだと接続できないらしくてハマった.Windows Vista/Server 2008の場合は2.0, Windows 7/Server 2008R2の場合は2.1, Windows 8/Server 2012の場合は3.0を指定.
- sec
- 認証方式.ntlmだとセキュリティ上の問題があり上手くいかないことがあるらしい.特に理由がなければntlmv2でよさそう.
- username
- password
- domain
- ユーザー名,パスワード,ドメイン名.接続先がドメインに所属していなければdomainはいらない?
- ro
- 読み取り専用でマウント.読み書きしたいときはrwを指定.
- file_mode
- ファイルのモード(パーミッション).デフォルトだと0755になったが,実行や書き込み権限が不要なら0444とかにしておく.
- dir_mode
- ディレクトリのモード(パーミッション).デフォルトだと0755になったが,書き込み権限が不要なら0555とかにしておく.
文字コードなどは特に気にしなくても日本語のファイル名を正しく表示できた
man mount.cifsとすると詳しい説明が得られる
自動マウントの設定
mountコマンドで正常にマウントできることを確認したら,/etc/fstab に追記することで,起動時に自動マウントするように設定できる.
//server_name/share_name /mnt/hoge cifs vers=3.0,sec=ntlmv2,...(options) 0 0
Keep Alive
クライアント側のバグなのかプロトコルの仕様なのか,一度マウントしても数分間アクセスしないでいるとファイルにアクセスできなくなる.それどころか,アクセスしようとしたプロセスが固まってCtrl+Cもきかなくなり,なにもできなくなる.umountすらも固まるが,umount -lするとアンマウントできる.
対処法を色々調べたところ,softオプションやdirectioオプションをつけるとよいというような情報を見つけたが,どれも上手くいかず,結局,次のようなスクリプトを書いてcronで10分おきに実行するようにした.
#!/bin/bash
function keepalive () {
echo ${1}
start_time=`date +%s`
timeout 10 touch ${1}/keepalive.txt
end_time=`date +%s`
time=$((end_time-start_time))
if [ $time -gt 8 ] ; then
echo timeout, re-mount
umount -l ${1}
mount -a
fi
}
keepalive /mnt/hoge
keepalive /mnt/fuga
keepalive /mnt/piyo
コメント