ラベル DragonFly の投稿を表示しています。 すべての投稿を表示
ラベル DragonFly の投稿を表示しています。 すべての投稿を表示

2011年5月1日日曜日

DragonFly 2.10

http://www.dragonflybsd.org/release210/

とりあえず入れてみる。例によって VMware 上だけど。
gcc 4.4 になったんだなぁ。

いつからか pkgin てーパッケージが入るようになっていて、これよさげ。
http://pkgin.net/

2010年11月3日水曜日

DragonFly 2.8

DragonFly Release 2.8
BIND やら libevent がベースから無くなったみたい。
x86_64 で 512Gの swap をデフォルトでサポート、てどういう時に使うんだろう

なにはともあれ
src-update して branch を DragonFly_RELEASE_2_8 に切り替えて ビルド。

bash-4.1$ uname -a
DragonFly fred.localdomain 2.8-RELEASE DragonFly 2.8-RELEASE #0: Wed Nov 3 12:37:44 JST 2010 root@fred.localdomain:/usr/obj/usr/src/sys/GENERIC i386

おわり。

pkgsrc git mirror が変わってたの知らなかったな。
HEADS UP - pkgsrc.git users - Major changes

その後 pkg_rolling-replace -rsuv した。嗚呼長かった・・。

2010年6月6日日曜日

DragonFly で普段使いの環境を作ってみる - その2

X まわりがだいぶわからん。
以前は xf86config でごそごそできてたんだけどなぁ。あれー。

X -configure でやるのがふつうなのかしら、、

http://wiki.netbsd.se/How_to_install_modular_Xorg

このへんでくじけてしまうから、Ubuntu だとラクなんだよね、、。うーむ。

2010年5月16日日曜日

DragonFly で普段使いの環境を作ってみる - その1

VMware Fusion でちょろっと使ってはみていたものの、
普段使いの環境として使えるかなーと思ったのでものは試し。
pkgsrc はいまだに不慣れ。

・2.6 をいれる
2.6.3
http://www.dragonflybsd.org/release26/

・ファイルシステム
HAMMER を選択 -> / を HAMMER, /boot は ufs に
ディスクひとつしかないけどね
/boot は ムダに 2G割り当て。
> mount -t hammer,ufs
ROOT on / (hammer, local)
/dev/serno/WD-WX30A89S7592.s1a on /boot (ufs, local)
> df -h -t hammer,ufs
Filesystem Size Used Avail Capacity Mounted on
ROOT 142G 6.6G 136G 5% /
/dev/serno/WD-WX30A89S7592.s1a 2.0G 125M 1.7G 7% /boot

・インストール後の更新
/usr で
# make src-create pkgsrc-create

/usr/src で
# git checkout -b DragonFly_RELEASE_2_6
# git branch

以下は /usr/src/Makefile の通り。 make upgrade しなくて FreeBSD のまんま mergemaster してるのだけど特に問題ないな・・・ちゃんと見てない。。
# make -j2 buildkernel buildworld
# make installkernel
# make installworld
# make upgrade
# reboot

・pkgsrc で育て始める
pkgsrc のオプションは /usr/pkg/etc/mk.conf に書く。
デフォルトでは vim が拒否されるのね・・・ってことで
ACCEPTABLE_LICENSES+= vim-license を書いたり。
/usr/pkgsrc/licenses 以下にいろいろ置かれているのでライセンスみてみたいひとはここみるといいね。
オリジナルのBSDライセンスと修正BSDライセンスと二条項BSDライセンスてどう違うのよ?てのもすぐわかる。

ついつい pkgsrc で make と打って怒られるなぁ。。

いろいろ入れたら、次書こう

2010年3月30日火曜日

DragonFly 、2.6 のブランチが切られた

やったねたえちゃん!

2.6 branched, 2.7 now for development
http://www.shiningsilence.com/dbsdlog/2010/03/29/5650.html


