小さなファイルの高速転送を実現する!
By Patineboot
Ubuntuで小さなファイルの高速転送を期待する
転送速度が高速のファイルサーバーがほしい。 ブログのファイルリストを FinderでSambaファイルサーバーに移動しながら思いつく。 UbuntuでNetatalkにトライするのもいいかな。
たくさんのファイルを移動すると、Samba、Finder、進捗バーが止まっている。 NetatalkとmacOSは相性が良い。
ACLと拡張属性付き自動マウント
ストレージのマウントオプションをアクセス制御リスト、ユーザー拡張属性ありでマウントする!
マウントオプションにacl
とuser_xattr
を追加したよ!
mount -o acl,user_xattr /dev/device /mount/point
mountコマンドはシャットダウンするまで有効だよ。Ubuntuを起動するときにコマンドを実行するのは手間かな。
起動時に自動マウントするfstab
の記述を書くね。
# For Archives
/dev/ubuntu-vg/archive /var/archive ext4 defaults,acl,user_xattr 0 2
使っているSambaの設定/etc/samba/smb.conf
に、acl_xattrを追加するよ。
# vfs_fruit ↓これを追加する
vfs objects = catia fruit streams_xattr acl_xattr
基本設定は、技術記事Configuring Samba for macOSを見てね。
Netatalk
UbuntuにNetatalkをインストールする。
sudo apt install netatalk
Netatalkは、転送速度の変化がSambaから無い。
sshfs
macFUSEはmacOSにインストールしてある。
sshfsをインストールするよ。PKGをダウンロードして進むよ。 途中、macOSから権限に関する問い合わせがあるから、権限を付与してね!
PKGダウンロードURL: https://github.com/osxfuse/sshfs/releases
sshfsは、macOSのターミナルでマウントする!
sshfs <username>@<hostname>:<host server dir> <mount point>
sshfsは、Sambaと転送速度は同じ。
FTPS
Finderは、いろいろなプロトコルでファイルを転送できるよ! AFP, Webdav, FTP。
FTPSは、書き込みは不可能で、読み込みができる。転送速度は遅いよ。
NFSv4
UbuntuでNFSを使って、ディレクトリを公開して、macOSで公開をマウントするよ。
-
UbuntuにNFSをインストールするよ。
sudo apt install nfs-kernel-server
-
インストールしたNFSに、各種設定を行う。
NFSの設定ファイルを開くよ
sudo nano /etc/exports
共有ディレクトリ、クライアントIPアドレスの範囲、共有設定のエントリを追加する。
/home/patineboot/nfs_test 192.168.10.0/24(rw,async,fsid=0,crossmnt,no_subtree_check,insecure,all_squash)
共有設定に、
all_squash
を追加した! 共有ディレクトリへのアクセスは、nogroup
グループのnobody
ユーザーになるよ。共有ディレクトリのオーナーを変更するね。
sudo chown -R nobody.nogroup ./nfs_test/
-
macOSのターミナルで、mountコマンドを実行するよ。
mkdir ~/nfsmnt mount -t nfs -o vers=4 192.168.10.2:/ ~/nfsmnt
NFSv4は、Sambaから転送速度が遅くなっている!
Samba Tune
マルチチャネルをお試し
server multi channel support = yes
ファイル名の大文字小文字区別をお試し
case sensitive = yes
case preserve = no
short preserve case = no
転送速度の変化が無い。
Fruit処理削減
転送処理を減らそうと思ったの。
vfs objectsのcatia、encodingのnativeを変更するよ。
vfs objects = catia fruit streams_xattr acl_xattr # -> catiaの指定を削除
fruit:encoding = native # -> private
不要なワイプ、ファイルの削除を変更するよ。
fruit:wipe_intentionally_left_blank_rfork = yes # -> no
fruit:delete_empty_adfiles = yes # -> no
転送速度の変化が無い。
まとめ
小さなファイルの高速転送の実現を目指し、 sshfs, netatalk, ftps, nfsv4, samba tune, fruit処理削減にトライした。 効果がある結果を得ることはできなかった。
Sambaで、大きなファイル転送では十分な転送速度がある。 小さなファイルの高速転送は、他のプロトコル検討、 Samabパラメータ調整を行なったが、転送速度の改善は得られなかった。
現時点では、SFTP(SSH FTP)だけ、小さなファイルの高速転送が実現できる!