21
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

オープンソースまるごと by NRI OpenStandiaAdvent Calendar 2018

Day 6

LinuxのCIFSマウント時にメモリとかのリソースが足りなくて悩んでいませんか?(autofs編)

Last updated at Posted at 2018-12-05

####0. 序文
 はい、突然 daian183さんに記事を投稿せよと言われて、とりあえずQiitaアカウントを開設し困っている今日この頃です。
 他のアドベントカレンダー担当者が真面目な話題を提供している中、本日はAutofsと言うLinuxのマウントツールについて珈琲ブレイク的にご紹介いたします。(珈琲でもJavaの話でもありません)
『今更Autofsか!』と突っ込まれそうですが、以下の観点で考えると実は需要があるんです。

No.  本記事の対象者
1 クラウド環境や仮想環境を利用している
2 クラウドの利用費用や仮想環境のリソース消費を少しでも減らしたい
3 Linux、Windows混在環境がある
4 LinuxからWindowsへファイルを置きたい(リリースしたい)

要はこんな環境ですね。

Windows1
 |
Linux --- Windows2
 |
WindowsN

今回使用したOSは以下の通りです。

No.  OS
1 CentOS7
2 Windows2016

設定上OS差異の少ないツールですが、ご承知おきください。
※利用用途にもよりますが、AWSでもt2.small程度のインスタンスでうん十台とautofsでマウントしても動いていた実績はあります

 最近、Jenkins等々でビルド後にリリースまで行ってしまうのが微妙に流行っています。(本記事ではJenkins等々の環境をリリースシステムと呼ぶことにします)だがしかし、Linux、Windows混在環境の場合、リリース先がLinuxであればその都度ssh等でファイルを撒けば良いのですが、Windowsでは基本的にsshがインストールされていません。だったら『CIFSでマウントすれば良いではないか!』とおっしゃる方もいるかもしれませんが、マウント元のサーバはマウント先のWindowsサーバのノード数に応じてサーバ資源が消費され、常時CIFSマウントするのは望ましくありません。そこで、マウント要求(マウント先への通信)がある度にマウントをしてくれるAutofsの登場です。

####1. 設定概要
今回は以下の流れで設定していきます

  • Windowsにて共有フォルダアクセス用ユーザの作成
  • Windowsにて共有用フォルダの作成
  • Windowsにて共有フォルダのアクセス権追加
  • LinuxにてWindows共有フォルダへマウントを行い疎通確認
  • LinuxにてAutofsのインストール
  • LinuxにてAutofsの設定
  • LinuxにてAutofsを用いてWindows共有フォルダへマウントを行い疎通確認

では、早速設定方法についてご案内いたします。

####2. WindowsサーバにてWindowsの共有フォルダを作成
#####2.1. 共有フォルダ用ユーザの作成
######2.1.1. コマンドプロンプトの実行
コマンドプロンプトにて以下のコマンドを実行してください。
※ユーザ名、パスワード、名前、コメント等は適宜変更してください

net user jkuser01 password /add /fullname:"jenkins file sharing user" /comment:"リリースシステムファ
イル共有用"

#####2.2. 共有用フォルダの作成
######2.2.1. コマンドプロンプトの実行
コマンドプロンプトにて以下のコマンドを実行してください。
※Windowsの共有フォルダ対象を"d:\winshare"としています

mkdir d:\winshare

#####2.3. 共有フォルダのアクセス権追加
######2.3.1. コマンドプロンプトの実行
コマンドプロンプトにて以下のコマンドを実行してください。
※Windowsの共有フォルダ対象を"d:\winshare"、アクセス可能ユーザを"jkuser01"、アクセス権を"変更"としています

net share winshare=d:\winshare /grant:jkuser01,"change"

####3. LinuxサーバにてWindowsサーバの共有フォルダをマウント
#####3.1. 疎通確認
######3.1.1. マウントの実行
リリースシステムサーバのシェルにて以下のコマンドを実行してください。

sudo mount -t cifs -o username=jkuser01,password=password //リリースシステムサーバのIPアドレス/winshare /mnt/

マウントできれば通信可能です、出来なければデフォルトではWindowsのインバウンドTCP/445とリリースシステムサーバのアウトバンドTCP/445を解放してください。
疎通完了後、アンマウントを忘れずに実施してください。

sudo umount /mnt/

#####3.2. Autofsのインストール
######3.2.1. yumにてAutofsをインストール
以下のコマンドを実行してください。
※既に該当パッケージがインストール済の場合、インストールは不要です

sudo yum install autofs
sudo yum install cifs-utils

