關於 Linux 的 Disk I/O 調整...

Twitter 上看到 tka 的 retweet,介紹了 Linux 下 Disk I/O 的調整:「PostgreSQL: Linux kernel I/O tuning」。

文章裡介紹了三種 scheduler,NOOP、CFQ、Deadline,其中 CFQ 是系統預設值。

其實 MySQL 的結論也差不多,Percona 在 2009 年的時候做過 benchmark,就直接看圖講故事吧:「Linux schedulers in tpcc like benchmark」。


數字愈大愈好。

noop 與 deadline 相當接近,對於 i/o bound 的人都應該要調整 :p

Google 開源的 lmctfy...

前幾天看到 Google 開源的 lmctfy (這名字還頗惡趣味,是「Let Me Contain That For You」的縮寫),是這樣介紹的:

lmctfy is the open source version of Google’s container stack, which provides Linux application containers.

看了一下說明,看起來跟 Docker 有點像啊?再查了查網路上的資料,發現有人更早之前寫過了:「lmctfy:Google的开源Linux容器」。

如果是在 Ubuntu 12.04 上,需要 3.3 或 3.8 的 Linux kernel。不過目前 Docker 還夠用,應該不會花時間去研究這個...

在 Ubuntu 12.04 LTS 上跑 Docker...

dockerdotCloud 發展出來的 LinuX Container 管理程式。

由於建議在 Linux Kernel 3.8 以上的版本跑,所以在 Ubuntu 12.04 LTS 上會需要 backport kernel,參考「ubuntu 12.04 kernel upgrade to 3.10」這篇的方法就可以了。

sudo apt-get install linux-image-generic-lts-raring
sudo apt-get install linux-headers-generic-lts-raring

裝完重開機後應該就可以看到新版 kernel:

$ uname -a
Linux GSLIN-DESKTOP 3.8.0-30-generic #44~precise1-Ubuntu SMP Fri Aug 23 18:32:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

接下來依照「使用 Docker/LXC 迅速启动一个桌面系统」這篇的方法,透過 ppa 安裝 docker。

sudo add-apt-repository ppa:dotcloud/lxc-docker
sudo apt-get update
sudo apt-get install software-properties-common lxc-docker

然後用標準的 ubuntu 系統,第一次跑需要抓檔案,但第二次跑就快很多了:

sudo docker run -i -t ubuntu /bin/bash

每次都是乾淨的環境,我第一次進去的時候 touch 一個檔案,第二次進去後就沒了:

gslin@GSLIN-DESKTOP [~] [04:52/W3] sudo docker run -i -t ubuntu /bin/bash
WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: [8.8.8.8 8.8.4.4]
root@679a4301aecc:/# ls -al /tmp
total 8
drwxrwxrwt  2 root root 4096 Apr 11 21:11 .
drwxr-xr-x 24 root root 4096 Sep 22 20:52 ..
root@679a4301aecc:/# touch /tmp/foo.txt
root@679a4301aecc:/# ls -al /tmp
total 8
drwxrwxrwt  2 root root 4096 Sep 22 20:52 .
drwxr-xr-x 25 root root 4096 Sep 22 20:52 ..
-rw-r--r--  1 root root    0 Sep 22 20:52 foo.txt
root@679a4301aecc:/# exit
gslin@GSLIN-DESKTOP [~] [04:52/W3] sudo docker run -i -t ubuntu /bin/bash
WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: [8.8.8.8 8.8.4.4]
root@7ced1a7c82bb:/# ls -al /tmp
total 8
drwxrwxrwt  2 root root 4096 Apr 11 21:11 .
drwxr-xr-x 24 root root 4096 Sep 22 20:52 ..
root@7ced1a7c82bb:/# exit

另外可以參考「Docker: Git for deployment」這篇。

看起來是拿來測試的好工具... 準備拿來測 Puppet

1999 年與 2008 年 Conference T-shirt size 的差別...

Twitter 上看到 b123400 的 retweet,專程貼出來有種好無奈的感覺... XD

Debian 上 Apache 2.2 設定 FastCGI 模式 PHP 的方式...

Debian 上只有 mod_fcgid 可以用,沒有 mod_fastcgi,兩者設定方式不一樣,花了一些時間測試...

最後是參考「Debian, apache2, virtualhosts, FastCGI and PHP5」這篇文章的說明,先弄到「會動」的情況。

首先是把該裝的裝起來 (apache2-mpm-workerlibapache2-mod-fcgidphp5-cgi),接下來在 /etc/apache2/sites-available/default 裡面修改兩個部份。

首先是針對 /var/wwwOptions 加上 ExecCGI。另外找個地方加上:

AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php

然後重跑 apache 就會動了,放個 phpinfo(); 的程式到 /var/www 下測試就可以確認了。

Debian 7.0 預定在五月初出版...

Slashdot 上看到 Debian 7.0 預定在五月第一個週末出版:「Debian 7.0 ('Wheezy') Release Planned For 1st Weekend in May」,在「NewInWheezy」可以看到有哪些變動。

ext4 變成 default filesystem,然後透過 FUSE 支援 exFAT

上次的 Debian 6.0 是 2011 年 2 月 6 日,兩年多了... 還是維持一貫的更新速度... XD

在 Raspberry Pi 上跑 FreeBSD...

Raspberry Pi 的官方網站上提到可以在 Raspberry Pi 上跑 FreeBSD 的消息:「FreeBSD is here!」。

不過這是 community (unofficial) 版本,而且是 10-CURRENT,維護者自己也說這還不是 production-ready,主要是給大家嘗鮮用...

目前如果要拿來做一些正事,還是以 Linux 為主吧,畢竟是主力平台。

CES 上展出 Linux-based 來福槍...

看到「$17,000 Linux-powered rifle brings "auto-aim" to the real world」這個的時候還在想 rifle 有什麼其他意思...

畫面是這樣 XDDD

這樣會被歸類到自動武器嗎?

然後,既然都用 Linux 了,一定要問的是,有沒有 open source & 可以自己刷韌體嗎 XDDD

對 Linux「友善」的主機板廠商... XD

Slashdot 上看到「Ask Slashdot: Linux-Friendly Motherboard Manufacturers?」這篇,第一個 comment 通常是最犀利的 comment... XDDD

I heard the Raspberry Pi is very Linux compatible, in fact it doesn't even run Windows.

然後下面滿滿都在討論 Raspberry Pi... XDDD

歡樂的 Samsung Security Hole...

話說 Zite 給的文章愈來愈歡樂了,大概是安全性的文章點多了就自動丟這類的出來。

像是這篇「[ROOT][SECURITY] Root exploit on Exynos」講安全漏洞的,作者猜測這些手機都有問題:

  • Samsung Galaxy S2
  • Samsung Galaxy Note 2
  • MEIZU MX
  • 使用 Samsung source code 的 Exynos processor

後門是 /dev/exynos-mem,這功能與 /dev/mem 一樣,只是... 所有人都可以讀寫 XD (於是任何程式都可以讀寫整台機器裡任何一個記憶體區塊內的資料)

然後文章後面提供一包 PoC source,可以生出 root shell... XDDD