Sharing

2011年8月30日 星期二

大玩特玩 LVM

參考文件:

主要是

http://linux.vbird.org/linux_basic/0420quota.php#lvm
http://linux.vbird.org/somepaper/20050321-LVM-1.pdf

http://ericfoto.com/618
http://blog.csdn.net/xjtuse_mal/article/details/5504768
http://tonychou.posterous.com/lvm



查看一下現在整個系統內有幾個 partition.
pjack@ubuntu1104-64-5:/dev$ sudo fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes 
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d41c2

# 從上面可以看到有一個 Disk, 大小為 500GB

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          32      248832   83  Linux       # 主要分割區 
/dev/sda2              32       60802   488134657    5  Extended    # 延申分割區
/dev/sda5              32       60802   488134656   8e  Linux LVM   # 邏輯分割, 對應到 LVM 內的一塊 lv


看一下 Physical Volume 的狀況
pjack@ubuntu1104-64-5:/dev$ sudo pvscan
  PV /dev/sda5   VG ubuntu1104-64-5   lvm2 [465.52 GiB / 48.00 MiB free]
  Total: 1 [465.52 GiB] / in use: 1 [465.52 GiB] / in no VG: 0 [0   ]

pjack@ubuntu1104-64-5:/dev$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               ubuntu1104-64-5
  PV Size               465.52 GiB / not usable 2.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              119173
  Free PE               12
  Allocated PE          119161
  PV UUID               FnI4qo-0ilE-FKlj-caS2-LWyZ-ySXC-8KE3Yl

# 有一塊 PV, 對應到 /dev/sda5, 大小為 465 GB, PE size 為 4MB, 和查看 partition 是符合的


查看一下 Volumn Group

pjack@ubuntu1104-64-5:/dev$ sudo vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "ubuntu1104-64-5" using metadata type lvm2
pjack@ubuntu1104-64-5:/dev$ sudo vgdisplay
  --- Volume group ---
  VG Name               ubuntu1104-64-5
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2   # 分割成 2 個 Logical Volume
  Open LV               2
  Max PV                0
  Cur PV                1   # 由 1 個 Physical Volume 組成, 也就是我們查到的 /dev/sda5
  Act PV                1
  VG Size               465.52 GiB
  PE Size               4.00 MiB
  Total PE              119173
  Alloc PE / Size       119161 / 465.47 GiB
  Free  PE / Size       12 / 48.00 MiB
  VG UUID               cxPj4c-xOvg-8f13-HGdl-m2Qj-goI0-eSjXak


查看一下 Logical Volumne
pjack@ubuntu1104-64-5:/dev$ sudo lvdisplay
[sudo] password for pjack:
  --- Logical volume ---
  LV Name                /dev/ubuntu1104-64-5/root
  VG Name                ubuntu1104-64-5
  LV UUID                w6DSBS-nejc-aY6a-Uw0T-7eVd-WA0I-jUukBL
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                441.48 GiB
  Current LE             113020
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           251:0

# 第一塊的大小是 441 GB, 對應到 /dev/ubuntu1104-64-5/root
# 然後 VG 是 ubuntu1104-64-5

  --- Logical volume ---
  LV Name                /dev/ubuntu1104-64-5/swap_1
  VG Name                ubuntu1104-64-5
  LV UUID                5tP2Cf-3zWd-YjEl-7sKx-Kac0-PiOo-zFU0Z2
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                23.99 GiB
  Current LE             6141
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           251:1

# 第一塊的大小是 24 GB, 對應到 /dev/ubuntu1104-64-5/swap_1
# 然後 VG 是 ubuntu1104-64-5
# 和我們剛剛查到 ubuntu1104-64-5 內有 2 塊 LV 是一致的

回頭看一下目前有 mount 起來的東西

pjack@ubuntu1104-64-5:/dev$ df
Filesystem                             1K-blocks      Used Available Use% Mounted on
/dev/mapper/ubuntu1104--64--5-root     455666040   3301844 429217700   1% /

