Opendedupという重複排除機能搭載のLinux/Windows向けファイルシステム


2024/04/23追記

2024年4月現在、Opendedupのサイト自体は存続している。

githubでの開発状況を見ると2022年8月の修正が最後で、またまとめた形でのリリースは2016年8月のver 3.2.1が最後となっているようだが、メインサイトの”Changes“には「ver 3.5.7」、”Download“では「The most current version is 3.10.8.0」という記述があるので、開発は続いている模様。

とはいえ、サイト上の対応OS記述がUbuntu 14.04やWindows Server 2012だったりするあたりでちょっと怪しい・・・


Opendedupという重複排除機能搭載のファイルシステムを発見した。

ファイルシステム層はCで作られているが、そこより下層の重複排除処理やデータ書き込み処理部分についてはJavaで作られているとのこと。

重複排除以外にも、レプリケーション機能もあるようだ。
(SDFS Volume Replication)

Cloud Based Deduplication Quick Start Guideを見ると、Amazon S3や、Windows Azureのストレージを、Opendedupeで直接利用できるようだ。

Linux環境では、FUSEを使ってマウントする。

Windows環境では、Dokan(以前は http://dokan-dev.net/ だったが2021年時点では消滅)というWindows版FUSEみたいなのを使うが、Opendedup配布パッケージに組み込み済みなので別途インストールする必要はない。
なお、Dokanは「土管」が語源のようです。(Dokanライブラリの説明 http://dokan-dev.net/about/ )

OpenDedup Deduplication NAS ApplianceというOVFテンプレートの仮想マシンも用意されている。

こっちにはSDFS Manager というWeb GUIプログラムが同梱されているようなのだが、スクリーンショットを見る限りでは、かなりちゃんとしている雰囲気が・・・

Windows8のファミリーセーフティを有効にしてみた



私のメインパソコン(デスクトップ)は、6歳児との共用です。
3歳~5歳ぐらいにかけては、Windows7環境でユーザアカウントを使い分けて、使う時は、こういった操作でユーザを切り替えて、パスワードを入力すること、と使っていました。
去年、SSDにOSを入れ直した時、めんどうだったので、アカウント使い分けをやめてたのですが、今回、その運用を復帰させた、という感じです。

復帰させるついでに、標準で入っている「ファミリーセーフティ」を有効にして、いろいろ制限をかけてみることにしました。

導入した感想。

・最初のスタート画面を表示するだけでも、許可されていないアプリがあるのは・・・
ユーザ新規作成して、ログインした最初の画面に表示されるアプリで、ファイナンスとかがあるんですが、そのアプリおよびアプリが情報を取りにいくURLは、標準では許可されていないため、「保護者に許可を得てください」というメッセージが表示される。
まぁ、不要だと思うので「ピン留めをはずす」を実行してアプリを表示されないように変更した。

・想像以上にいろんなURLが引っかかる
Microsoftのページでも想像していた以上にフィルタに引っかかりました。
Windows8ストアを開くと「ゲーム」というジャンルがあるんですが、そこ全体が引っかかるとかw
まぁ、いらないアプリとかインストールされなくていいとは思いますが・・・

・Windows8ストアアプリは各ユーザ単位でのインストール
保護者アカウントでインストールすれば、全ユーザで使えるのかな?と思っていたら、そうではなかった。
標準のスタート画面に表示されいるタイルも、全部ユーザ単位でアプリの更新がかかっていた。

・ゲームとXBOX Liveとの連携
ゲームに関してはXBOX Liveとの連携をしないと、いろいろおもしろくなさそうな感じ。
「Cut the Rope」

・有料アプリを買いにくい
子どもアカウントに、保護者アカウントから支払い情報を登録、という感じになっているんだが、勝手に支払われないような設定、というのがやりにくい感じ。
保護者アカウントのパスワード以外に、購入用パスワードを設定できたらなぁ・・・とか

まぁ、いろいろありますが、有用に使えてます。

MZK-WD300DHってもしかしてMiracastになるんだろうか?



PLANEX Directからメールが来た。

「残り僅か!ワンセグチューナー、Wi-Fiディスプレイシステム最終価格で販売中!」だそうな

Wi-Fiディスプレイシステムって、どんなんだろ?と見てみると、MZK-WD300DHというものだった。

ぶっちゃけ、あまし評判はよくないようだ。

ただ、なんかうたい文句的にはいまで言うMiracastっぽいけど、別のモノ、ということにはなっている。

PLANEXページからドライバをダウンロードしてみた。
3種類のドライバと、関連ソフトの詰め合わせだった。

「92_DU_Driver」は、Realtek RTL8192D USBドライバ(rtl8192du.sys)でバージョンは「1002.1.816.2011」(日付:2011/11/21 0:00)

「WiDi_Driver」は2種類。
「RTKVideo」PLANEX Wifi Display VGA Adapter(RtlvVga.sys)でバージョン「1005.2.622.2011」(日付:2011/11/21 0:00)
「RTKAudio」PLANEX Wifi Display Audio Adapter(RtlvSound.sys)でバージョン「1005.1.526.2011」(日付:2011/11/21 0:00)
どちらもinfファイル内には「Realtek Semiconductor Corporation」の文字。

この情報を持って、チップメーカであるRealTekのページを探すと、以下がでてきた。

RTL8192DU-VC
Single-Chip IEEE 802.11a/b/g/n 2T2R WLAN Controller with USB 2.0 Interface
(PCI Express対応だとRTL8192DE-VCになる)

そして、プレスリリース系として、以下が・・・

2012年9月19日:「Realtek Selected for the Wi-Fi CERTIFIED Miracast™ Test Bed
 Miracastのテスト環境にRealtekが選ばれました! RTL8192DE, RTD1185,RTL8192DUです!

2013年1月7日:「Realtek to Demonstrate Full Range of Connectivity and Multimedia Solutions during 2013 CES
 RealShare Smart Display(RTD1185 Digital Media Processor とRTL8192DU Wi-Fi moduleの組み合わせ)

もしかして!?と一瞬期待をしてみる。

RTL8192DU関連のソフトウェアは、RTL8192DU-VC用としていくつか提供されていた。
こちらの中身は、普通に無線LAN用ドライバだった。

よくよく確認してみれば「RTL8192DU」自体は、普通のWiFiアダプタとして使っている普通のチップでもあった。
ただ、Miracastで使えるだけの能力を持っている、というだけだった。

つまりは、「WiDi_Driver」の方が本命。

で・・・「WiDi_Driver」に相当するものをRealTekページで探してみたけど見付からない。

いろいろ探していると
Dishing Tech:「Realtek Wi-Fi Direct Programming Guide」という記事が見付かった。

「Wireless_tools_porting_guide.pdf」という資料を元に解説をしている。
入手元を調べたところ、RealtekのドライバページにあるUnix(Linux)用のファイルに含まれていた。
v4.0.0_4074.20120518からWiDiのサポートが入ったらしい。

この資料の中に、AndroidでWiFi Directに対応させるためのコードとかも含まれているようだ。

なので、もしかしたら、送信側はRTL8192DUを使っていれさえすれば対応できるかもしれない。

しかし、受信側は、改造できなさそうなので、対応は難しいような気がする・・・

えぇ・・・気がする、というところ。
もしかすると動くのかもしれませんが・・・
ダレカ、チャレンジしていませんか?

TEMPerのUSB温度計をLinuxにつなげた



上海問屋で販売しているUSB温度計DNSB-35137と同じものであろうTEMPer goldをLinuxサーバにつなげてみた。

CentOS5.8では、以下の様な認識となりました。

 # dmesg|tail
usb 3-1: new low speed USB device using uhci_hcd and address 2
usb 3-1: configuration #1 chosen from 1 choice
input: RDing TEMPer1V1.2 as /class/input/input3
input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPer1V1.2] on usb-0000:00:1d.1-1
hiddev96,hidraw96: USB HID v1.10 Device [RDing TEMPer1V1.2] on usb-0000:00:1d.1-1
# lsusb -v
Bus 003 Device 002: ID 0c45:7401 Microdia 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0c45 Microdia
  idProduct          0x7401 
  bcdDevice            0.01
  iManufacturer           1 RDing
  iProduct                2 TEMPer1V1.2
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           59
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      65
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      41
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10

(2013/01/17追記: iSerialは「0」固定なので、個体識別ができません。USBのBUS/DEVICEアドレスの違いで識別する必要があります)

温度を取得するには、「http://www.isp-sl.com/pcsensor-0.0.1.tgz」が一番簡単だと思います。
ドライバ等は特にインストールせず、標準HIDドライバを利用して操作をおこなってくれます。
(2013/01/24追記: 上記のpcsensor-0.0.1.tgzを元に改良したドライバを公開中改良版ドライバ)

配布tgzの中には、ソースファイルと、glibc2.7環境用の32bitバイナリが含まれています。

# ls
99-tempsensor.rules  Makefile  pcsensor  pcsensor.c
# file pcsensor
pcsensor: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), not stripped
#

