SSHFSでファイル共有

私が大学入学時に買ってもらった8年物のノートPCを、自宅内のファイル共有サーバーとして再利用することにしました。その際にSSHFSを使い、サーバー上のディレクトリをクライアント上にマウントします。これにより他のファイルと同じようにサーバー上のファイルを扱うことができます。通信プロトコルSSHで暗号化されるので安全になります。

以下構成概要です。

サーバー
  • ノートPC+CentOS6.2
クライアント
  • デスクトップPC+Windows 7
  • MacBook+Mac OS X 10.7.2 Lion

CentOS6にNTFSな外付けHDDをUSB経由でマウント

最初にサーバーの準備をします。とはいえサーバーとして必要なのはSSHサーバーの立ち上げだけです。SSHFSで使う通信プロトコルは通常のSSHと変わらないためです。このSSHサーバーも初期状態でインストール済みなので、実質やることはありません。楽でいいですね。

次に共有させるHDDを用意します。これまでWindowsに直接つないでいたUSB外付けHDDをCentOSにつなぎ変えます。USBポートに指した状態でfdisk -lを実行すると以下のようになります。

[master@localhost ~]$ sudo fdisk -l
[sudo] password for master:
ディスク /dev/sda: 2000.4 GB, 2000398934016 バイト
ヘッド 255, セクタ 63, シリンダ 243201
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0xbbc438d9

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1      243201  1953511008+   7  HPFS/NTFS

とりあえず認識はしているようなので次にマウントします。/dev/sdaといったパスは再起動時に変わるかもしれないのでUUIDで指定します。

[master@localhost ~]$ sudo blkid
/dev/sda1: UUID="16A8BA00A8B9DF05" TYPE="ntfs"
[master@localhost ~]$ sudo mkdir /mnt/16A8BA00A8B9DF05
[master@localhost ~]$ sudo mount -U 16A8BA00A8B9DF05 /mnt/16A8BA00A8B9DF05
mount: 未知のファイルシステムタイプ 'ntfs'
しかし、上記のとおりエラーが出て失敗します。調べたところCentOSは初期状態ではNTFSをマウントできないらしいので、マウントさせるためのモジュールを別途インストールします。
[master@localhost ~]$ sudo yum -y install fuse fuse-ntfs-3g dkms dkms-fuse
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * extras: ftp.yz.yamagata-u.ac.jp
 * updates: ftp.yz.yamagata-u.ac.jp
base                                                     | 3.7 kB     00:00
extras                                                   | 3.5 kB     00:00
updates                                                  | 3.5 kB     00:00
Setting up Install Process
No package fuse-ntfs-3g available.
No package dkms available.
No package dkms-fuse available.
Resolving Dependencies
--> Running transaction check
---> Package fuse.i686 0:2.8.3-4.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package         Arch            Version                  Repository       Size
================================================================================
Installing:
 fuse            i686            2.8.3-4.el6              base             71 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 71 k
Installed size: 182 k
Downloading Packages:
fuse-2.8.3-4.el6.i686.rpm                                |  71 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : fuse-2.8.3-4.el6.i686                                        1/1

Installed:
  fuse.i686 0:2.8.3-4.el6

Complete!
[master@localhost ~]$ sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/r
pmforge-release-0.5.2-2.el6.rf.i686.rpm
http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm を取得中
警告: /var/tmp/rpm-tmp.HniZd3: ヘッダ V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
準備中...                ########################################### [100%]
   1:rpmforge-release       ########################################### [100%]
[master@localhost ~]$ sudo vi /etc/yum.repos.d/rpmforge.repo
### Name: RPMforge RPM Repository for RHEL 6 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
#enabled = 1 から修正
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

[rpmforge-extras]
name = RHEL $releasever - RPMforge.net - extras
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/extras
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge-extras
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-extras
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
[master@localhost ~]$ sudo yum -y --enablerepo=rpmforge install fuse fuse-ntfs-3
g dkms dkms-fuse
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * extras: ftp.yz.yamagata-u.ac.jp
 * rpmforge: apt.sw.be
 * updates: ftp.yz.yamagata-u.ac.jp
rpmforge                                                 | 1.1 kB     00:00
rpmforge/primary                                         | 1.5 MB     00:08
rpmforge                                                              4253/4253
Setting up Install Process
Package fuse-2.8.3-4.el6.i686 already installed and latest version
No package dkms-fuse available.
Resolving Dependencies
--> Running transaction check
---> Package dkms.noarch 0:2.1.1.2-1.el6.rf will be installed
---> Package fuse-ntfs-3g.i686 0:2010.10.2-1.el6.rf will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package            Arch         Version                   Repository      Size
================================================================================
Installing:
 dkms               noarch       2.1.1.2-1.el6.rf          rpmforge        69 k
 fuse-ntfs-3g       i686         2010.10.2-1.el6.rf        rpmforge       637 k

Transaction Summary
================================================================================
Install       2 Package(s)

Total download size: 706 k
Installed size: 1.6 M
Downloading Packages:
(1/2): dkms-2.1.1.2-1.el6.rf.noarch.rpm                  |  69 kB     00:01
(2/2): fuse-ntfs-3g-2010.10.2-1.el6.rf.i686.rpm          | 637 kB     00:04
--------------------------------------------------------------------------------
Total                                           101 kB/s | 706 kB     00:07
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : dkms-2.1.1.2-1.el6.rf.noarch                                 1/2
  Installing : fuse-ntfs-3g-2010.10.2-1.el6.rf.i686                         2/2

Installed:
  dkms.noarch 0:2.1.1.2-1.el6.rf     fuse-ntfs-3g.i686 0:2010.10.2-1.el6.rf

Complete!

fuse fuse-ntfs-3g dkmsモジュールをインストールします。標準リポジトリには含まれていないので、途中でrpmforgeリポジトリを追加しています。その上で改めてマウントを試します

[master@localhost ~]$ sudo -t ntfs-3g mount -U 16A8BA00A8B9DF05 /mnt/16A8BA00A8B
9DF05
[sudo] password for master:

NTFSとしてマウントを試すと無事成功しました。参考サイトにはdkms-fuseも必要とあったのですが、なくてもマウントに成功しました。リポジトリからも削除されているので不要になったのかもしれません。

長くなったのでいったん区切ります。次回はクライアント側の設定を行います。

参考
つれづれ: CentOSでNTFSの外付けHDDをマウント