# 其中一塊 LM 掛在 / 底下 
# 至於 swap 就不需要掛在地方

none                                    12358272       212  12358060   1% /dev
none                                    12366300         0  12366300   0% /dev/shm
none                                    12366300        72  12366228   1% /var/run
none                                    12366300         0  12366300   0% /var/lock
/dev/sda1                                 233191     45214    175536  21% /boot

# /dev/sda1 被 mount 到 /boot 區


另外觀察一下 /dev/mapper 及 /dev/ubuntu1104-64-5 之間的關係

pjack@ubuntu1104-64-5:/dev$ ll /dev/mapper
total 0
drwxr-xr-x  2 root root     100 2011-08-22 13:54 ./
drwxr-xr-x 18 root root    4560 2011-08-25 12:09 ../
crw-------  1 root root 10, 236 2011-08-22 13:54 control
lrwxrwxrwx  1 root root       7 2011-08-30 16:09 ubuntu1104--64--5-root -> ../dm-0
lrwxrwxrwx  1 root root       7 2011-08-30 16:09 ubuntu1104--64--5-swap_1 -> ../dm-1

pjack@ubuntu1104-64-5:/dev$ ll /dev/ubuntu1104-64-5/
total 0
drwxr-xr-x  2 root root   80 2011-08-22 13:54 ./
drwxr-xr-x 18 root root 4560 2011-08-25 12:09 ../
lrwxrwxrwx  1 root root    7 2011-08-30 16:09 root -> ../dm-0
lrwxrwxrwx  1 root root    7 2011-08-30 16:09 swap_1 -> ../dm-1

# 可以發現都是對應到 /dev/dm-0 & /dev/dm-1

我的任務是把 /dev/ubuntu1104-64-5/root 先縮小, 然後再 create 另一個 lv 來建立 Clustered File System Pool, 中間會警告你可能會傷害到一些檔案, 因為這台只有我在用, 所以我就完全不管, 刪了再說, 每一個 PE 的大小是 4MB , 900000 * 4MB = 360G, 所以從 450G 減少到 90 G

pjack@ubuntu1104-64-5:/dev$ sudo lvresize -l -90000 /dev/ubuntu1104-64-5/root
  WARNING: Reducing active and open logical volume to 89.92 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce root? [y/n]: y
  Reducing logical volume root to 89.92 GiB
  Backup of volume group ubuntu1104-64-5 metadata failed.
  Logical volume root successfully resized

很好.. 從此就掛掉了 XD 重灌吧~



後來和前輩討教, 發現我少做了一件事, 就是要先把 file system 縮小, 我縮小的是 block level partition, 他並不知道上面有一層 file system, 所以直接把 partition 縮小會破壞到 file system 的結構.

首先試著 resize2fs,結果出現 error

pjack@ubuntu1104-64-6:~$ sudo resize2fs / 50G
[sudo] password for pjack:
resize2fs 1.41.14 (22-Dec-2010)
open: Is a directory while opening /

# 先試著直接 resize, 不過正在被使用, 所以無法被 resize

pjack@ubuntu1104-64-6:~$ sudo umount /
umount: /: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

pjack@ubuntu1104-64-6:~$ fuser -uv /
                     USER        PID ACCESS COMMAND
/:                   root     kernel mount (root)/
                     pjack      1578 .r... (pjack)bash


# 嗯, device is busy, 因為有人登入... 那要怎麼 umount 呀~~ Orz

pjack@ubuntu1104-64-6:~$ sudo umount -l /
[sudo] password for pjack:

# 強迫他 umount 好了.. 看看會怎麼樣

pjack@ubuntu1104-64-6:~$ sudo resize2fs /dev/dm-0 50G
[sudo] password for pjack:
resize2fs 1.41.14 (22-Dec-2010)
open: No such file or directory while opening /dev/dm-0

