nDiki : aufs

2007年12月23日 (日)

aufs を使って Web サイトのドラフト作成する

この nDiki はローカル PC 上で Emacs で記事ファイルを書き、出来上がったら UnisonWeb サーバと同期させる形でアップロード・公開している。

この方法で一つ問題なのは「書きかけの記事ファイル」の扱いが面倒なこと。 書きかけの記事ファイルがある状態で Web サーバと同期するとそれが公開されてしまうのでまずい。しかし完成している記事ファイルがあるならばそちらは同期して順次公開したい。 同期する時には書きかけの記事ファイルを退避させればいいのだが、思いっきり面倒。

ということで手元で公開用 (Web サーバ と同期用)のディレクトリツリーと、ドラフト用(ローカルの Web サーバでのレビュー用)のディレクトリツリーを分けられるようにすることにした。 この2つのディレクトリツリーの差分となる草稿・更新ファイルは aufs を使うことで簡単に管理することができる。

aufs

aufs は stackable unification filesystem の一つ。 同様なものとしては UnionFS がある。 UnionFS よりも aufs の方が評判が良いようなので今回は aufs を使うことにした。

aufs では複数のディレクトリ(ブランチと呼ぶ)をオーバーレイさせて、1つのディレクトリとして扱うことができる。 公開用ディレクトリツリーに、ドラフト用ディレクトリツリーをオーバーレイさせることで、元のディレクトリには変更を加えることなく透過的に変更できる仮想的なディレクトリツリーを作ることができる。

aufsインストール

Debian GNU/Linux sid へはkernel 再構築とあわせて module-assistant でインストールした。

マウント

以下のように3つのディレクトリを作ってマウントする。

/home/naney/www.naney.org
公開用ディレクトリツリー。本番モノ。公開サーバと同期する。
/home/naney/draft.naney.org
草稿や修正されたファイルが書き込まれるディレクトリツリー。
/home/naney/next.naney.org
公開用ディレクトリツリーに、草稿や修正されたファイルが仮想的にオーバーレイされたディレクトリツリー。プレビュー用。
 mount -v -t aufs -o br:/home/naney/draft.naney.org=rw:/home/naney/www.naney.org=ro none /home/naney/next.naney.org

公開ディレクトリツリーは read only に、草稿用のディレクトリツリーは read - write になるように指定する。

これで /home/naney/www.naney.org 以下はいじらないまま、/home/naney/next.naney.org 上で草稿を書いたりファイルを編集したりすることができる。 /home/naney/next.naney.org 以下で追加したファイルや、変更したファイルは aufs が /home/naney/draft.naney.org 上に保存してくれる。

完成したものを /home/naney/draft.naney.org から /home/naney/www.naney.org に順次反映させ(移動し)、公開サーバへ同期することで公開していくことができる。

手元ではいろいろ書き散らせておけるのは、これは便利。

マウントオプションは他にいろいろあるようなので、こまかい設定は見直すかも。

その他

ファイルシステムレベルの処理なので、アプリケーション側では何も手を加えなくてもよいのが良い。

今回は公開用とドラフト用としたが、公開用と未公開用をローカルでミックスして表示するようにしたり、複数ユーザのコンテンツディレクトリを仮想的に1つにまとめたりと、いろいろ面白い使い方ができそうだ。

スポンサード リンク

Debian Linux kernel 2.6.23 をビルドする。

ThinkPad X31 に入れている Debian GNU/Linux sidLinux kernel を随分アップデートしていなかった(2.6.17 を使用中)。 今日 aufs を入れついでに、一緒に最新(2.6.23)をビルドすることにした。 Debian kernel パッケージ構築は去年の8月以来。

今回は linux-patch-aufs を入れておいて、aufs 用のパッチを当てる。

 #apt-get build-dep linux-image-2.6.23-1-686
 #apt-get install linux-source-2.6.23 linux-patch-aufs
 #exit
 $mkdir -p /usr/local/src/linux
 $cd /usr/local/src/linux

 $tar jxvf /usr/src/linux-source-2.6.23.tar.bz2
 $cd linux-source-2.6.23
 $make menuconfig
 $make-kpkg clean

 $fakeroot make-kpkg --added-patches put_filp,lhash,splice,ksize,sysfs_get_dentry --revision=sebastian.1.0 kernel_image
 $cd ..
 $su
 #dpkg -i linux-image-2.6.23_sebastian.1.0_i386.deb

パッチが一部 2.6.22 用で 2.6.23 には当たらなかったが、よしとしておく。 ここで再起動。次に MADWIFIaufsインストール

 module-assistant prepare
 module-assistant auto-install madwifi
 module-assistant auto-install aufs

