NFS経由でのS3が対応するファイル操作系のシステムコール

★悩み★
NFS経由でS3にアクセスしたいんだけど、ファイル操作系のシステムコールはどのぐらいサポートしているんだろうかぁ。

こういった「悩み」に答えます。

★本記事の内容★
(1) EC2からNFSでS3のファイルを操作する方法をご紹介
(2) NFS経由でのS3が対応するファイル操作系のシステムコールをご紹介

これからご紹介する「NFS経由でのS3が対応するファイル操作系のシステムコール」を把握することで、NFS経由でのS3がサポートしているファイル操作系のシステムコールを理解できます。

記事の前半では「EC2からNFSでS3のファイルを操作する方法」を解説しつつ、記事の後半では「NFS経由でS3が対応するシステムコール一覧」をご紹介します。

この記事を読み終えることで、「NFS経由でのS3がサポートしているファイル操作系のシステムコール」を把握した状態になります。

「AWSとは何か?」や「AWSの基礎的なサービスは何か?」を知りたい方は、以下の記事から見られます。

EC2からNFSでS3のファイルを操作する方法

今回は実機検証をするために、EC2からNFS経由でS3へアクセスできる環境を構築します。

環境構築の手順に関しては、以下の記事をご覧ください。

以上が、「EC2からNFSでS3のファイルを操作する方法」となります。

NFS経由でのS3が対応するファイル操作系のシステムコール

続いて、「NFS経由でのS3が対応するファイル操作系のシステムコール」に関してご紹介します。

検証項目:NFS経由でのS3が対応するシステムコール

「NFS経由でのS3が対応するシステムコール」を検証するための検証項目は、以下となります。

検証番号システムコールオプション
1openO_APPEND
2openO_ASYNC
3openO_CLOEXEC
4openO_CREAT
5openO_DIRECT
6openO_DIRECTORY
7openO_DSYNC
8openO_EXCL
9openO_LARGEFILE
10openO_NOATIME
11openO_NOCTTY
12openO_NOFOLLOW
13openO_NONBLOCK
14openO_PATH
15openO_SYNC
16openO_TMPFILE
17openO_TRUNC
18readなし
19writeなし
20lseekなし
21removeなし
22renameなし
検証項目

以下のサイトからファイル操作系に関するコマンドを抽出し、上記の検証項目を立てました。

Linuxマニュアル(日本語)
※クリックすると新規タブが開きます。

低水準システムコール(例えば、fopenなど)は、openが内包していると考えたため、検証項目から省いています。

以上が、「検証項目:NFS経由でのS3が対応するシステムコール」となります。

NFS経由でのS3が対応するシステムコールを検証するプログラム

NFS経由でのS3が対応するシステムコールを検証するにあたり、簡単なC言語アプリを作成しました。

例えば、「システムコールであるopenのO_APPENDを実行するプログラム」は、以下となります。

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char *argv[])
{
	int fd;
	char *file_name = argv[1];

	fd = open(file_name, O_APPEND);
	if (fd == -1) {
		return 1;
	}
	close(fd);

	return 0;
}

今回の検証で利用したプログラムとシェルスクリプトを以下に掲載します。

気になる方は、ダウンロードし、中身を見てみてください。

以上が、「NFS経由でのS3が対応するシステムコールを検証するプログラム」となります。

検証結果:NFS経由でのS3が対応するシステムコール

以下に「NFS経由でのS3が対応するシステムコール」の検証結果を記載します。

検証結果は、以下となります。

検証番号システムコールオプション検証結果(○:正常動作を確認)
1openO_APPEND
2openO_ASYNC
3openO_CLOEXEC
4openO_CREAT
5openO_DIRECT
6openO_DIRECTORY
7openO_DSYNC
8openO_EXCL
9openO_LARGEFILE
10openO_NOATIME
11openO_NOCTTY
12openO_NOFOLLOW
13openO_NONBLOCK
14openO_PATH
15openO_SYNC
16openO_TMPFILE×
17openO_TRUNC
18readなし
19writeなし
20lseekなし
21removeなし
22renameなし×
検証結果

検証プログラムのログを以下に掲載いたします。

興味がある方は、ダウンロードし確認してみてください。

以上の検証結果より、NFS経由でのS3がサポートしていないシステムコールは以下だと考えます。

★NFS経由でのS3がサポートしていないシステムコール★
・rename
・openのO_TMPFILE

以上が、「NFS経由でのS3が対応するファイル操作系のシステムコール」となります。

【まとめ】NFS経由でのS3が対応するファイル操作系のシステムコール

今回の記事を通して、「NFS経由でのS3が対応するファイル操作系のシステムコール」をご紹介することで、以下の悩みを解消しました。

★悩み★
NFS経由でS3にアクセスしたいんだけど、ファイル操作系のシステムコールはどのぐらいサポートしているんだろうかぁ。

「NFS経由でのS3が対応するファイル操作系のシステムコールは?」と悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。

 

 


 

コメント