pcsensorを実行してみてエラーにならないか確認します。

# ./pcsensor
./pcsensor: /lib/libc.so.6: version `GLIBC_2.7' not found (required by ./pcsensor)
#

上記のようにエラーとなるようであれば、コンパイルしなおします。

# rm pcsensor
rm: remove 通常ファイル `pcsensor'? y
# make
cc -DUNIT_TEST -o pcsensor pcsensor.c -lusb
#

これで改めて実行してみます。

# ./pcsensor
2012/12/25 14:36:27 Temperature 74.08F 23.38C
#

pcsensorコマンドはいくつかオプションがあります。

# ./pcsensor -h
pcsensor version 0.0.1
      Aviable options:
          -h help
          -v verbose
          -l[n] loop every 'n' seconds, default value is 5s
          -c output only in Celsius
          -f output only in Fahrenheit
          -m output for mrtg integration
#

・詳細表示

# ./pcsensor -v
usb_set_debug: Setting debugging level to 255 (on)
usb_os_init: Found USB VFS at /dev/bus/usb
usb_os_find_busses: Found 003
usb_os_find_busses: Found 002
usb_os_find_busses: Found 001
usb_os_find_devices: Found 001 on 003
usb_os_find_devices: Found 002 on 003
skipped 1 class/vendor specific interface descriptors
skipped 1 class/vendor specific interface descriptors
error obtaining child information: Inappropriate ioctl for device
usb_os_find_devices: Found 001 on 002
usb_os_find_devices: Found 001 on 001
lvr_winusb with Vendor Id: c45 and Product Id: 7401 found.
USB error: could not detach kernel driver from interface 0: No data available
Device already detached
USB error: could not detach kernel driver from interface 1: No data available
Device already detached
01 01 6f 20 64 61 74 61
01 80 33 01 00 00 00 00
80 02 17 80 65 72 31 46
01 82 77 01 00 00 00 00
82 01 00 80 65 72 31 46
01 86 ff 01 00 00 00 00
54 45 4d 50 65 72 31 46
31 2e 31 50 65 72 31 46
01 80 33 01 00 00 00 00
80 02 17 60 65 72 31 46
2012/12/25 14:37:42 Temperature 74.08F 23.38C
#

