★悩み★
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が対応するシステムコール」を検証するための検証項目は、以下となります。
検証番号 | システムコール | オプション |
1 | open | O_APPEND |
2 | open | O_ASYNC |
3 | open | O_CLOEXEC |
4 | open | O_CREAT |
5 | open | O_DIRECT |
6 | open | O_DIRECTORY |
7 | open | O_DSYNC |
8 | open | O_EXCL |
9 | open | O_LARGEFILE |
10 | open | O_NOATIME |
11 | open | O_NOCTTY |
12 | open | O_NOFOLLOW |
13 | open | O_NONBLOCK |
14 | open | O_PATH |
15 | open | O_SYNC |
16 | open | O_TMPFILE |
17 | open | O_TRUNC |
18 | read | なし |
19 | write | なし |
20 | lseek | なし |
21 | remove | なし |
22 | rename | なし |
以下のサイトからファイル操作系に関するコマンドを抽出し、上記の検証項目を立てました。
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が対応するシステムコール」の検証結果を記載します。
検証結果は、以下となります。
検証番号 | システムコール | オプション | 検証結果(○:正常動作を確認) |
1 | open | O_APPEND | ○ |
2 | open | O_ASYNC | ○ |
3 | open | O_CLOEXEC | ○ |
4 | open | O_CREAT | ○ |
5 | open | O_DIRECT | ○ |
6 | open | O_DIRECTORY | ○ |
7 | open | O_DSYNC | ○ |
8 | open | O_EXCL | ○ |
9 | open | O_LARGEFILE | ○ |
10 | open | O_NOATIME | ○ |
11 | open | O_NOCTTY | ○ |
12 | open | O_NOFOLLOW | ○ |
13 | open | O_NONBLOCK | ○ |
14 | open | O_PATH | ○ |
15 | open | O_SYNC | ○ |
16 | open | O_TMPFILE | × |
17 | open | O_TRUNC | ○ |
18 | read | なし | ○ |
19 | write | なし | ○ |
20 | lseek | なし | ○ |
21 | remove | なし | ○ |
22 | rename | なし | × |
検証プログラムのログを以下に掲載いたします。
興味がある方は、ダウンロードし確認してみてください。
以上の検証結果より、NFS経由でのS3がサポートしていないシステムコールは以下だと考えます。
★NFS経由でのS3がサポートしていないシステムコール★
・rename
・openのO_TMPFILE
以上が、「NFS経由でのS3が対応するファイル操作系のシステムコール」となります。
【まとめ】NFS経由でのS3が対応するファイル操作系のシステムコール
今回の記事を通して、「NFS経由でのS3が対応するファイル操作系のシステムコール」をご紹介することで、以下の悩みを解消しました。
★悩み★
NFS経由でS3にアクセスしたいんだけど、ファイル操作系のシステムコールはどのぐらいサポートしているんだろうかぁ。
「NFS経由でのS3が対応するファイル操作系のシステムコールは?」と悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。
コメント