【mount / fstab】Amazon LinuxにWindows共有フォルダをマウントする方法

  • 2019年10月13日
  • 2019年10月13日
  • AWS, Linux
AWS

こんにちは。ますのです。
開発部門より「Amazon S3に日々蓄積されるデータを、ドメイン参加しているWindowsの共有フォルダに同期したい!」というオーダーを承りました。

当初は「rclone」でGoogleDriveやOneDriveへの同期を検討していましたが、社内情シス的な目線や会社事情(ITポリシー / ユーザ部門の現在の使い方を変えたくないという要望 / etc…)により無しの判断となりました。
もういっそのこと、共有サーバをLinux端末にmountしてAWSのcliでsync処理した方が早いのでは…??という結論に至りました。

LPIC1の勉強でなんとなく覚えたmountやfstabについて忘れていたので備忘メモとなります。
なんだかんだmountは使うので覚えておいて損はないですからね!

ざっくりと やりたいことの概要図

  1. 何かしらのシステムでAWS S3 Bucketへデータが蓄積される(←詳細は知らないであります
  2. Amazon Linux2の好きな位置にWindowsServerの共有フォルダをmountする
  3. Amazon Linux2でAWS CLIの「s3 sync」コマンドでデータを同期する

 

Windowsの共有フォルダをマウントするために「cifs-utils」「samba-client」を使う

Amazon Linux2やCentOS上にWindows共有フォルダをマウントするためには「cifs-utils」や「samba-client」をインストールする必要があります。
WindowsServerに接続する際のプロトコルでCIFSやSMBを利用しているためですね。細かいところは割愛。というより理解していないです。すみません。。。

今回は簡単に設定できた「cifs-utiles」の例で実施しました。

先ずはインストール済かどうか確認。

$ sudo yum list installed | grep cifs-utiles

何も表示されなければインストールされていないので、yumでインストール開始します。

$ sudo yum install cifs-utils

mountコマンドを使ってWindows共有フォルダをマウントする

環境は整いました!ということでマウントです。
今回はドメイン参加済のWindowsServerの共有フォルダへ実施するので、ドメイン名やパスワード、ドメイン名を記載します。

$ sudo mount -t cifs -o user=【ドメインユーザ名】,password=【ドメインユーザのパスワード】,domain=【ドメイン名】,uid=【Linux側の実行ユーザ名】,gid=【Linux側の実行ユーザのグループ名】,file_mode=0775,dir_mode=0775 【マウントするWindowsServer共有フォルダのパス】 【Linuxマウントフォルダ】

//実際に入力する時の例(青:Windows側、赤:Linux側)
$ sudo mount -t cifs -o user=Win-User,password=win-user-passwd,domain=xxx.co.jp,uid=linux-sync-user,gid=linux-sync-group,file_mode=0775,dir_mode=0775 //192.168.11.22/共有01 /mnt/win-sync/

オプションオプション概要設定した理由
-t タイプ (※–types)マウント先のファイルシステムタイプを指定する。【cifs】
Windowsでも確認が出来る「cifs」のファイルシステムを指定する。
-o オプション (※–options)マウントオプション(「,」区切りで複数指定可能)ファイルシステムに依存しないものを指定する。【user/password/domain】
ドメイン名と共有フォルダにアクセス可能なユーザを指定する必要があるため「user/password/domain」を指定する。
【uid/gid】
sync処理を実行するユーザをマウントフォルダに付与する必要があるため「uid/gid」でユーザ名を指定する。
【file_mode=0775,dir_mode=0775】
マウント先のアクセス権限を指定するために「file_mode=0775,dir_mode=0775」を念のため付与する。
※共有フォルダを指定する際はホスト名ではなく「IPアドレス」が良い!
 と、どなたかのWebサイトで見たのでIPアドレスを指定しています。
 検証をしていないので何とも言えずです。。。
正しくマウントされていれば「ls」コマンドで共有フォルダ内のデータが参照できるはずです。
また、「touch」コマンドでデータを作成し、WindowsServer上でもデータが作成出来ていれば完璧です。

mountを解除するには「umount」コマンドを使う

念のためにマウントした部分が解除できるかも確認。

$ sudo umount (マウント先)

//入力例に沿った場合の解除
$sudo umount /mnt/win-sync/

OS再起動時に自動マウントするために「/etc/fstab」へ追記する

OS再起動をするとmountコマンドでマウントした内容は解除されてしまいます。
都度mountコマンドを打つの嫌ですよね。それを回避するために「/etc/fstab」への記載も忘れずにやりましょう!

$sudo vi /etc/fstab
【マウントするWindowsServer共有フォルダのパス】 【Linuxマウントフォルダ】 cifs user=【ドメインユーザ名】,password=【ドメインユーザのパスワード】,domain=【ドメイン名】,uid=【Linux側の実行ユーザ名】,gid=【Linux側の実行ユーザのグループ名】,file_mode=0775,dir_mode=0775 0 0//実際に入力する時の例
//192.168.11.22/共有01 /mnt/win-sync/ cifs Win-User,password=win-user-passwd,domain=xxx.co.jp,uid=linux-sync-user,gid=linux-sync-group,file_mode=0775,dir_mode=0775 0 0
はい!この設定をすればOS再起動が起きても安心です。
自信をもって「init 6」を打ち込んでも起動時には指定のマウント先にデータがあるはずです。

「aws s3 sync」でS3バケットからAmazon Linux2へ同期する s3://mybucket .

IAMのS3バケットアクセスの設定とaws configureの設定を行ったらあとは同期コマンドを打つだけです!
多分こんな感じになるんじゃないかと。ここから先は検証お願いしちゃったので、勘です。

aws s3 sync s3://mybucket /mnt/win-sync/
Amazon EFSとかでLinux同士のストレージ共有も流行っておりますが、S3で管理しているものもあるので需要はありそうですね。
FSxも試してみたいですが若干お高いイメージなのです。
ストレージの扱い方やmount、CLIの使い方など、色々応用出来そうな点が多く使えそうなものがないか模索します。
日々勉強を!ますのでした!
最新情報をチェックしよう!