ページの先頭行へ戻る
PRIMECLUSTER Global File Services 説明書 4.3

D.2.1 4.1A20 からの非互換項目

  4.1A20 から非互換となる機能は以下のとおりです。

表D.1 4.1A20 からの非互換項目

項番

項目

移行後のOS

1

sendfile(2) のサポート中止

RHEL5

2

mmap(2)中のファイルに対する別ノードからの truncate(2), ftruncate(2), creat(2), O_TRUNC 指定の open(2) の動作変更

すべて

3

GFS が予約するポート番号変更

すべて

4

GFS のコマンド引数に指定できる特殊ファイル種別の変更

すべて

5

sfcdf(8) のエラーメッセージの変更

すべて

6

sfcfsck(8) のエラーメッセージの変更

すべて

7

sfcmkfs(8) の -o specific_options オプションに指定されたパラメタのチェック強化

すべて

8

ファイルへの書き込み時に確保するリザーブ領域サイズの変更

すべて

9

同時にオープンできるファイル数制限の追加

すべて

10

多ファイルアクセス時の iノードキャッシュ解放機能追加

すべて

11

ノード間の通信タイムアウト時間の省略値

すべて

12

sfcfrmd デーモンの情報メッセージの削除

すべて

13

マウントオプション atime 指定時の動作の変更

RHEL6

D.2.1.1 sendfile(2) のサポート中止

非互換内容

sendfile(2) を GFS 共用ファイルシステムに対して発行した場合の動作を変更しました。

移行前:正常終了

移行後:異常終了 (復帰値:-1、errno:EINVAL)

対処方法

  sendfile(2) を使用している箇所は、read 処理(*1)と write 処理(*2)を組み合わせることで代替可能です。

  *1: read(2), readv(2), pread(2)

  *2: write(2), writev(2), pwrite(2)

  具体的な例を以下に示します。

  なお、以下に示すプログラムは、あるファイルの先頭から最後までの内容を、512バイトの転送サイズで、他のファイルに複写するプログラムです。

<修正前>

#include <sys/sendfile.h>
    :
int
func(void)
{
        int out_fd = 0, in_fd = 0;
        off_t offset = 0;
            :
        while (1) {
                ssize_t write_size;

                write_size = sendfile(out_fd, in_fd, &offset, 512);
                if (write_size == -1) {
                            :
                        return -1;
                }
                if (write_size == 0) {
                        break;
                }
        }
           :
        return 0;
}

<修正後>

#include <unistd.h>
    :
int
func(void)
{
        int out_fd = 0, in_fd = 0;
        char buf[512];
            :
        while (1) {
                ssize_t read_size, write_size;

                read_size = read(in_fd, buf, 512);
                if (read_size == -1) {
                            :
                        return -1;
                }
                if (read_size == 0) {
                        break;
                }

                write_size = write(out_fd, buf, read_size);
                if (write_size == -1) {
                            :
                        return -1;
                }
        }
            :
        return 0;
}

D.2.1.2 mmap(2) 中のファイルに対する別ノードからの truncate(2), ftruncate(2), creat(2), O_TRUNC 指定の open(2) の動作変更

非互換内容

  GFS 共用ファイルシステム上のファイルを mmap(2) 中に、他ノードから同じファイルに対して以下のシステムコールを発行した場合の動作を変更しました。

移行前:正常終了

移行後:異常終了 (復帰値:-1、errno:EBUSY)

対処方法

  代替方法はありません。

D.2.1.3 GFS が予約するポート番号変更

非互換内容

  GFS が予約する (/etc/services ファイルに登録する) ポート番号を変更しました。

移行前:9200~9300

移行後:9200~9263, 9300

対処方法

  対処は不要です。

D.2.1.4 GFS のコマンド引数に指定できる特殊ファイル種別の変更

非互換内容

  以下のコマンドにおいて指定可能な特殊ファイルの種別を変更しました。

移行前:キャラクタ特殊ファイルを指定します。

移行後:ブロック特殊ファイルを指定します。キャラクタ特殊ファイルは指定できません。

対処方法

  上記のコマンドの引数に特殊ファイルを指定する場合、ブロック特殊ファイルを指定してください。キャラクタ特殊ファイルを指定した場合、コマンドはエラーメッセージを出力し、異常終了します。

D.2.1.5 sfcdf(8) のエラーメッセージの変更

非互換内容

  sfcdf(8) コマンドにおいて、以下の条件のときに出力されるエラーメッセージを変更しました。

  1) -mオプションを指定する。かつ、

  2-1) 引数に存在しない特殊ファイル名を指定した場合。または、

  2-2) 引数に GFS 共用ファイルシステム以外の特殊ファイル名を指定した場合。

移行前:

  2-1) の場合

sfcdf: ERROR: cannot open special: errmsg

  2-2) の場合

sfcdf: ERROR: invalid device: special

移行後:

sfcdf: ERROR: special is not a sfcfs file system

対処方法

  ありません。

D.2.1.6 sfcfsck(8) のエラーメッセージの変更

非互換内容

  sfcfsck(8) コマンドにおいて、以下の条件のときに出力されるエラーメッセージを変更しました。

  引数に GFS 共用ファイルシステム以外の特殊ファイル名を指定した場合。

移行前:

device-name is not for sfcfs

移行後:

Can't check device-name

対処方法

  ありません。

D.2.1.7 sfcmkfs(8) の -o specific_options オプションに指定されたパラメタのチェック強化

非互換内容

  以下の条件の場合の sfcmkfs(8) の動作を変更しました。

  1) 以下の -o specific_options オプションのどれかを指定する。

free=n
logsz=n
maxnode=n
metasz=n
mfree=n
nbpi=n
nblkpexty=n

  2) n の先頭文字が数字である。かつ、

  3) n の 2文字目以降に数字以外の文字が含まれる場合。