いつも入れている shfs も同様に入れようと思ったがこちらはコンパイルエラー。 頻繁に使うわけではないので、とりあえずほっておくことにする。

コンパイルが面倒なのでそろそろ Debian 公式のを使おうかと思ったが、試してみたところ

ということ NG。 やはり自前でビルドしなければならないことを再確認。

[ 12月23日全て ]

2008年1月4日 (金)

今日のさえずり - アイスも冷凍食品も全滅っぽい

[ 1月4日全て ]

2008年1月5日 (土)

aufsinotify を使ってブランチ上の直接の変更をすぐに反映させる

最近 aufs を使って Web サイトのドラフトを作成する(記事)ようにしているが、使っていて1つ不具合が出てきた。 今の設定だと、ブランチ側(今回の使い方だと公開ディレクトリツリー)のファイルを直接変更しても、aufsキャッシュによりマウントしたディレクトリ側ではその変更されたファイルではなく、変更される前のファイルが見えてしまう。 これはちょっと不便。

マニュアルを見るとマウント時のオプションで udba=inotify を指定して inotify を使うようにすれば良いとのこと。

早速指定してみたがマウント時にエラー。 どうやら udba=inotify を使えるようにモジュールをコンパイルしていなかったようだ。

aufs モジュールを作り直し (Debian GNU/Linux sid)

aufsマニュアルを見ると CONFIG_INOTIFY と CONFIG_AUFS_UDBA_INOTIFY を有効にする必要があるとある。前者は Linux kernel ビルド時に指定済み。

後者を有効にして aufs を作り直す必要がある。

module-assistant だと設定の仕方がわからないので、aufs.tar.gz2 展開して直接 make-kpkg modules_image でビルドするようにした。

aufs.tar.gz2 を展開後、debian/conf.mk を編集して

  • export CONFIG_AUFS_HINOTIFY = y 行を追加
  • EXTRA_CFLAGS 指定のところで、-DCONFIG_AUFS_HINOTIFY を追加

とし、後は普通に make-kpkg を使う。 マニュアルとは設定名/マクロ名が違うので、ちょっとはまったがこれで udba=inotify を使えるようになった。

マウントする

前回のマウント方法をちょっと修正して以下のようにする。

 mount -v -t aufs -o br:/home/naney/draft.naney.org=rw:/home/naney/www.naney.org=ro,udba=inotify none /home/naney/next.naney.org

これで /home/naney/www.naney.org 以下を修正すると、すぐさま /home/naney/next.naney.org の方でも反映されるようになった。

メデタシメデタシ。

[ 1月5日全て ]

2009年2月5日 (木)

今日のさえずり - 爺さんがゴツい爺ショックケータイ持っているとカッコイイ

naney:3255763316

2009年02月03日

  • 08:38 豆まき完了。 [mb]
  • 09:51 今日は現金輸送車2台来てる。 [mb]
  • 10:30 腹減ってないけれどオニギリ食べておく。 *P3
  • 11:34 今日も千葉駅1分乗り換え。L:馬喰町駅 [mb]
  • 11:59 よっかかっている方の電車のドアが開いてビビった(ずっと反対側が開いてたもんで)。 [mb]
  • 12:00 津田沼駅め。L:津田沼駅 [mb]
  • 21:59 さて、飯食ったので Linux kernel ビルドするか。 *P3
  • 23:44 ビルドした Linux kernel 2.6.26 で起動したら hda 認識失敗するでやんの。作り直しか。 *P3

2009年02月04日

2009年02月05日

  • 08:44 京浜東北線北行の中。新橋前で止まってる。 [mb]
  • 12:58 弁当移動販売の「江戸一番」来なくなったと思っていたら、ちょっと先の場所に売りに来ていたらしい。 [mb]
  • 13:00 情報大航海プロジェクトでヘルスケア家計簿サイトって、結局どこを目指しているのだ? *P3
  • 13:35 SKK でよく「確認する」を「角煮する」と入力してしまう。 *P3
  • 18:54 ヨドバシカメラ来た。コンセントの部品あるかな。 [mb]
  • 19:17 前に座っているちょっと年配のサラリーマンが、図書館の印が押されいる「動物のお医者さん」読んでる。 [mb]
  • 22:33 外が騒がしいと思ったら働く自動車で働くおじさんが道路の排水口掃除してた。 *P3
  • 22:42 赤と黒 [Flickr] http://tinyurl.com/abmklw
[ 2月5日全て ]

2009年2月7日 (土)

Debian Linux kernel 2.6.26 にアップデート