追記)
VMware Fusion で動かしてるものを 2.6 にした
bash-4.1$ uname -mrs
DragonFly 2.6-RELEASE x86_64

手順は書くまでもないけれど以下
# cd /usr/
# make src-update
# cd /usr/src/
DragonFly_RELEASE_2_6 を確認して checkout
# git branch -r
# git checkout DragonFly_RELEASE_2_6
# git branch -l
DragonFly_RELEASE_2_4
* DragonFly_RELEASE_2_6
master
buildworld, buildkernel
# nice make -j4 buildworld buildkernel
後は割愛。

DragonFly の場合、quickworld, quickkernel というターゲットもあるのでバージョンが変わるとき以外はだいたいそっちを使ってるな。ビルドに失敗したら潔く build〜〜を使う。

2010年1月31日日曜日

Michael Neumann というひとの HAMMER プレゼン資料

New HAMMER presentation

こんなかんじ、か?
---
特長として、(outstanding てこの場合「優れた」の意か)
・細粒度の自動スナップショット
・マスタ - マルチスレーブのレプリケーション

細粒度の自動スナップショット
・ディスクへフラッシュするたび(30秒毎)に新しいバージョンのファイルシステムを作成
・明示的に伝えない限り、データがなくなるこたーない
・アンドゥで古いバージョンのファイルを復元できる
・ファイルは @@トランザクションID 付きのファイル名でアクセスできる

マスタ - スレーブ レプリケーション
・マスタのファイルシステムは段階的にローカル、リモート(ssh経由で)のレプリケーションを 1つ以上の read-only なスレーブに対して可能
masterhost> hammer pfs-master /www # create master filesystem
masterhost> hammer -b 100k mirror-stream /www slavehost:/www &
slavehost> hammer -b 1m mirror-stream masterhost:/www /www &
・mirror-stream はバックグラウンドで動いて、なんか起きたらすぐに変更部分が転送される

(デモのスライド)
You --[upload]--> Server --[replication in real-time]--> notebookMachine

B+木が図示されてる. 9枚. ひとまず割愛。(すぐにはよくわからん・・)

DragonFly の究極の目標
・Single-System-Image Clustering
・クラスタのマシン群が「ひとつのシステム」に
・一つのプロセス空間
・一つのファイルシステムとして見える

(これはプロジェクト開始時からの目標のはず。過去の Matthew Dillon のインタビュー記事にもあった。個人的には、これができたらクラウド(?) 環境にもいいんじゃね、な気がしてる。できたときにはクラウドが死語になってるかな・・)

