«前の日記(2010年03月01日) 最新 次の日記(2010年03月04日)» 編集

だめだめ日記

ツッコミの内容は検索サイトからの検索やサイトのレーティングに影響します。そのため問題があるキーワードを含むと思われるツッコミについては、当方の判断で削除することがあります。予めご了承ください。 なお、コメントspamと判断されたツッコミは自動的に消去されます。ご容赦ください。
2002|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|05|06|09|10|11|12|
2013|01|02|02|03|08|09|
2014|01|
2015|09|10|11|
2016|01|04|

執筆、翻訳などに関わった書籍類


【改訂新版】Samba [実践]入門

Linux教科書
LPICレベル3 300試験

マスタリング Nginx

実践 パケット解析 第2版

改訂版 Sambaのすべて

アンドキュメンテッド
Microsoftネットワーク

その他の書籍は だめだめ日記のおみせ@本店でどうぞ。



2010年03月03日 [長年日記]

[Samba] Samba 3.5.0 の時刻精度

リリースノート

Support for full Windows timestamp resolution has been added. 
This effectively makes us use Windows' full 100ns timestamp
resolution if supported by the kernel (2.6.22 and higher) and 
the glibc (2.6 and higher).

と書いてあったので、lenny (linux 2.6.24 & glibc 2.7) 環境で確認してみました。

時刻を取得する - GetFileTime関数とかを参考にして、Windows 上のシステム時刻からとってきた 100ns 単位の時刻を SetFileTime() するプログラムを作って確認してみたんですが、1秒単位の精度でしか扱ってくれてないっぽく見えます。

[Samba] Samba 3.5.0 の時刻精度(2)

考えてみれば、ファイルシステムが EXT3 だったのがいけなかったっぽいです。XFS でやったら問題なくうまくいきました。

以下のようなプログラムをコンパイルして

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
 
int main (int argc, char *argv[]) {
  struct stat sb;
  stat(argv[1], &sb);
  printf("Last file access:         %s", ctime(&sb.st_atim.tv_sec));
  printf("Last file access nano:    %d\n", sb.st_atim.tv_nsec);
}

stattest という名前のバイナリを作って

$ echo aaa > dame.txt
$ stattest dame.txt
Last file access:         Wed Mar  3 02:05:52 2010
Last file access nano:    799746954

のように、ナノ秒が設定されていることを確認のうえ、Windows 側でもこんなプログラム

#include <windows.h>
#include <stdio.h>
 
int main(int argc, char* argv[])
{
	FILETIME tmTime;
	HANDLE hFile;
 
	GetSystemTimeAsFileTime(&tmTime);
 
	hFile = CreateFileA(argv[1], 
		GENERIC_READ | GENERIC_WRITE,
		0, NULL, OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL, 0);
 
	SetFileTime(hFile, NULL, &tmTime, NULL);
 
	CloseHandle(hFile);
	return 0;
}

から、Samba 上のファイルの最終アクセス時刻を現在時刻で更新してみて、再度 Linux 側で参照してみると

$ stattest dame.txt
Last file access:         Thu Mar  4 01:06:19 2010
Last file access nano:    15625000

こんな感じで、ちゃんと更新されてました。もちろん Windows 側から Samba 共有上のファイルを GetFileTime() してちゃんとナノ秒(1秒より細かい単位)の時刻が取得できることも確認しています。

ナノ秒の時刻精度は EXT4 もサポートしているっぽいですね。

[Samba] Samba 3.5.0 の SMB2 プロトコルサポート

とりあえず、

  max protocol = smb2

の設定を行って、Windows 7 マシンから接続してみました。

結果は、以下のとおり、接続OKでした。192.168.135.249 が Windows 7 マシンで、192.168.135.247 が Samba 3.5.0 の稼動する lenny3 というマシンです。

SMB2プロトコルによる接続

Copyright (C) 2003-2017 TAKAHASHI, Motonobu
webmaster@monyo.com