ThinkPad X31 に入れている Debian GNU/Linux sid でしばらく Linux kernel 2.6.23 を使っていたが、TrueCrypt 6.1a を入れたら「2.6.23 以下じゃヤバいよ」と表示されたので 2.6.26 にアップデートすることにした。 Debian 標準イメージを入れてみたが、やはり今まで通りサスペンドできないので、今回もビルドしなおし。

追加で入れるモジュールは aufsMADWIFI

 #apt-get build-dep linux-image-2.6.26-1-686
 #apt-get install linux-source-2.6.26 aufs-source madwifi-source
 #exit

 $mkdir -p /usr/local/src/linux
 $cd /usr/local/src/linux

 $tar jxvf /usr/src/linux-source-2.6.26.tar.bz2
 $cd linux-source-2.6.26
 $cp /boot/config-2.6.26-1-686 .config
 $make menuconfig
 $make-kpkg clean

 $fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image
 $cd ..
 $su
 #dpkg -i linux-image-2.6.26_sebastian.1.0_i386.deb

最初は 2.6.23 の時のソースツリーで make menuconfig したのと見比べながら素から設定したのだが起動中 hda のハードウェアの認識(?)で止まってしまった。 なのでとりあえず起動する .config は Debian 標準イメージのものをベースにすることにした。 変更は ACPI を外して APM を追加した程度。

Debian 標準イメージは IDEext3 もモジュールになっていて initrd 使わないと起動できないので今回から --initrd を指定してビルドすることにした(一度忘れてビルドして起動したら何度かアチャーしたことのある kernel panic になった)。

再起動。起動後 cpufreqd が動かなかったが、modprobe speedstep-centrino したら今までどおり cpufreqd が立ち上がって省電力化できた。

次に MADWIFIインストール。こちらも問題なく接続。

 #module-assistant prepare
 #module-assistant auto-install madwifi

aufs前回の方法で udba=inotify できるモジュールを作成。

TrueCrypt もテストして警告を出さなくなっていることを確認。 火曜日ぐらいから、ちんたら何度かビルドしないしながら昨日ここまで辿りついた。 めでたしめでたし。

しかし Debian 標準イメージの .config 級の設定だとビルドに1回2時間前後だったかかかるようになった(nice 下だけれど)。 トライアンドエラーしはじめるとかなり時間がかかるな。


[ 2月7日全て ]

2009年8月16日 (日)

今日のさえずり: ビリビリいっていると思ったら、やっぱりパンツだった

2009年08月16日

  • 06:36 連休中3日間寝坊していたので、今日は目覚し時計セットして起床した。 *P3
  • 06:43 2009年7月15日の歩行: 0歩、0.00km、0分、0.00km/h、消費 0.0kcal、脂肪燃焼 0.0g、0.0エクササイズ。 *P3
  • 06:55 財布の中のレシートが大変な厚さになっている。 *P3
  • 08:09 さっきからビリビリいっていると思ったら、やっぱりパンツだった。裂けてる。 [mb]
  • 08:25 ベランダに出た。爽やか。朝の空気が変わったな。もう晩夏か。 [mb]
  • 11:28 散歩に出発。 [mb]
  • 12:37 一六タルトを切らしている西友にガッカリしている。 [mb]
  • 17:36 朝ビリビリいい始めたパンツ、今見たら桃の割れ目に沿って大変なことになってた。 [mb]
  • 23:12 2009年8月16日の歩行: 3732歩、2.84km、35分、4.80km/h、消費 138.7kcal、脂肪燃焼 19.8g、1.9エクササイズ。 *P3
  • 23:42 「人生の貴重な瞬間100選」を書き出しているところ。 *P3
  • 25:04 aufs マウント先にファイル異動でハング -> 再起動 -> -bpp オプションが無くなってて X 起動せず -> startkde が無くなってて KDE 起動せず -> apt-get install kdebase-workspace-bin -> 別世界。 *P3
[ 8月16日全て ]

2009年10月4日 (日)

ThinkPad X31sidLinux kernel 事情

ここ最近 ThinkPad X31Debian GNU/Linux sid が調子が悪い。 いろいろ調査・トライしてみている途中の状態をメモ