移行前:

  文字列 n 内の、先頭文字から連続する数字だけの文字列をパラメタとして認識します。

  例) "-o free=9a0" は、"-o free=9" とみなします。

移行後:

  以下のエラーメッセージを出力し、異常終了します。

sfcmkfs:ERROR: Illegal option : value

対処方法

  正しい (数字だけの) パラメタを指定してください。

D.2.1.8 ファイルへの書き込み時に確保するリザーブ領域サイズの変更

非互換内容

  GFS 共用ファイルシステム上のファイルに対して書き込み処理を実行したときに、ノード単位で確保するリザーブ領域のサイズを増やしました。この変更により、書き込み実行後、df(1), sfcdf(8), statfs(2) で取得される使用中データ領域が増加します。

  以下に、作成直後の GFS 共用ファイルシステム上に、1キロバイトのファイルを作成した場合の、df(1) 出力結果を示します。

移行前:

Filesystem              1K-blocks      Used Available Use% Mounted on
/dev/sfdsk/c1/dsk/vol1   56569128      5200  50907016   1% /mnt/gfs1

移行後:

Filesystem              1K-blocks      Used Available Use% Mounted on
/dev/sfdsk/c1/dsk/vol1   56569128     20480  50891736   1% /mnt/gfs1

  リザーブ領域は、使用中データ領域 (Used) と判断されるため増加し、使用可能領域 (Available) は、減少しています。

対処方法

  対処は不要です。

D.2.1.9 同時にオープンできるファイル数制限の追加

非互換内容

  1つの GFS 共用ファイルシステム上で、5000個の異なるファイルがオープンされているとき、5001個目のファイルに対する open(2) または creat(2) を発行した場合の動作を変更しました。

移行前:正常終了

移行後:異常終了 (復帰値:-1、errno:ENFILE)

対処方法

/var/log/messages に、以下のメッセージが出力されているかどうかを確認してください。

kernel: VFS: file-max limit number reached

出力されていない場合は、open(2) または creat(2) でオープンしようとしたファイルが存在する GFS 共用ファイルシステム上で、すでに 5000個のファイルがオープンされています。

GFS 共用ファイルシステム上でオープンされているファイルの内、クローズできるファイル (処理済のファイル) があれば、close(2) を発行してください。

GFS 共用ファイルシステム上で、5000個を超えるファイルをオープンする必要がある場合は、オープン対象ファイルを、複数の GFS 共用ファイルシステムに分散して配置してください。

D.2.1.10 多ファイルアクセス時の iノードキャッシュ解放機能追加

非互換内容

  MDS が保持している iノードキャッシュ数が 30000個 (累計) を超えた場合、22000個 (累計) になるまで iノードキャッシュを解放する機能を追加しました。

移行前:

MDS が保持している iノードキャッシュの解放は行っていません。

移行後:

  1. MDS が保持している iノードキャッシュ数が 30000個を超えた場合、以下のメッセージを出力し、iノードキャッシュの解放処理を開始します。

    NOTICE: sfcfs_mds:3020: mountpoint: The total number of vnodes used reached the upper bound. vnodes used=totalnum: upper bound=30000: lower bound=22000
  2. MDS が保持している iノードキャッシュ数が 22000個となった時点で以下のメッセージを出力し、iノードキャッシュの解放処理を終了します。

    NOTICE: sfcfs_mds:3021: mountpoint: The total number of vnodes used(=totalnum) is the lower bound(=22000).

対処方法

  特に対処は必要ありません。
  ただし、iノードキャッシュの解放処理は、ファイルシステムに対するアクセス性能に影響を及ぼすので、メッセージ“NOTICE: sfcfs_mds:3020”が出力されてから“NOTICE: sfcfs_mds:3021”が出力されるまでの間は、最低限必要なファイルアクセスにとどめてください。

D.2.1.11 ノード間の通信タイムアウト時間の省略値

非互換内容

  通信によるノードの生存監視において、通信の応答がなくなってから相手ノードを異常状態と判断するまでのタイムアウト時間の省略値を変更しました。

移行前:60秒

移行後:180秒

対処方法

  対処は不要です。

参考

  ノード間の通信タイムアウト時間は、通常変更する必要はありませんが、変更することもできます。

参照

  ノード間の通信タイムアウト時間の変更方法の詳細は、“14.1.2 通信タイムアウト時間”、“10.1.2 変更 (ファイルシステム属性変更)”および“11.1.2 変更 (ファイルシステム属性変更)”を参照してください。

D.2.1.12 sfcfrmd デーモンの情報メッセージの削除

非互換内容

  sfcfrmd の起動時に出力される情報メッセージを削除します。

  移行前:下記のメッセージが出力されます。

sfcfrmd[pid]: INFO: sfcfrmd:0001: set number of threads 16
sfcfrmd[pid]: INFO: sfcfrmd:0002: set service port number 9300
sfcfrmd[pid]: INFO: sfcfrmd:0003: set connection timeout value 30 [sec]

  移行後:上記のメッセージが出力されません。

対処方法

  対処は不要です。

D.2.1.13 マウントオプション atime 指定時の動作の変更

非互換内容

  マウントオプション atime 指定時の動作を変更しました。

  移行前:

  ファイルの最終参照時刻を、ファイルアクセスのたびに更新します。

  移行後:

  以前のファイルの最終参照時刻が、最終修正時刻または最終変更時刻より古いか同じ場合、ファイルの最終参照時刻を更新します。また、以前のファイルの最終参照時刻が1日以上古い場合も更新します。

対処方法

  移行前と同じ動作にする場合は、/etc/fstab に記載されているマウントオプション atime を strictatime に変更してください。