2010年12月24日 星期五

Adding RBD support for Xen

Ceph 是近來新興的分散式檔案系統, 作者網站號稱可以到 peta-byte 的處理能力
看他的架構的確是不錯, 但目前還在開發階段, 不宜作為 production 使用!!
以下是小弟寫的小小 script 讓 xen 也能使用 Ceph 的 Rados

Adding the follow code in /etc/xen/scripts/block-rbd
#!/bin/bash

# Usage: block-rbd [monitor_server options pool_name image_name]

dir=$(dirname "$0")
. "$dir/block-common.sh"
rbd="/sys/bus/rbd/devices"

case "$command" in
add)
echo "$2 $3 $4 $5" > /sys/bus/rbd/add
sleep 0.5
for dev in `ls $rbd`; do
if [ "`cat $rbd/$dev/pool`" == $4 ] && [ "`cat $rbd/$dev/name`" == $5 ]; then
write_dev "/dev/rbd$dev"
xenstore_write "$XENBUS_PATH/rbd" "$dev"
exit 0
fi
done
exit 1
;;
remove)
dev=$(xenstore_read "$XENBUS_PATH/rbd")
echo $dev > /sys/bus/rbd/remove
;;
esac

Modify the last line of /etc/xen/scripts/block

--- block.org 2006-11-13 15:13:37.000000000 +0100
+++ block 2010-12-24 20:55:10.000000000 +0800
@@ -404,4 +404,4 @@

# If we've reached here, $t is neither phy nor file, so fire a helper script.
[ -x /etc/xen/scripts/block-"$t" ] && \
- /etc/xen/scripts/block-"$t" "$command" $node
+ /etc/xen/scripts/block-"$t" "$command" $p


Creating new config file for VM

The format of new block device is "rbd:monitor_server options pool_name image_name". example:

kernel = "/mnt/images/gentoo/kernel/boot/vmlinuz-2.6.32.26-domu"
extra = "root=/dev/xvda1 ro console=hvc0 ip=::::vm01::off"
memory = 1024
vcpus = 2
name = "vm01"
vif = [ '' ]
disk = [ 'rbd:192.168.15.1 name=admin rbd gentoo.2010-0.x86-64.img,xvda1,w' ]

2010年12月21日 星期二

SuRun - SUDO in Windows

在 Linux 系統中,管理員常會用 sudo 開放特定指令的權限給其他使用者
例如給 web server admin 的話可以用 sudo /etc/init.d/apache restart
sudo 好處在於可以只針對特定程式給予 root 權限

在 windows 上,有一個類似的軟體叫 SuRun 概念跟 sudo 差不多
對個人來說~平常可以使用較低權限的帳號,當需要使用特定權限時再用 SuRun 執行
可以減少被惡意軟體破壞的機率
對企業來說~可針對特定一定需要 admin 的軟體設定,而不需給使用者全部 admin 權限

2010年12月7日 星期二

PPStream for Linux 復活了(不用 root, 支援 64-bit)

今天無意間發現 PPS 已經有 for Linux 的版本了
稍微測試了一下,效果非常好,也很省資源
快到官方網頁下載吧: http://dl.pps.tv/
或是直接下載連結: PPS Linux版本(Ubuntu 8.04+)
官方提供的是 Ubuntu 8.04+ 32-bit deb 版本

接下來的文章主要介紹如何在 Gentoo Linux 64-bit 使用
  1. 安裝 32-bit Qt library: emerge emul-linux-x86-qtlibs
  2. 安裝播放器 mplayer (這大家應該都有了吧)
  3. 安裝 32-bit 的 fuse library: (我是設定 PORTAGE_TMPDIR=/tmp)
    # ebuild `equery w sys-fs/fuse` unpack
    # cd /tmp/portage/sys-fs/fuse-2.8.5/work/fuse-2.8.5
    # ./configure --build=i686-pc-linux-gnu --target=i686-pc-linux-gnu CFLAGS=-m32 LDFLAGS=-m32
    # make
    之後會在 lib/.libs 產生 libfuse.so.2.8.5 , 等一下會用到
  4. 安裝 deb2targz 把 .deb 轉成 tar.gz 格式: emerge deb2targz
  5. 解壓縮: tar zxvf ppstream_1.0.0-1_i386.tar.gz -C /
  6. 把剛剛產生的 libfuse.so.2.8.5 複製到 /opt/pps/lib 並建立連結
    # cd /opt/pps/lib
    # ln -s libfuse.so.2.8.5 libfuse.so.2
  7. 啟動 PPS: (如果出現 gksudo:命令找不到 請忽略)
    # LD_LIBRARY_PATH=/opt/pps/lib /opt/pps/bin/PPStream &
  8. 修改 PPS 的音效設定: 工具/選項/選擇音頻設備, 選 alsa
  9. 開始享受 PPS
PS. 如果你不喜歡被限制在 PPS 的播放視窗裡,
可以直接用你喜歡的播放器播放 /tmp/fuse/stream 讚啦!!!

PS2.如果不熟悉怎麼產生 libfuse.so 請留言我再寄給您

PPStream 工作原理解說:
這邊讓我們了解為什麼需要 root 原因以及解決方法
Related Posts Plugin for WordPress, Blogger...