状況

  • いつごろからか、サスペンドしても ThinkPad X31 の月ランプが光らなくなった。
  • 8月19日ぐらい(から、使用中に Caps Lock キーが点滅してフリーズするようになった。(記事)。
  • 9月11日ぐらいから digiKam写真データを認識しなくなった(記事)。digiKam 更新で対応。
  • 9月23日ぐらいからサスペンドさせると復帰時に Caps Lock キーが点滅して Kernel panic になるようになった(記事)。
  • 9月29日に X があがらなくなった(記事)。こちらは xserver-xorg-core ダウングレードで対応。
  • Linux kernel 起動時に udev が「今の kernel だとデバイスあたりの処理がおかしくなるかもよ」というような警告を出すようになった。

アプリケーションや X の不具合などと重なって unstable 全開だ。

Linux kernel については各種パッケージの更新に追いつけなくなっているようなので、アップデートをかける必要がありそう。

Linux kernel 再構築

Debian GNU/Linux の標準イメージを使ってみたが、ThinkPad X31 では例によって ACPI では蓋の開閉でサスペンドしない。 APM を使うようにした Debian kernel パッケージ構築が必要。 しかし今年の2月に 2.6.26 をビルドした時(記事)から、いろいろ変更があったようで一筋縄ではいかなかった。 以下は最終的な手順(たぶん)。

 #apt-get build-dep linux-image-2.6.30-2-686
 #apt-get install linux-source-2.6.30 aufs-source
 #exit

 $mkdir -p /usr/local/src/linux
 $cd /usr/local/src/linux

 $tar jxvf /usr/src/linux-source-2.6.30.tar.bz2
 $tar zxvf /usr/src/aufs.tar.bz
 $emacs modules modules/aufs/Makefile
 $cd linux-source-2.6.30
 $cp /boot/config-2.6.30-2-686 .config
 $make menuconfig
 $make-kpkg clean

 MODULE_LOC=/usr/local/src/linux/modules fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image modules_image
 $fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image
 $cd ..
 $su
 #dpkg -i linux-image-2.6.30_sebastian.1.0_i386.deb aufs-modules-2.6.30_0+20090302-3+sebastian.1.0_i386.deb
 #update-initramfs -c -k 2.6.30
 #update-grub
  • aufs inotify を有効にする(記事)必要があるのだが、modules/aufs/debian/conf.mk が無くなっていた。modules/aufs/Makefile 側で同様の設定追加をする必要あり。
  • MADWIFI はコンパイルが通らなくなっていた。
  • 自前で作った linux-image の Debian パッケージが、initrd まわりの処理をうまくしてくれない。自分で update-initramfs した。

MADWIFI はもはやコンパイルが通らなくなっていた。 試してみたところ ath5k で通信できるようになっているではないか。modprobe ath5k すると wlan0 が使えるようになった(MADWIFI の時は ath0)。

initrd 関係は結構はまった。 最初いつも通りビルドして dpkg した後再起動したのだが、"Unable to mount root fs on unknown-block(0, 0)" が出て先にすすまない。 IDE まわりや ext2ext3 まわりを M から y にしても駄目。 何度か試しているうちに、 linux-image を dpkg --install した際に実行される update-grub のメッセージで自分で作った Linux kernel だけ initrd 関係の処理がされないことに気がついた。 自前で update-initramfs したらようやく 2.6.30 が起動するようになった。

2.6.30 にすることで起動時の udev の警告は解消された。 しかしながらサスペンドはまだ駄目。 復帰時にフリーズする。 やはりパワー関係の処理があやしい。今は AC アダプタを外しても KPowersave は気付かない。

もう少しおっかける必要がありそう。

対応できるまではサスペンドできず。毎回起動したりシャットダウンしたりするの面倒くさーい。

[ 10月4日全て ]

2014年12月20日 (土)

aufs で ro なブランチに書き込まれたかと思った

かなり久しぶりに aufs を使った Web サイトのドラフト作成をしようと思ってマウントしたのだけれど、なぜかスタックされた ro の方のディレクトリのファイルが書き変わってアレレとなった。

しかもディレクトリによっては rw の方にきちんと変更が書き込まれて、ro は変更されないようにきちんとなっている。

なんだろうと思ってしばらく調べた結果、一部のディレクトリはシンボリックリンクaufs でマウントした外のディレクトリを指していてアウトオブ aufs だったというオチ。ああ。

今日のさえずり: やられたー。イチゴが高くなってる。

2014年12月20日

[ 12月20日全て ]

2014年12月29日 (月)

今日のさえずり: 重箱スケールアップ

2014年12月29日

  • 11:15 aufs きちんと設定しなおした。
  • 13:49 去年の大晦日に「来年は重箱大きくしたいね」と話したのを思い出した。
  • 13:50 重箱スケールアップ。
  • 14:44 今年1年分の Web 日記ふりかえりながら、いろいろ見直したり考えなおしたり、来年のリマインダーを設定したりしている。これが日記をつけているメリットの1つ。
[ 12月29日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.054657s / load averages: 0.90, 0.77, 0.69
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker