SMBによるファイルアクセスを実現する方法について

FUSE(Filesystem in Userspace)について

普段Linuxを使う際、どのようにしてファイルにアクセスされるでしょうか?

エラー処理を考慮せずにC言語を使用して、記載すると、おおむね下記のようになるかと思います。

 

では、ここでNASなどのネットワークサーバー上にあるファイルにアクセスする場合、どうすればいいでしょうか?

ファイルオープンのパスを単純に変更して、

とすればいいのでしょうか?

 

答えはノーです。この場合は、SMBモジュールの助けを借りる必要があります。

弊社で取り扱っている製品の一つ、YNQは組み込み向けSMBミドルウェアでして、これを使えば、ここに記載されている方法で、ネットワークを使ったファイルへアクセスする事が可能になります。

しかしながら、YNQのAPIを使用して、ネットワークのファイルへアクセスするための、アプリケーションを作成する必要があります。

新しいAPIを覚えたり、既存のアプリケーションを変更するのが憚れる場合もあるでしょう。

そのような時に役に立つのがFUSE(Filesystem in Userspace)です。

 

新しくファイルシステムを作成する場合は、カーネルコードを実装する必要がありますが、FUSEを使えば、ユーザー空間の実装のみで独自のファイルシステムを実装する事が可能です。

YNQには、そのFUSE実装サンプルが付属していますので、お客様既存のコードをいじることなく、SMBによるアクセスを実現する事が可能です。

つまり、上記の図のオレンジブロックの部分だけあれば、実現可能です。

 

蛇足ですが、VxWorksにもFUSEと似たような機能があり、YNQには、その機能の実装サンプルが付属しているためVxWorksでも、お客様既存のコードをいじることなく、SMBによるアクセスを実現する事が可能です。