pjack@ubuntu1104-64-6:~$ ll /dev/dm*
ls: cannot access /dev/dm*: No such file or directory

pjack@ubuntu1104-64-6:~$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/ubuntu1104--64--6-root
                     455666040   4702340 427817204   2% /
none                 455666040   4702340 427817204   2% /sys
df: `/sys/fs/fuse/connections': No such file or directory
df: `/sys/kernel/debug': No such file or directory
df: `/sys/kernel/security': No such file or directory
none                 455666040   4702340 427817204   2% /dev
none                 455666040   4702340 427817204   2% /dev/pts
none                 455666040   4702340 427817204   2% /dev/shm
none                 455666040   4702340 427817204   2% /var/run
none                 455666040   4702340 427817204   2% /var/lock
/dev/sda1            455666040   4702340 427817204   2% /boot

# Orz 又全部爛掉了.. 幸好重開機之後就回復了


於是拿出 liveCD.. 天呀.. 網路慢到不行, 我只好放棄.. 再度重灌
雖然沒有成功, 不過也因此對整個操作, 還有對 lvm & filesystem 都有滿清楚的概念
也是一大收獲!

2011年8月24日 星期三

紅包行情






編號
類別
品名
金額
負責方
備註
男方
女方
11-1訂婚壓茶甌1000~2000 總金額必需是雙數,象徵吉利。壓茶甌 男方親人給予前來敬茶的準新娘 $1200 起跳, 6或9的陪數
1-2安床禮600~2000   
1-3壓桌禮一桌不要少
於8000元
 酒席禮 即[壓桌禮], 視乎女方預備了多少酒席款待男方親友
1-5媒人禮2000~3000媒人禮 男方要比女方多, 及南部會比北部注重. 數千元到數萬元不等 
1-6頁禮600 ~1800  採納人員 女方給予送禮前來的頁禮官 
1-7貢禮官 600 ~1800  貢禮官 陪伴準人郎到女家採納之人員
1-8挽面禮1200~3600 挽面禮 給準新娘的化妝禮
1-9點燭禮 1200~3600 點燭禮 給點燭祭祖之舅舅
1-10端茶禮 1200~3600  端茶禮 給引導準新娘敬茶之福壽雙全婦人
1-11端臉盤禮 600~1800  端臉盤禮 新郎贈予端洗手盤之幼童 
1-12舅仔禮 600~1800 舅仔禮 新郎贈予新娘的未婚弟妹
1-13相見禮600~1800 相見禮 到女家門時, 贈予替新郎開車門的小孩
22-1結婚安床禮小孩600~1800 贈予安床時, 翻床舖的小男童
2-2壓床男生600~1800 贈予結婚前陪睡之未成年男生
2-3迎娶人員600~1800 出發迎娶前, 新郎贈予所有前往女家迎娶之人員
2-5拜橋男童600~1200 新郎贈予持橘子糖果恭迎的男童
2-6引領新娘婦人1200~3600 新郎贈予引導陪同新娘出嫁的好命婦人
2-7陪嫁女伴600~1200  
2-8端扇男童600~1800 新娘出發時, 端給扇子的男童
2-9持橘子男童600~1800 新娘到男家時, 贈給端著兩個橘子的小男童
2-10花僮600~1200  
2-11伴郎伴娘1200~3000  
2-12化妝師500~1000 如是聘請的, 依事前談妥的價錢以紅包給付, 如是朋友擔任可以心意贈予紅包
2-13禮車司機1200~3600 朋友擔任可以心意贈予紅包, 所有當天出動的車均需以紅包答謝
2-15司儀1000~2000  
2-16總招待2000  
2-17招待600~1200  
2-18總務600~1200  
2-19攝影600~1200  
2-20收納600~1200  
2-21飯店服務人員  每人200元,或總共給2000元



2011年8月19日 星期五

Install Hybridfox for Openstack

發現有另外一套 Firefox 的 plug-in 可以直接和 Euca2ools 相連結叫 HybridFox, 他也可以連到 Openstack, 所以就裝來用用, 不然 Openstack 的 dashboard 功能實在是陽春的可憐

官網: http://code.google.com/p/hybridfox/

目前 1.6 版有支援 Openstack, 不過只能搭配 firefox 5.0 使用, 6.0 我試著去裝是不成功的

裝好之後在 firefox 的控制列會多一個選項  Tools -> hybridfox , 選了之後頁面就會出來, 然後你要設定一下 Regions, Credentials, Account IDs, 設定說明可以參考

http://cssoss.wordpress.com/2011/04/27/openstack-beginners-guide-for-ubuntu-11-04-instance-management/

不過 ec2_url 的部份請填在 /etc/nova/nova.conf 內的設定, 預設應該類似是這樣
http://172.16.33.7:8773/services/Cloud

整個畫面類似下面, 功能是比較齊全了, 不過在一般使用者的眼中, 還是很陽春, 重點是不好用, 很工程師的感覺







2011年8月18日 星期四

Database in Openstack

進到 Openstack 的資料庫看了一下


show tables;
+-------------------------------------+
| Tables_in_nova                      |
+-------------------------------------+
| auth_tokens                         |
| certificates                        |
| compute_nodes                       |
| console_pools                       |
| consoles                            |
| export_devices                      |
| fixed_ips                           |
| floating_ips                        |
| instance_actions                    |
| instance_metadata                   |
| instance_types                      |
| instances                           |
| iscsi_targets                       |
| key_pairs                           |
| migrate_version                     |
| migrations                          |
| networks                            |
| projects                            |
| quotas                              |
| security_group_instance_association |
| security_group_rules                |
| security_groups                     |
| services                            |
| user_project_association            |
| user_project_role_association       |
| user_role_association               |
| users                               |
| volumes                             |
| zones                               |
+-------------------------------------+



Services

可以看到每個 service 分配在那一邊


Network



這是當初 create network 時產生在 database 中的, 其中 vlan 和 bridge 其實當初沒有指定, 不過他預設是使用 br100 和vlan100, 未來如果要切割開來更多 vlan, 不知道要怎麼處理, 不過我想這都只是設定問題, 技術上應該都是可支援的.   另外 project_id 一開始會是 NULL, 但當 create 一個 instance 之後, 就會填上去, 這部份目前也是沒有方式指定網路設定, 而且由系統直接指派.

Fixed_ips

隨著一個 vlan 的建制起來, 他會順把 Fixed ip 也都建起來, 可以看到 network_id = 2 , 對應的就是上面提到的那組, 當初是設定 192.168.3.0/24 1 255, 所以他就會從 192.168.3.0 一路建下去, 不過我比較疑惑是為什麼他只建到 .127 就停了, 原本以為他應該要建到 .254 or .255才對, 然後當一個 instance create 出來後, 他會把 instance_id 填上去

Floating_ips



再來是看 floating_ips, 由於 floating ip 是對外的 public ip, 預設是浮動的, 可以隨時改變配對的 project, 所以表格內只會看到 fixed_ip_id 及 project_id 的對應, 目前都沒使用到

Others

 SELECT COLUMN_NAME  FROM Information_Schema.COLUMNS where TABLE_NAME='volumes';



其他 table 有些是空的, 所以可以利用 information _schema 來觀察一下特定的table 有那些 column, 透過 database 的觀察其實可以大概了解 Openstack 對於每個 component 的操作及怎麼聯結, 另外是他現在還沒有很好的 UI 可以防呆, 所以像之前 network 有設錯, 在 database 就有殘存一些無法用 command line 砍掉的東西, 這種狀況下就只好手動進來修 database.


OpenStack Create Instance

OpenStack Dashboard 裝好後, 就準備透過 Dashboard 來 Luanch Instance. 不過看了一下 Dashboard 的介面真的是很陽春, 也不能透過它上傳 image. 根據 OpenStack 的文件來看, 它應該有支援各式各樣的 image format.
  • raw
  • vmdk (common disk format)
  • vhd (vmware、Xen 、Virtualbox)
  • vdi (VirtualBox)
  • qcow2 (Qemu/KVM)
  • iso
  • ovf
  • aki 、ari 、ami (Amazon)
不過因為還不熟要怎麼操作, 就先根據他網站上的說明來上傳 image

下載一個己經做好的 image


wget http://uec-images.ubuntu.com/releases/10.04/release/ubuntu-10.04-server-uec-amd64.tar.gz

因為是平台是 Ubuntu, 他有一個工具可以直接把 .tar.gz 包起來的 image 安裝進去
uec-publish-tarball ubuntu-10.04-server-uec-amd64.tar.gz mybucket


會看到類似以下的結果

Fri Aug 19 11:44:38 CST 2011: ====== extracting image ======
Warning: no ramdisk found, assuming '--ramdisk none'
kernel : lucid-server-uec-amd64-vmlinuz-virtual
ramdisk: none
image  : lucid-server-uec-amd64.img
Fri Aug 19 11:44:44 CST 2011: ====== bundle/upload kernel ======
Fri Aug 19 11:44:45 CST 2011: ====== bundle/upload image ======
Fri Aug 19 11:45:21 CST 2011: ====== done ======
emi="ami-00000006"; eri="none"; eki="aki-00000005";


輸入 euca-describe-images, 觀察一下是否有正確 import

IMAGE   aki-00000005    wcloud/lucid-server-uec-amd64-vmlinuz-virtual.manifest.xml              available   public          x86_64  kernel
IMAGE   ami-00000006    wcloud/lucid-server-uec-amd64.img.manifest.xml          available       public              x86_64  machine aki-00000005


從 dashboard 也可以看到有變化, 在 Community Images 的區域多了一個 ami-00000006, 不過我有兩件事還弄不清楚
  1. 為什麼看不到 aki-00000005
  2. 另外是從 OpenStack 的文件看起來, image 應該可以設定只有特定 project 才能使用, 而非所有的 project 都看的到, 但我故意去創建另一個 project 時, 卻發現裡面也有同樣的 image 可以使用, 不知道是不是因為在同一個 user 下的所有 project 都共享 image ?! 




接下來你就可以透過右邊的按鍵去 luanch 一個新的 virtual machine, 一開始他會先設定網路, 後來就會分到分配到一個 ip, 這個 ip 應該是根據之前創建的網路給的 fixed ip, 整體速度還滿快的


然後設定一下權限, 就可以ssh 連進去囉! 帳號和密碼都是 ubuntu

euca-authorize -P icmp -t -1:-1 default
euca-authorize -P tcp -p 22 default



============== 亂玩時間 ===========================================

進去後可以試著在 /home/ubuntu 下製造一個 .txt, 然後在裡面下關機的指令

sudo shutdown


從 dashboard 好像看不出來變化, 仍然是看到這個 instance 正在 running, 不過其實從外面己經連不進了, 之後再重新 reboot 他, dashboard 沒有這個功能, 只好從 command line 來下指令

euca-reboot-instances i-0000002f
重啟之後就可以再連進去, 發現東西還在, 可是如果你是用 dashboard 的 "Terminate" 功能就真的會把 image 砍掉了

=============== Where is image ? ==================================
找了一下他把 image 放在那邊, 從 nova.conf 中可以發現在 /var/lib/nova 裡面

先觀察一下 _base 下的東西


再觀察一下 instance-00000030 下的狀況


目前是猜測他有利用 hypervisor 的功能, 以 _base 為底, 然後只針對有改變的部份做處理, 所以在 create instance 時還滿快的, 不需要真的把整個 image copy 一份, 還滿聰明的作法