一つのファイルシステム(従来の
・Central Networked File System
・SPOF
・スケールしないぜ
                  +---- [Machine]
|
[Central NFS] ----+---- [Machine]
|
+---- [Machine]

一つのファイルシステム(HAMMER の場合
・マスタ - スレーブ でレプリケートされたファイルシステム
・(今の)HAMMER はこれ
・ホントの Single System Image な操作はできない
    +------------+------------+
| | |
Master(r/w) Slave(r/o) Slave(r/o)

一つのファイルシステム(未来のHAMMER の場合
・マルチマスタでレプリケートされたファイルシステム
・スケーラブルかつ耐障害性
・キャッシュの一貫性を管理するシステム (Cache Coherency Management System: CCMS) の実装は容易
・HAMMER は将来これをサポートするために設計された!
                CCMS
+------------+------------+
| | |
Master(r/w) Master(r/w) Master(r/w)

文献
http://kerneltrap.org/HAMMER
http://www.dragonflybsd.org/hammer/
---

Backup Slides は略

B+木について簡単に解説してあるサイト探して見てみたい。

2010年1月28日木曜日

DragonFly - hammer version-upgrade

VMware Fusion 上で、DragonFly を / 領域を hammer にして利用。(/boot は ufs)
hammer コマンドをぺちぺち叩いていたらバージョンが確認でき、バージョンアップもできるようなのでいざ実行。
(バージョン 2 -> バージョン 3 へ。あまりよくわかってない)

% hammer version /
min=1 wip=5 max=4 current=2 description="New directory entry layout (DragonFly 2.3+)"
available versions:
1 NORM First HAMMER release (DragonFly 2.0+)
2 NORM New directory entry layout (DragonFly 2.3+)
3 NORM New snapshot management (DragonFly 2.5+)
4 NORM New undo/flush, faster flush/sync (DragonFly 2.5+)
% hammer version-upgrade / 3
hammer version-upgrade ioctl: Operation not permitted
% sudo hammer version-upgrade / 3
Password:
hammer version-upgrade: succeeded
NOTE! Please run 'hammer cleanup' to convert the
/snapshots directories to the new meta-data
format. Once converted configuration data will
no longer resides in /snapshots and you can
even rm -rf it entirely if you want.

言われたとおりに cleanup を実行

% sudo hammer cleanup
cleanup / -(migrating) (6 snapshots)index 6
HAMMER UPGRADE: Moving snapshots
Moving snapshots from /snapshots to /var/hammer/root
handle PFS #0 using /var/hammer/root
snapshots - run
prune - run
rebalance - run..
reblock - run....
recopy - skip
cleanup /var -(migrating) (6 snapshots)index 6
HAMMER UPGRADE: Moving snapshots
Moving snapshots from /var/snapshots to /var/hammer/var
handle PFS #1 using /var/hammer/var
snapshots - run
prune - run
rebalance - run..
reblock - run....
recopy - skip
cleanup /tmp -(migrating) HAMMER UPGRADE: Moving snapshots
Moving snapshots from /tmp/snapshots to /var/hammer/tmp
handle PFS #2 using /var/hammer/tmp
snapshots - disabled
prune - run
rebalance - run..
reblock - run....
recopy - skip
cleanup /usr -(migrating) (6 snapshots)index 6
HAMMER UPGRADE: Moving snapshots
Moving snapshots from /usr/snapshots to /var/hammer/usr
handle PFS #3 using /var/hammer/usr
snapshots - run
prune - run

(snip)

% hammer version /
min=1 wip=5 max=4 current=3 description="New snapshot management (DragonFly 2.5+)"
available versions:
1 NORM First HAMMER release (DragonFly 2.0+)
2 NORM New directory entry layout (DragonFly 2.3+)
3 NORM New snapshot management (DragonFly 2.5+)
4 NORM New undo/flush, faster flush/sync (DragonFly 2.5+)

無事に完了した。

負荷がそれなりにかかっている、実サービスしているような環境下で実行した場合にも問題なくできるのかな。

2010年1月24日日曜日

DragonFly についてかかれたエントリ

をみつけたので張っておく。数年前のもの。
出た当初、FreeBSD 4.8 を入れて アップグレードしたなー。

DragonFly BSD 1st impression
DragonFly BSD 2nd Step - Project Overview
当時の事情なので、パッケージシステムの話題は dfports になってる。今は pkgsrc.

日本人と思われる開発者は YONETANI Tomokazu さんだけなのかな。
・・・いや、team をみると
Noritoshi Demizu さん
Max Okumoto さん (日系?)
allbsd の Hiroki Sato さん
と、何人か確認できる。

2010年1月23日土曜日

DragonFly での git

バージョンあげない場合、インストール後は /usr 以下で make src-update してればおk。
src-update ターゲットで /usr/src に cd 後、git pull してくれる。

「ちょいと先端のソースでビルドして、つかってみましょうかねぇ」となると、1つ操作が必要。
2.4.1 いれた後の /usr/src は DragonFly_RELEASE_2_4 になっていたので master に。
% git branch
* DragonFly_RELEASE_2_4
master
/usr/src/sys/conf/newvers.sh をみてみる。
% grep ^BRANCH /sys/conf/newvers.sh|head -1
BRANCH="RELEASE_2_4"
checkout する。
% sudo git checkout master
Switched to branch 'master'
% git branch
DragonFly_RELEASE_2_4
* master
切り替わったのでおなじく /usr/src/sys/conf/newvers.sh をみてみる。
% grep ^BRANCH /sys/conf/newvers.sh|head -1
BRANCH="DEVELOPMENT_2_5"
あとは make buildworld なり buildkernel なりして、再起動すると・・
% uname -mrs
DragonFly 2.5.1-DEVELOPMENT x86_64
% sysctl kern.osrelease
kern.osrelease: 2.5.1-DEVELOPMENT
はいできた。あくまでいちユーザなので、 DEVELOPMENT というのに後ろめたい気持ちがあるのは気のせいだ。
ソース修正したいなーという場合は master はいじらずにてきとうに branch 作ってそっちで作業、 merge しませう、といったことがここに書かれている。

2010年1月21日木曜日

[FreeBSD] [DragonFly] development(7)

DragonFly はいつからか git に移行したので、development(7) をみて使ってみるとなんとなく git の使い方がわかってくる。
この development(7)、FreeBSD にもあったのを最近知る。 HISTORY に書いてあるし、、。
オリジナル書いたのが Matthew Dillon (以下 Matt)で、その Matt は DragonFly の founder。

DragonFly の development(7)
FreeBSD の development(7)

設計思想の違いから(?)、2003年に FreeBSD 4.8 から fork 、と。

mailing list のアーカイブ漁ればはっきりするけど、
gitweb のほうをみるに、2.0のリリースあたりで git へ移行したのかな。

2009年2月11日水曜日

マルチスレッド・プログラミングについてきかれても困る、の巻

タイトルのとーり。

最初、「Dragonfly てどうなの?」と聞かれた。

(瞬時に、「てめぇで調べろや!」と思った。思っただけね。)

プロダクション環境で使ってる事例は聞いたことがないなー、(どこかにはあるのだろうけど) もしかして HAMMER でも使いたいのかなーと思って聞いてみると、

・あるマルチスレッドなプログラムを作成中
・FreeBSD, GNU/Linux で動かしてみている
・或る条件で(聞いたけど忘れた) 、CPUをやたらと食うようになる(但し動作にはなんら影響なし)
・プログラムの書き方が悪いのかはわからない
・ほかのOSだとどうだろね

といったことらしい。。
libkse やら libthr 周辺の話題はそれとなーく追ってたり、MySQL でベンチとって比較してたりする記事をよく目にしていたりはしたものの、

そもそもぼく自身はマルチスレッドプログラミングなんぞしてない

ので、ぼくに聞くだけ無駄なのよね。。それに、「何が問題なのか」がはっきりと汲み取れなかったりして。。

Dragonfly のスレッドライブラリは FreeBSD の libthr の中のひとと作者がおなじ (David Xu) はずで、それをしれっと伝えた。libthread_xu.so て名称だったようなきもするなぁ。デフォルトのスレッドライブラリになったのは確かそんな前でもないんで、あんまり枯れてないんじゃないのかなぁとも伝えた。詳しくは知らないけども。

あと、別のOSでごにょごにょする余裕があるなら、そこは Solaris とか、、
windows で pthreads-win32 とか、、(Google Chrome でも使われてるっぽいし! about:credits でそんなのがみてとれる) すすめてみた。

もし自分が同じような状況で、「正しく」コードをかいていたなら、スレッドプログラミングなMLにポストしてみるかなぁ。あればだけど。

2008年7月27日日曜日

DragonFly 2.0 on Parallels Desktop

File -> New...

・ installation mode の選択
ラジオボタン Custom を選択 -> Next

・ OS の選択
OS Type .... DragonFly は当然ながら無いので、
FreeBSD を選択 (4.8 から fork したし)

OS Version ... 適当に FreeBSD 6.x を選択 -> Next

・メモリ使用量の設定
256MB でよしとする

・仮想ハードディスクオプションの選択
Create a new hard disk image

・仮想ハードディスクの容量
少なめで 12000 MB
ラジオボタンは Expanding(recommend) のまま

・ネットワークオプション
Bridge Ethernet を選択 -> Next

・仮想マシン名
DragonFly

more options で Create icon on Desktop のチェックを外す。アイコン要らん。

・パフォーマンスの最適化
Virtual machine (recommended) のまま -> Next

インストールCD いれろと言われるので more options で、落としておいた dfly-2.0.0_REL.iso を選択

Start FreeBSD 6.x installation チェックのまま、Finish

あとは boot 後 installer [Enter] してインストーラに入り、ふつーにいれる。



- 入れた後
・ pkgsrc とってくる
# cd /usr (ここに Makefile がおいてある)
# make pkgsrc-checkout (しばし放置)

とってきたら /usr/pkgsrc/[カテゴリ]/[アプリケーション] 以下で
# bmake install

すれば入る。個人的には bmake package かな

** bmake は特に指定しなければ、OSインストール時にパッケージで入れてくれる
(/usr/pkg/bin/bmake)

# pkg_info bmake
Information for bmake-20051105nb4:

*** PACKAGE MAY NOT BE DELETED ***
Comment:
Portable (autoconf) version of NetBSD 'make' utility

Requires:
bootstrap-mk-files-[0-9]*

Description:
bmake is a portable version of NetBSD's make(1) utility,
conveniently packaged using a configure script, for other environments
which may lack NetBSD's libraries, regular expression code, etc.

Homepage:
http://www.crufty.net/help/sjg/bmake.html

*** PACKAGE MAY NOT BE DELETED ***

apache2.2 で worker MPM 指定で入れる例
# cd /usr/pkgsrc/www/apache22
# bmake APACHE_MPM=worker bmake install

pkgsrc に portupgrade のようなのあるのかな。。

・起動周り
rcNG はけっこー前に merge されてるので FreeBSD と同じように設定。
(rcNG の元は NetBSD だけども)


・HAMMER Filesystem
/sbin/hammer にそれ用のコマンドあり。まだいじくってない。

# hammer
hammer -h
hammer [-v] [-t seconds] [-c cyclefile] command [argument ...]
hammer synctid [quick]
hammer namekey[32]
hammer prune
hammer prune-everything
hammer snapshot [filesystem]
hammer bstats [interval]
hammer iostats [interval]
hammer mirror-read [begin-tid]
hammer mirror-write [file ...]
hammer mirror-dump
hammer mirror-copy [[user@]host:] [[user@]host:]
hammer reblock[-btree/inodes/dirs/data] [fill_percentage]
hammer pfs-status
hammer pfs-master [options]
hammer pfs-slave [options]
hammer pfs-update [options]
hammer pfs-upgrade
hammer pfs-downgrade
hammer pfs-destroy
hammer history[@offset[,len]] ...
hammer -f blkdev[:blkdev]* [-r] show [offset]

man 見ると、バージョン 1.11 からあるらしい

HISTORY
The hammer utility first appeared in DragonFly 1.11.


・gcc
3.4.6 と 4.1.2
# gcc -v
Using built-in specs.
Target:
Configured with: DragonFly/i386 system compiler
Thread model: posix
gcc version 4.1.2 (DragonFly)
# env CCVER=gcc34 gcc -v
Using built-in specs.
Configured with: DragonFly/i386 system compiler
Thread model: posix
gcc version 3.4.6 [DragonFly] (propolice, visibility)

2008年7月23日水曜日

DragonFly 2.0

HAMMER filesystem がどんなもんか気になるなー。

DragonFly - July 2008 Release 2.0.x Download

HAMMER filesystem released!

* Crash recovery on-mount, no fsck.
* Fine-grained snapshots, snapshot management, snapshot-support for filesystem-wide data integrity checks.
* Historically accessible by default.
* Mirroring: Queueless incremental mirroring, master to multi-slave.
* Undo and rollback.
* Reblocking.
* Multi-volume, maximum storage capacity of 1-Exabyte.