※インターネット経由でyumが使えない環境の場合、お使いのLinuxと同じLinuxをインターネットに接続できる状態で

sudo yum install --downloadonly autofs
sudo yum install --downloadonly cifs-utils

とコマンドを実行すると
/var/cache/yum/x86_64/latest/"リポジトリ名"/packages/
辺りにファイルがダウンロードされるので、該当rpmをインストールしてください。
※今時aptitudeを使わないのかとか言う突込みは無しでお願いします、daian183さんは赤い帽子派です!
#####3.3. Autofsの設定
######3.3.1. Autofsの自動起動設定
以下のコマンドを実行し、Autofsのサービス自動起動設定をしてください。
サービスの起動確認

systemctl status autofs

サービスが起動していなければ起動する

systemctl start autofs

サービスを自動起動設定する

sudo chkconfig autofs on

######3.3.2. Autofsの設定ファイル編集
######3.3.2.1. "auto.master"設定ファイルのバックアップ
編集前のファイルをバックアップします。

sudo cp /etc/auto.master /etc/auto.master.org

######3.3.2.2. "auto.master"ファイルの編集
"auto.master"を編集します。

sudo vi /etc/auto.master

以下3行をコメントアウトしてください。※先頭文字"#"でコメントアウトです

/misc /etc/auto.misc
/net  -hosts
+auto.master

######3.3.2.3. "cifs.autofs"ファイルの作成
以下のコマンドを実行し、"cifs.autofs"へ設定を追記してください。
※"auto.master"でも同じ設定は可能ですが、今回は設定ファイルを分けます

sudo touch /etc/auto.master.d/cifs.autofs 
sudo vi /etc/auto.master.d/cifs.autofs
/mnt/cifs /etc/auto.cifs --timeout=60 --ghost

/mnt/cifs : マウント先の指定
/etc/auto.cifs : 設定ファイルの指定
--timeout=60 : 60秒間通信が無ければマウントを解除する
--ghost : 未アクセス状態ではマウントしない

忘れないうちにマウント用のフォルダの作成をします、シェルにて以下のコマンドを実行してください。

mkdir /mnt/cifs

######3.3.2.4. マウント用アカウントの設定
今回はroot権限でマウントを実行します、以下の通り設定してください。
※rootは読み書き可、root以外はアクセス不可

sudo touch /root/.winid
sudo chmod 600 /root/.winid

".winid"ファイルを編集します。

sudo vi /root/.winid

共有フォルダ用に作成したユーザ名/パスワードを記載します。

username=jkuser01
password=password

######3.3.2.5. hostsファイルの編集
マウント先のサーバの名前解決が出来ない環境であれば、hostsファイルを編集した方が設定が楽です。
※必須ではありません
hostsファイルを編集する場合、以下のコマンドを実行してください。

vi /etc/hosts

以下の例に習ってhostsにレコードの追記をしてください。

IPアドレス ホスト名 ホスト名別名(あれば)

######3.3.2.6. マウント先の設定
マウント先のホストを設定します。"cifs.autofs"に追記した"auto.cifs"に対して設定します。

sudo vi /etc/auto.cifs
マウント時の名前N -fstype=cifs,rw,noperm,credentials=/root/.winid ://ホスト名1orIPアドレス/winshare
マウント時の名前M -fstype=cifs,rw,noperm,credentials=/root/.winid ://ホスト名2orIPアドレス/winshare

マウント時の名前N,M : マウント時に表示されるパスになります
-fstype=cifs : 実は他のプロトコルもマウントできますが、今回はWindowsですのでcifsを指定します
rw : 権限の設定です(r : 読み込み可 ; w : 書き込み可 ; x : 実行可※今回はrwで設定しています)
noperm : これを付けるとWindows上のアクセス権設定が優先され、rwxの設定は無視されます
credentials : 先ほど作成したID/PWファイルのパスを指定します
://XXX : マウント先のパスを指定します

######3.3.2.7. サービスリブート
Autofsのサービスをリブートし、設定を反映させます。

sudo systemctl restart autofs

####4. 動作確認
#####4.1. Linuxより共有フォルダへアクセス
マウント先に指定した"/mnt/cifs"以下に新しくフォルダが出来ています。このフォルダ名は"auto.cifs"で指定した"マウント時の名前M"、"マウント時の名前N"が表示されます。

ls -atrl /mnt/cifs/

今回Windows側の設定は変更可になっているので、ファイルを書き込んで見ましょう、書き込みできるはずです。
これにて本日の珈琲ブレイクは終了です。明日からはまた読み応えのある記事に変わると思います、皆さんお付き合いをお願いいたします。

21
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?