・摂氏のみ表示

# ./pcsensor -c
2012/12/25 14:37:57 Temperature 23.50C
#

・華氏のみ出力

# ./pcsensor -f
2012/12/25 14:38:02 Temperature 74.30F
#

・MRTG向けの出力

# ./pcsensor -m
23.50
23.50
14:38
pcsensor
#

githubのedorfaus / TEMPeredは、Cmake 2.8以上を要求してきており、CentOS5.8環境はCmake 2.6.4なのでコンパイルできない、という状態だったので、断念しました。


もうちょっと測定してみた結果について「USB温度計で測定してみたメモ」にて記載しています。

TEMPerのUSB温度計が届いた



上海問屋のUSB温度計はPCsensor OEMで紹介したUSB温度計ですが、上海問屋では売り切れだったので、DealExtremeで購入しました。

12/11:発注
12/13:DXから発送連絡
12/15:上海の郵便局の消印
12/22:東京に到着

という感じで、RegisterMailでないのに、2週間で届くというなかなかの好タイムでした。

DVC00113.JPG
DVC00114.JPG

こんなパッケージで届きました。

とりあえず、Windows8パソコンに指してみたところ、Windows標準のHIDドライバで認識されました。
認識直後から現在温度が自動的に入力される、という自体に陥りました。

ですが、とりあえず、1回、はずして、もう1回さしたところ、それは止まりました。
が・・・何かあったら、自動入力されそうで、ちょっと怖いです・・・

Linuxサーバでの実験は明日おこなう予定です。

なお、USBでの認識は以下でした。

HID\VID_0C45&PID_7401&REV_0001&MI_00

その後、Windows PC 4台に接続してみたのですが、いきなり入力状態にはなりませんでした。
なんだったんでしょうかねぇ・・・・