星期日, 5月 30, 2010

建立 Windows Server 2008 網域小記

Lab: 建立網域中的第一台網域控制站
設定電腦名稱
  • 點選 開始 
  • 點選 系統管理工具
  • 點選 伺服器管理員
    • 於伺服器管理員內, 點選 變更系統內容
    • 點選 電腦名稱標籤內的 變更
    • 輸入 新的電腦名稱, 例如 AD1
    • 點選 確定, 點選 確定, 點選 關閉
    • 點選 立刻重新開機 讓名稱變更生效
重開機之後檢視電腦名稱是否有改變

設定固定IP
於伺服器管理員視窗內
  • 點選 檢視網路連線
  • 選取  區域網路( 或是相對應的網卡 ), 於上方按滑鼠右鍵, 點選內容
  • 點選 Internet Protocol Version 4 ( TCP/IPv4)
  • 點選 內容
  • 在使用下列的 IP 位址以及 使用下列的 DNS 伺服器位址 輸入自訂的 IP 及 DNS
  • 點選 確定, 點選關閉
於命令提示字元 使用  ipconfig  /all 檢查 是否設定成功


安裝  Active Directory 網域服務
  • 點選 開始
  • 點選 執行
  • 輸入 dcpromo , 點選確定 ( 升級 DC )
  • 出現  網域服務安裝精靈 畫面, 點選 下一步
  • 點選 下一步 ( 系統相容性)
  • 點選 在新樹系內建立新網域, 點選 下一步
  • 輸入 網域的 FQDN  例如  example.com ,點選 下一步
  • 點選 樹系功能等級類型 ( Windows 2000 / Windows Server 2003 / Windows Server 2008) , 點選下一步
  • 點選 網域功能等級 類型 , 點選 下一步
  • 點選 下一步 ( 預設如果是第一台主機 會安裝 DNS 伺服器)
  • 點選 是 ( 出現找不到 授權的父系區域 )
  • 確認相關 資料庫儲存位置, 點選 下一步
  • 設定 目錄服務還原模式的 Administrator 帳戶密碼, 點選下一步
  • 檢視 摘要, 點選 下一步
  • 點選 完成, 點選 立刻重新啟動 完成安裝

星期三, 5月 26, 2010

xen 研讀小記

xen 網卡命名語法

  • vifdomain_number.interface_number
  • 例如 domain 2 的eth0 就是  vif2.0
可以透過修改 /etc/xen/xend-config.sxp 來設定xen 使用NAT網路

notes:
  • vm-install  建立虛擬機器
  • xen 網卡MAC 00:16:3e 開頭

vm-install 也可以使用非互動的方式, 例如
vm-install  --os-type sles11  --source  nfs://172.17.8.101/data/install/SLES11  --os-settings  nfs://172.17.8.101/data/install/autoyast/da4-xen.xml

使用  xm 指令列出裝置名稱 ( da5 為domain name)
# xm  block-list  da5

#xm  list   ( 列出Unmanaged domains )

Xen version 3 設定檔可以存放在Xenstore database ( /var/lib/xenstored/tdb )

managed domains

  • Virtual machines that have their configuration in the Xenstore database.
藉由 #xm  delete  vm_name 移除Xenstore 內的設定檔( 只移除設定檔, 不包含 disk image )

Notes:
  • 使用 #vm-install 指令安裝的VM設定檔會被寫到 /etc/xen/vm/vm名稱 以及 Xenstore database
  • 但是之後對 /etc/xen/vm/vm名稱 設定檔的修改並不會影響 XenStore database 內的設定檔
  • 所以如果要讓他生效的方法為
    • #xm  delete  vm名稱
    • 修改 /etc/xen/vm/vm名稱 的設定檔
    • #xm  new   configfile
#xm  list  ( 列出所有的VM 包含沒有運作中)
有關於 xm list 列出的state 資訊
  • r:  Domain is running
  • b: Domain has been created but is currently blocked.
  • p: Domain is paused.
  • s: Domain is in the process of being shut down.
  • c: Domain has crashed due to an error or misconfiguration.
xm 相關指令
  • #xm  shutdown  domain_id    ( 關閉domain )
  • #xm  start  vm_name   ( 啟動 domain )
  • #xm  pause   domain_id  ( 暫停 domain 運作 )
  • #xm  unpause  domain_id  ( 繼續 domain 運作)
  • #xm  console  domain_id
    • 以終端機方式連線進入 domain
    • 使用 Ctrl + ] 按鍵 離開, 回到原來的domain
  • #xm  destroy  domain_id  (  強制關機, 當shutdown 不能用的時候才實施 )
  • #xm  save  domain_id  filename
    • 有點類似休眠, 後面的檔案大小等於 VM的記憶體大小, 但是記憶體不會釋放出來
    • 利用 #xm  restroe  filename 來快速還原VM
  • #xm  mem-set  domain_id  amount_of_memory
    • 動態調整  VM 的記憶體大小, 單位為MB
  • #xm  vcpu-list

virsh  相關指令(功能類似 xm)
  • #virsh  dumpxml  domain_name   (觀察 VM 設定檔)
  • #virsh  console   domain_id 
    • 以終端機方式連線進入 domain
    • 使用 Ctrl + ] 按鍵 離開, 回到原來的domain
  • #virsh  list   (列出正在運作中的VM, 但是不會列出未運作中的vm)
  • #virsh  shutdown  domain_id  ( 關閉VM)
  • #virsh  start   vm_name   ( 啟動 VM )
  • #virsh  suspend  domain_id  ( 暫停 VM )
  • #virsh  resume  domain_id  ( 繼續執行 VM )
  • #virsh  destroy  domain_id  (  強制關機, 當shutdown 不能用的時候才實施 )
  • #virsh  save  domain_id  filename
    • 有點類似休眠, 後面的檔案大小等於 VM的記憶體大小, 但是記憶體不會釋放出來
    • 利用 #virsh  restroe  filename 來快速還原VM
  • #virsh  setmem  domain_id   amount_of_KbMemory
    • 動態設定VM 記憶體大小,  單位為KB

設定 xen 的DomainU 於開機時啟動
  • 可以將 /etc/xen/vm/vm名稱 的設定檔 建立 Symbolic Link 到 /etc/xen/auto, 這樣xen 主機開機的時候就會啟動 /etc/xen/auto 下的VM
  • 例如 # ln -s /etc/xen/vm/da5  /etc/xen/auto/da5
相關的設定檔也可以參考 /etc/sysconfig/xendomains 檔案

xen migrate ( 移轉 )
環境描述
da1: NFS Server 提供 VM image from /srv/export
da2: 原來的 xen Server
da3: 準備要移轉的 xen 目的 server

條件 
  • da2 and da3 必須都有執行 xend
  • da2 and da3 使用同一個 storge ( via NFS or iSCSI )
    • 也就是說都有掛載 da1 的 /srv/xen
修改設定檔
於 da2 以及  da3 ( 兩台都要設定 )
(第一項拿掉註解  改為yes, 中間兩項拿掉註解  最後一項去除localhost, 空白代表皆可)
#vi  /etc/xen/xend-config.sxp
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(xend-relocation-hosts-allow '')

重新啟動 da2 以及 da3 的xend
# rcxend  restart


於da2 ( 移轉主機上面) ( 以 offline 方式移轉 )
# xm  migrate  da5  192.168.123.203
這個時候可以觀察到 VM  會先 pause 之後再到 da3 啟動

在da3  可以使用
#xm  top

來觀察

轉移之後, 測試線上移轉
於 da3 ( 目前 VM 所在主機)
# xm  migrate  --live  da5  192.168.123.202
這個時候可以發現,  xen 會先於被移轉主機先啟動VM 以pause 狀態, 慢慢轉移

enjoy it ~~

星期二, 5月 25, 2010

iSNS Server 研讀小記

使用 iSCSI 服務, iSCSI initiator 必須先 Discover Target,
但是SAN有可能包含比較多的裝置, 所以 iSCSI 必須辨認 SAN的resource

目前有三種 Target 的discovery方式

  • Traditional iSCSI
  • Internet Storage Name Service ( iSNS )
  • SLP ( not currently supported )
iSNS 提供 自動Discovery, 管理, 以及設定 iSCSI 裝置
如果有 iSNS Server 在網路內, iSCSI Initiator 可以對 iSNS Server 送出查詢,
iSNS Server 則會回覆該 iSCSI Initiator 可以使用的 iSCSI Targets.

iSCSI 也可以將 iSCSI Initiator and iSCSI Target 組成一個 zone,
可以定義 iSNS discovery domains 以及 discovery domain sets
  • Discovery domains:
    • a group of iSCSI nodes.  iSCSI Initiator 只能尋找與他相同的Discovery domain 的裝置.
  • Discovery domain sets:
    • a group of discovery domains.
iSNS Targets 與 iSCSI Initiator  使用 iSNS protocol 來溝通.
iSCSI Client:
  • Register device attribute information in a common discovery domain.
  • Download information about other registered clients.
  • Receive asynchronous notification of events occur in their discovery domain.
iSCSI Server
  • Respond to iSNS queries and requests send from iSNS clients using the iSNS protocol.
  • Initiate iSNS protocol state change notifications.
  • Store properly authenticated information submitted by a registration request in an iSNS database.

Lab: Installing and Configuring iSNS
安裝 iSNS Server
  • # yast2  isns
  • 點選安裝(如果被提示要安裝套件)
  • 於ISNS 伺服器的位置 輸入 IP 或是 FQDN
  • 服務啟動 選取 開機時
  • 開啟防火牆設定
  • 點選完成
觀察相關資訊
# cat  /etc/isns.conf 
isns_address=192.168.123.201

da-1:~ # netstat -tupln | grep 3205
tcp        0      0 0.0.0.0:3205            0.0.0.0:*               LISTEN      25683/isnsd         
udp        0      0 127.0.0.2:3205          0.0.0.0:*                           25683/isnsd   

# rcisns status
Checking for iSNS Internet Storage Naming Service:                                                  running

da-1:~ # chkconfig isns --list
isns                      0:off  1:off  2:off  3:on   4:off  5:on   6:off

Lab: 建立 iSNS Discovery Domains 以及 Discovery domain set
iSNS Server 至少要有一個  Discovery Domain 以及 Discovery domain set
預設會建立一個 default DD
  • #yast2  isns
  • 點選 探查網域 頁面
    • 點選 建立探查網域
    • 輸入 自訂名稱
    • 點選 確定
  • 點選 探查網域集
    • 點選 建立探查網域集
    • 輸入自訂名稱
    • 點選確定
    • 點選 新增探查網域
    • 選取 要新增的探查網域
    • 點選 完成

Lab: Add iSCSI Nodes to a Discovery Domain
將 iSCSI Node 加入 Discovery Domain
在 iSCSI Target 主機上面
  • # yast2 iscsi-server
  • 勾選 iSNS 存取控制
    • 輸入iSNS 伺服器 IP
    • 點選完成
觀察資訊
可以啟動 iSNS 模組觀察 iSCSI 節點 頁面, 是否有被新增進來.
# yast2 isns

也可以觀察 
da-1:~ # head  -n  2   /etc/ietd.conf 
iSNSServer   192.168.123.201
iSNSAccessControl   Yes


Lab: 讓 iSCSI  Initiator 使用 iSNS Server
在 iSCSi Initiator 主機上面
  • # yast2 iscsi-client
  • 在 iSNS 位址 輸入 iSNS Server IP
  • 在 iSNS 連接阜 輸入 預設 Port 3205
  • 點選完成
觀察資訊
# grep isns /etc/iscsi/iscsid.conf 
isns.address = 192.168.123.201
isns.port = 3205

重新啟動服務 
# rcopen-iscsi  restart

Lab: 將 iSCSI Target 以及 iSCSI Initiator 指定到 Discovery Domain
在  iSNS Server 上面
  • # yast2 isns
  • 點選 iSCSI 節點 頁面
    • 確認 iSCSI Target 以及 iSCSI Initiator 都有出現在清單上面
  • 點選  探查網域 頁面
    • 點選 要指定的 discovery domain
    • 點選 新增現有的 iSCSI  節點
    • 點選要新增的 Target 以及 Initiator 節點
    • 點選 新增節點 (將要附加在此 Discovery domain 所有節點加入)
    • 點選 完成

測試 iSNS 伺服器
在 iSCSI Initiator 主機上面
  • # yast2 iscsi-client
  • 檢查 探查的目標 頁面
    • 點選探查  按鈕
在沒有 iSNS Server 架構的情形下, 必須輸入 iSCSI Target 的主機 IP
在 有iSNS Server 架構的情形下, 只要點選探查, 就會自動列出相關資源

但是登入驗證還是要自己作 ^^

這邊發現的小bug ( 可能是還沒有升級  )
  • #yast2  iscsi-client 加入 iSNS Server 有時候不會寫入 /etc/iscsi/iscsid.conf  , 要手動修改
  • 如果登入不成功或是 iSNS Server 有問題, 建議將服務重開
    • # rcopen-iscsi restart
    • # rciscsitarget restart

enjoy it ~~


星期一, 5月 24, 2010

nmap @ openSUSE 11.2

nmap 是在 Linux 中常常被使用的port scan 工具

使用 zypper 來查詢 nmap
可以看到幾個套件
其中 nmap 為主要的套件
圖形介面的套件可以使用 zenmap 的方式來執行

# zypper search nmap
Loading repository data...
Reading installed packages...

S | Name    | Summary                        | Type    
--+---------+--------------------------------+-----------
i | nmap    | Portscanner                    | package
  | nmap    | Portscanner                    | srcpackage
  | nmapsi4 | A Graphical Front-End for Nmap | package
  | nmapsi4 | A Graphical Front-End for Nmap | srcpackage
i | zenmap  | A Graphical Front-End for Nmap | package

安裝 nmap 相關套件
#zypper  in  nmap  zenmap

啟動 zenmap
#zenmap

先筆記一下 ^^

觀察硬碟溫度 @ openSUSE

最近因為Lab 電腦使用年限比較久
讓我注意到 溫度對電腦設備的影響
如果要觀察 硬碟溫度 @ openSUSE Linux

可以安裝 hddtemp 這個套件
可以透過 one click install 的方式安裝套件

套件查詢結果如下
http://software.opensuse.org/search?p=1&baseproject=ALL&q=hddtemp

安裝完畢之後可以使用 hddtemp 硬碟路徑來查詢溫度
例如

# hddtemp /dev/sda
/dev/sda: FUJITSU MHZ2320BJ G2: 45°C



星期五, 5月 21, 2010

20100521_TWNIC_SELinux

引入 SElinux的好處
  • 針對Process 來限制規範權限
  • 也可以針對 root 使用者來進行程式的限制

觀察  SElinux
#sestatus

設定是否要強制規範SElinux
#setenforce

#setenforce  0

觀察  SElinux
#sestatus

相關設定檔
/etc/sysconfig/selinux

觀察 SElinux   相關設定
#getsebool  -a

只限制 /etc/init.d/*  內的 script 來規範 SElinux
  • 也就是說只要非 /etc/init.d/ 下面的 scripts 就不會列入 SElinux的保護
  • 沒有 純文字的設定來改 預設的 SElinux的保護路徑, 因為儲存在 db 內, 可以使用 dump的方式來更改

SElinux 可以設定程式不可以 listen port

權限控管機制項目
  • DAC ( Discretionary Access Control )
    • 自主存取控制
    • 傳統的權限控管方式, 依照身份來決定
  • MAC 
    • 強制存取控制
    • 根據條件來進行控管
    • 實際上, process 要先符合  DAC 規範, 並通過MAC的限制才可以存取

SElinux 策略切記不要設定 disable 後又切換到enforce (會死機)
  • 可以在開機的時候利用 selinux=0 引數來停用 selinux ( 萬一打不開 )
  • 解決方式
    • 如果設定為SELINUX=disable 又改設定為 SELINUX=enforce 應該先設定為  SELINUX=permissive 不可以直接啟用SELINUX=enforce
    • 然後啟動重新標記 Step 1. 建立 # touch  /.autorelabel ( 這樣開機的時候會重新建立 label ) Step 2. #reboot
    • 如果要從 SELINUX=permissive 轉到SELINUX=enforce 也要重新標記

規則檔存放路徑
/etc/selinux/targeted/policy

-- 中午休息 --

Security Context 組成
  • 一般格式組成
    •  identity:role:type
    • 身份識別:角色:類型

舉例來說
[root@localhost ~]# ls -Z
-rw-------  root root system_u:object_r:user_home_t    anaconda-ks.cfg
drwxr-xr-x  root root root:object_r:user_home_t        Desktop
-rw-r--r--  root root root:object_r:user_home_t        install.log
-rw-r--r--  root root root:object_r:user_home_t        install.log.syslog

[max@localhost ~]$ ls -aZ
drwx------  max  max  system_u:object_r:user_home_dir_t .
drwxr-xr-x  root root system_u:object_r:home_root_t    ..
-rw-------  max  max  root:object_r:user_home_t        .bash_history
-rw-r--r--  max  max  system_u:object_r:user_home_t    .bash_logout
-rw-r--r--  max  max  system_u:object_r:user_home_t    .bash_profile
-rw-r--r--  max  max  system_u:object_r:user_home_t    .bashrc
drwxr-xr-x  max  max  system_u:object_r:user_home_t    .mozilla
-rw-------  max  max  user_u:object_r:user_home_t      .Xauthority



觀察   Security Context
一般來說可以指令加上  -Z 來觀察
例如

# id -Z
root:system_r:unconfined_t:SystemLow-SystemHigh
# ls -Z
-rw-------  root root system_u:object_r:user_home_t    anaconda-ks.cfg
drwxr-xr-x  root root root:object_r:user_home_t        Desktop
-rw-r--r--  root root root:object_r:user_home_t        install.log
-rw-r--r--  root root root:object_r:user_home_t        install.log.syslog

Notes:
  • 如果 SELINUXTYPE=targeted 前面兩個欄位幾乎沒有功能, 在SELINUXTYPE=strict 才比較有作用
  • 一般來說會看 type 來決定規範, type 又可以稱為 domain
    • 查詢的方式, 例如 # sesearch  -a  |  grep 'allow httpd_t'        ( httpd_t 為type 名稱 )
    • 內容就是針對該process 可以執行的行為, 例如
    • allow httpd_t httpd_sys_script_exec_t : file { ioctl read getattr lock execute };

SELinux Boolean項目
  • /etc/selinux/booleans 存放目錄
  • 使用 getsebool 來觀察
    • #getsebool -a | cat -n | grep httpd


SELinux 錯誤trouble shooting
  • 藉由 #setsebool 服務名稱_disable_trans=1 來停止SELinux對該服務的干涉( 此為暫時性的作法)
  • 藉由 #setsebool  -P 服務名稱_disable_trans=1 來停止SELinux對該服務的干涉 ( 會存入設定檔, 永久生效 )
  • 例如
    • [root@localhost booleans]# getsebool -a |cat -n |  grep httpd_disable_trans
         102 httpd_disable_trans --> off
      [root@localhost booleans]# setsebool httpd_disable_trans=1
      [root@localhost booleans]# getsebool -a |cat -n |  grep httpd_disable_trans
         102 httpd_disable_trans --> on
      [root@localhost booleans]# setsebool httpd_disable_trans=0
      [root@localhost booleans]# getsebool -a |cat -n |  grep httpd_disable_trans
         102 httpd_disable_trans --> off
  • 可以透過 chcon 來變更檔案目錄的security context, 例如
    • [root@localhost booleans]# mkdir /home/max/test
      [root@localhost booleans]# ls -Zd /home/max/test
      drwxr-xr-x  root root root:object_r:user_home_t        /home/max/test
      [root@localhost booleans]# chcon -R -t httpd_sys_content_t /home/max/test/
      [root@localhost booleans]# ls -Zd /home/max/test
      drwxr-xr-x  root root root:object_r:httpd_sys_content_t /home/max/test
  • 如果對某一個路徑( 目錄 )設定 type, 在該目錄底下建立的檔案會繼承該type ,但是要注意像 cp -a 的方式, 他的type 未必會繼承,例如
    • [root@localhost test]# touch /home/max/test/testfile
      [root@localhost test]# ls -Zd /home/max/test
      drwxr-xr-x  root root root:object_r:httpd_sys_content_t /home/max/test
      [root@localhost test]# ls -Z /home/max/test
      -rw-r--r--  root root root:object_r:httpd_sys_content_t testfile
      [root@localhost test]# cp /etc/passwd  /home/max/test/
      [root@localhost test]# ls -Z /home/max/test
      -rw-r--r--  root root root:object_r:httpd_sys_content_t passwd
      -rw-r--r--  root root root:object_r:httpd_sys_content_t testfile
      [root@localhost test]# cp -a /etc/passwd  /home/max/test/passwd2
      [root@localhost test]# ls -Z /home/max/test
      -rw-r--r--  root root root:object_r:httpd_sys_content_t passwd
      -rw-r--r--  root root system_u:object_r:etc_t          passwd2
      -rw-r--r--  root root root:object_r:httpd_sys_content_t testfile

SELinux  GUI 管理工具
  • 套件名稱 policycoreutils-gui
  • 指令 system-config-selinux

參考資料
Notes:
  • samba 伺服器
    • 分享目錄一般要將type 設定為 samba_share_t
    • 利用 chcon  -t  samba_share_t   路徑改變
    • 家目錄的問題
    • [root@localhost test]# getsebool -a | grep samba_enable_home
      samba_enable_home_dirs --> off
      [root@localhost test]# setsebool samba_enable_home_dirs=1
      [root@localhost test]# getsebool -a | grep samba_enable_home
      samba_enable_home_dirs --> on
  • ftp 伺服器
    • 要enable home directory
      • [root@localhost test]# getsebool -a | grep ftp_h
      • ftp_home_dir --> off
      • [root@localhost test]# setsebool ftp_home_dir=1
      • [root@localhost test]# getsebool -a | grep ftp_h
      • ftp_home_dir --> on

如果觀察 SELinux Trouble shooting

首先 setroubleshootd 必須要執行 
# /etc/init.d/setroubleshoot status
setroubleshootd (pid  21958) 正在執行...

然後使用  sealert  指令觀察相關訊息
方式為 sealert -l  XXXXXXXXXX訊息代碼 ( 藉由觀察 /var/log/messages 取得 )


可以使用 semanage 來管理
假設要知道 httpd 可以在那一個port Listen
semanage  port  --list  | grep  httpd

新增定義的port 給httpd
semanage  port  -a  -t http_port_t  -p tcp  1234



星期一, 5月 17, 2010

iSCSI 研讀小記

Notes
  • iSCSI default port 3260
  • Protocol Data Unit ( PDU ): 用來溝通 iSCSI target and initiator
  • iSCSI Qualified Name ( IQN ): assigned to an iSCSI node using the follow syntax:
    • iqn.year-month.TLD.Internet_domain:string
    • 例如 iqn.2010-05.com.mydomain:target1
  • LUN: 在iSCSI 等於傳統的 iSCSI disk, An iSCSI target hosts one or more LUNs.
  • iSCSI Target
    • 設定檔( iSCSI Target) /etc/ietd.conf , 可以以下列三種形式產生
      • LV
      • Disk / Partition
      • File
  • iSCSI initiator 
    • three discover methods
      • SendTargets
      • iSNS
      • SLP
    • 套件 open-iscsi / yast-iscsi-client
      • /etc/init.d/open-iscsi
      • /etc/init.d/boot.open-iscsi
      • 設定檔 /etc/iscsid.conf  ( /etc/iscsi/iscsid.conf)
    • 驗證的密碼會存放於 /etc/iscsi/send_targets/iSCSI Target主機IP,Port/裝置名稱/default
    • onboot 與 automatic 的差別為 onboot 是啟動open-iscsi 以及 boot.open-iscsi 兩個服務但是沒有登入 iscsi  的裝置, 但是automatic 是會啟動服務且登入iSCSI的裝置
    • 名稱由 /etc/iscsi/initiatorname.iscsi 設定檔來自動產生, 也可以手動設定,語法為
      • iqn.yyyy-mm.top_level_domain.domain:n1:n2
  • iSNS 伺服器 預設port 3205

    Lab: iSCSI

    iSCSI Target:

    1.安裝相關套件
    #yast2 iscsi-server
    • 會提示要安裝 iscsitarget 套件
    • 選取開機時啟動
    • 開啟Firewall --> 點選完成
    2.建立一個 Partition 
    ( 不需要格式化) 這邊使用 4GB來測試
    或是
    一個檔案來測試, 例如
    #mkdir   /iscsi
    #dd  if=/dev/zero  of=/iscsi/first   bs=1M  count=1024

    3.建立相關設定
    #yast2  iscsi-server
    • 點選 Global 全域  頁面
    • 點選 目標 Target 頁面
      • 刪除預設的 Target, 點選刪除 --> 點選 繼續
      • 點選新增按鈕 --> LUN 名稱會自動產生
      • 點選 新增 按鈕 --> 輸入或是選取路徑 ( 例如 /dev/sdb1) --> 點選確定
      • 將要納入 iSCSI Target 的檔案或是Partition 都納入
      • 點選下一步 
      • 取消勾選 無驗證
      • 點選 新增 ( 內送驗證 ), 輸入使用者名稱以及密碼 ( 建議要 12 個字元以上才符合 CHAP 限制, 以免Windows 那邊連線有問題 ) --> 確定
      • 點選 完成 並重新啟動服務
    設定完成之後觀察 /etc/ietd.conf 內容
    IncomingUser root novell
    Target iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275
    Lun 0 Path=/dev/sdb1,Type=fileio
    Lun 1 Path=/iscsi/first-device,Type=fileio

    觀察相關資訊
    # cat /proc/net/iet/volume 
    tid:1 name:iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275
    lun:0 state:0 iotype:fileio iomode:wt path:/dev/sdb1
    lun:1 state:0 iotype:fileio iomode:wt path:/iscsi/first-device

    # cat /proc/net/iet/session 
    tid:1 name:iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275


    **iSCSI Initiator**

    建立之前觀察一下裝置

    # ls /dev/disk/by-path/
    pci-0000:00:02.5-scsi-0:0:0:0
    pci-0000:00:02.5-scsi-0:0:0:0-part1
    pci-0000:00:02.5-scsi-0:0:0:0-part2
    pci-0000:00:02.5-scsi-1:0:0:0


    安裝相關套件
    #yast2  iscsi-client
    如果被提示要安裝open-iscsi套件, 就點選安裝

    • 點選開機時啟動 When Booting
    • 點選 探查的目標 Discovered Targets 頁面
      • 點選 探查 Discovery
      • 輸入 iSCSI Target 的IP位址
      • 點選下一步 開始Discover
      • 這個時候會找到分享出來的裝置,  點選 登入
      • 取消 無驗證
      • 勾選 外送驗證 ( 因為在 iSCSI Target 那邊是設定 內送驗證 )
      • 輸入 帳號 還有密碼, 點選 下一步
      • 這個時候會觀察到 已連線 ( Connected )的欄位 就會顯示為 真(True)
    • 點選 已連線目標 頁面
      • 確認 啟動(Start-up)欄位 設定為 onboot ( 如果沒有, 點選切換啟動 Toggle Startup)
        • onboot 與 automatic 的差別為 onboot 是啟動open-iscsi 以及 boot.open-iscsi 兩個服務但是沒有登入 iscsi  的裝置, 但是automatic 是會啟動服務且登入iSCSI的裝置
      • 點選 完成
    觀察相關資訊
    # lsscsi 
    [0:0:0:0]    disk    ATA      ST380011A        3.06  /dev/sda
    [1:0:0:0]    cd/dvd  SONY     DVD-ROM DDU1622  AS72  /dev/sr0
    [3:0:0:0]    disk    IET      VIRTUAL-DISK     0     /dev/sdb
    [3:0:0:1]    disk    IET      VIRTUAL-DISK     0     /dev/sdc

    # ls /dev/disk/by-path/
    ip-192.168.123.201:3260-iscsi-iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275-lun-0
    ip-192.168.123.201:3260-iscsi-iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275-lun-1
    pci-0000:00:02.5-scsi-0:0:0:0
    pci-0000:00:02.5-scsi-0:0:0:0-part1
    pci-0000:00:02.5-scsi-0:0:0:0-part2
    pci-0000:00:02.5-scsi-1:0:0:0

    使用  iscsiadm 觀察 iSCSI Target

    # iscsiadm  -m discovery  -t  st  -p 192.168.123.201

    • -m 為模式 discovery 為探查
    • -t 為 discovery 的方式 st 為SendTargets 或是也可以使用 isns
    • -p  為iSCSI Target 的IP與port ( IP_Address:port)
    使用 iscsiadm 登出
    #iscsiadm  -m  node  -T   iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275  -u
    • -m 為模式 採取 node 模式
    • -T 為指定Target  名稱 ( iqn)
    • -u 為登出 ( 一旦登出之後  /etc/iscsi/send_targets/iSCSI Target主機IP,Port/裝置名稱/default 檔案就會被刪除, 登入驗證相關資訊就要重新建立 )

    列出找到的 iSCSI Targets
    #iscsiadm -m node
    192.168.123.201:3260,1 iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275

    刪除找到的 iSCSI Targets ( 前提是沒有 Session 在使用)


    # iscsiadm -m node -o delete


    列出目前的 session

    # iscsiadm -m session
    tcp: [5] 192.168.123.201:3260,1 iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275

    列出目前所有 session 的統計資訊
    # iscsiadm -m session -s
    Stats for session [sid: 5, target: iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275, portal: 192.168.123.201,3260]

    iSCSI SNMP:
    txdata_octets: 9500
    rxdata_octets: 1732356
    noptx_pdus: 0
    scsicmd_pdus: 121
    tmfcmd_pdus: 0
    login_pdus: 0
    text_pdus: 0
    dataout_pdus: 0
    logout_pdus: 0
    snack_pdus: 0
    noprx_pdus: 0
    scsirsp_pdus: 121
    tmfrsp_pdus: 0
    textrsp_pdus: 0
    datain_pdus: 280
    logoutrsp_pdus: 0
    r2t_pdus: 0
    async_pdus: 0
    rjt_pdus: 0
    digest_err: 0
    timeout_err: 0
    iSCSI Extended:
    tx_sendpage_failures: 0
    rx_discontiguous_hdr: 0
    eh_abort_cnt: 0

    列出某一個session 的詳細資訊  -r 後面接 session ID
    # iscsiadm -m session -r 5
    node.name = iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275
    node.tpgt = 1
    node.startup = onboot
    iface.hwaddress = default
    iface.ipaddress = default
    iface.iscsi_ifacename = default
    iface.net_ifacename = default
    iface.transport_name = tcp
    iface.initiatorname =
    node.discovery_address = 192.168.123.201
    node.discovery_port = 3260
    node.discovery_type = send_targets
    node.session.initial_cmdsn = 0
    node.session.initial_login_retry_max = 8
    node.session.cmds_max = 128
    node.session.queue_depth = 32
    node.session.auth.authmethod = CHAP
    node.session.auth.username = root
    node.session.auth.password = ********
    node.session.auth.username_in =
    node.session.auth.password_in =
    node.session.timeo.replacement_timeout = 120
    node.session.err_timeo.abort_timeout = 15
    node.session.err_timeo.lu_reset_timeout = 20
    node.session.err_timeo.host_reset_timeout = 60
    node.session.iscsi.FastAbort = Yes
    node.session.iscsi.InitialR2T = No
    node.session.iscsi.ImmediateData = Yes
    node.session.iscsi.FirstBurstLength = 262144
    node.session.iscsi.MaxBurstLength = 16776192
    node.session.iscsi.DefaultTime2Retain = 0
    node.session.iscsi.DefaultTime2Wait = 2
    node.session.iscsi.MaxConnections = 1
    node.session.iscsi.MaxOutstandingR2T = 1
    node.session.iscsi.ERL = 0
    node.conn[0].address = 192.168.123.201
    node.conn[0].port = 3260
    node.conn[0].startup = onboot
    node.conn[0].tcp.window_size = 524288
    node.conn[0].tcp.type_of_service = 0
    node.conn[0].timeo.logout_timeout = 15
    node.conn[0].timeo.login_timeout = 15
    node.conn[0].timeo.auth_timeout = 45
    node.conn[0].timeo.noop_out_interval = 5
    node.conn[0].timeo.noop_out_timeout = 5
    node.conn[0].iscsi.MaxRecvDataSegmentLength = 131072
    node.conn[0].iscsi.HeaderDigest = None
    node.conn[0].iscsi.DataDigest = None
    node.conn[0].iscsi.IFMarker = No
    node.conn[0].iscsi.OFMarker = No





    利用 iozone 以及 gnuplot 來測試 filesystem 寫入效能

    有關於 Linux 底下硬碟效能的測試方式
    上網Google 一下, 有找到像 bonnie++ 以及 iozone 這樣的套件來測試
    但是這兩個套件測試出來的結果都是文字結果
    所以想要以圖形的方式呈現
    在網路上面都是看到使用 bonnie++ 或是 iozone 加上 gnuplot 這個套件
    來繪製成圖片
    這邊我就以 iozone 這個套件來測試
    首先安裝 iozone 套件

    openSUSE 可以利用 one-click install 來安裝 iozone 套件
    http://software.opensuse.org/search?p=1&baseproject=ALL&q=iozone

    另外 gnuplot 也可透過 YaST 或是 one-click install 來安裝
    http://software.opensuse.org/search?p=1&baseproject=ALL&q=iozone

    至於為何要使用 iozone 加上 gnuplot 來測試呢
    那是因為 iozone 套件內就有包含產生圖形的 shell script
    所以就可以簡單的拿來套用

    首先使用 iozone 指令產生相關測試結果
    #cd   /root
    #iozone  -a   >  /root/iozone.log

    這個會花費一些時間, 所以可以先去作別的事情

    接下來使用套件內附的shell 來產生圖形
    先切換到 /usr/share/iozone 目錄
    # cd   /usr/share/iozone
    使用 /usr/share/iozone/Generate_Graphs 指令針對剛剛的log產生圖形
    # /usr/share/iozone/Generate_Graphs  /root/iozone.log

    輸出結果如下所示



    enjoy it ~~

    星期日, 5月 16, 2010

    Xen Virtualization @ SUSE Linux Enterprise Server 11 小記

    Client:
    安裝xen相關套件
    Install  Hypervisor and Tools
    #yast2  xen

    修改Grub 指定Xen開機
    #yast2 bootloader
    重新開機並以xen 的核心開機

    Server:
    建立 存放相關xen disk 的資料夾並且以NFS方式分享
    #mkdir  /srv/xen

    #vi  /etc/exports
    /srv/xen   *(rw,sync,no_root_squash)

    #rcnfsserver  start
    #chkconfig   nfsserver  --list
    #chkconfig   nfsserver on
    #chkconfig   nfsserver  --list


    Client:
    建立/import/xen 目錄並掛載 Server 的 /srv/xen
    #mkdir  -p  /import/xen
    # mount  192.168.123.201:/srv/xen  /import/xen/
    #df  -h
    如果要常態性的使用要修改  /etc/fstab
    準備 autoinst.xml 檔案用於自動安裝

    安裝 VM ( 使用 vm-install 指令, 也就是YaST內的建立虛擬機器)
    #vm-install
    • 我需要安裝作業系統
    • 指定作業系統類型
    • 摘要設定頁面
      • 指定虛擬機器名稱
      • 磁碟設定
        • 移除原本本機的image file  ( 位於 /var/lib/xen/images)
        • 新增 disk file 於 /import/xen/虛擬主機名稱/disk0
      • 作業系統安裝
        • 指定安裝來源 ( CD/DVD 是指定在虛擬磁碟, 或是 URL, 例如NFS )
        • 指令自動安裝 autoinst.xml 檔案位置
    測試結果小記 ( 使用 Fast Ethernet 環境 via NFS share)
    AM 9:34  開始安裝
    AM 10:07 套件安裝完成
    AM10:13  設定完畢

    Linux 研讀小記 SCSI

    SCSI ID
    • 一般如果是8個裝置的SCSI 控制器, ID由 0-7
    • 數字越大優先性越高, 所以一般來說 SCSI controller 都設定為7
    • 如果是支援 16個裝置優先順序如下 7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8
    • 每一個裝置在SCSI Bus上面也會指定一個LUN ( Logical Unit Number)
    • Each SCSI ID number can be further subdivided into LUNs 0 though 15
    • 觀察SCSI 的方式 #cat /proc/scsi/scsi
      • max@linux-xen:~> cat /proc/scsi/scsi
        Attached devices:
        Host: scsi0 Channel: 00 Id: 01 Lun: 00
          Vendor: HL-DT-ST Model: DVD-RAM GH22NP20 Rev: 1.02
          Type:   CD-ROM                           ANSI  SCSI revision: 05
        Host: scsi2 Channel: 00 Id: 00 Lun: 00
          Vendor: ATA      Model: WDC WD5000AAKS-2 Rev: 12.0
          Type:   Direct-Access                    ANSI  SCSI revision: 05
      • 觀察SCSI or SATA 光碟機方式 cat /proc/sys/dev/cdrom/info 
    • 常見的 SCSI 指令
      •  #time dd if=/dev/sda of=/dev/null bs=512 count=1953126    (測試硬碟寫入 1GB 的時間)
      • lsscsi  列出SCSI 裝置 資訊分別為 Host, Bus, Target,LUN
        • # lsscsi
          [0:0:1:0]    cd/dvd  HL-DT-ST DVD-RAM GH22NP20 1.02  /dev/sr0
          [2:0:0:0]    disk    ATA      WDC WD5000AAKS-2 12.0  /dev/sda
      • # sg_scan        可以加上 -i 或是 -x 看其他的資訊
        /dev/sg0: scsi0 channel=0 id=1 lun=0 [em]
        /dev/sg1: scsi2 channel=0 id=0 lun=0 [em]
      • #sg_map           可以加上 -i 或是 -x 看其他的資訊
        /dev/sg0  /dev/scd0
        /dev/sg1  /dev/sda
      • sg_rbuf
        • time  sg_rbuf   /dev/sg0
        • 必須針對硬碟所在的 位置
      • # sg_inq /dev/sg1
        standard INQUIRY:
          PQual=0  Device_type=0  RMB=0  version=0x05  [SPC-3]
          [AERC=0]  [TrmTsk=0]  NormACA=0  HiSUP=0  Resp_data_format=2
          SCCS=0  ACC=0  TPGS=0  3PC=0  Protect=0  BQue=0
          EncServ=0  MultiP=0  [MChngr=0]  [ACKREQQ=0]  Addr16=0
          [RelAdr=0]  WBus16=0  Sync=0  Linked=0  [TranDis=0]  CmdQue=0
          [SPI: Clocking=0x0  QAS=0  IUS=0]
            length=96 (0x60)   Peripheral device type: disk
         Vendor identification: ATA    
         Product identification: WDC WD5000AAKS-2
         Product revision level: 12.0
         Unit serial number:      WD-WCAS82407904
      • sginfo 可以搭配 -i 或是 -a 來觀察訊息
        • #sginfo  -i   /dev/sg0
      • rescan-scsi-bus.sh  在不重開機情形下重新掃描SCSI裝置

      Linux 網卡設定 VLAN 小記

      VLAN Tags with 4 bytes

      PID/Priority/CFI/VID

      vconfig add eth2 1 (加入網卡到vlan)


      ip address show (觀察)

      ip address add 172.17.8.200/24 brd + dev vlan1 (設定 vlan1 的IP)

      ip address show (觀察)

      vconfig rem vlan1 (將網卡從vlan移除)

      Lab 網卡Bond 小記

      Bond 兩張網卡之後, MAC address會被綁成一樣

      參考文件 /usr/src/linux/Documentation/networking/bonding.txt
      zman_liangsays
      正常來說有很多種變化,只是我不懂核心的做法,只懂INTEL伺服器網卡的做法

      Maxsays


      Maxsays
      可以設定的mode有很多

      Maxsays
      目前先嘗試 BONDING_MODULE_OPTS='mode=active-backup miimon=100'

      zman_liangsays
      這是INTEL的AFT模式

      Maxsays
      嗯可以透過 # modinfo bonding filename: /lib/modules/2.6.27.19-5-pae/kernel/drivers/net/bonding/bonding.ko

      zman_liangsays
      一張作用 一張睡覺等著被叫起備援

      Maxsays
      沒錯

      zman_liangsays
      你可以試試多久會起來

      Maxsays
      等等要試試看別的模式, 跟Z老大學習真快樂

      zman_liangsays
      =.= 你說的我都不懂

      Maxsays
      設定檔位置 /etc/sysconfig/network/ifcfg-bond0

      Maxsays
      第二種模式 ONDING_MODULE_OPTS='mode=balance-rr'

      Maxsays
      Round-robin policy: for load balancing and fault tolerance

      zman_liangsays
      這應該是ALB 不是 ALA

      zman_liangsays
      RR喔 那就是輪流送嗎

      Maxsays


      Maxsays
      沒錯 ^^

      zman_liangsays
      有那種 一張收跟送 其他張只送嗎

      zman_liangsays
      這種是ALB
       
      zman_liangsays 全部都收跟送 就是ALA

      Maxsays
      有...BONDING_MODULE_OPTS='mode=balance-alb'

      zman_liangsays
      我部落格有寫網卡20篇文章,裡面有圖跟解釋

      Maxsays
      Adaptive load balancing

      Maxsays
      嗯, 晚點來拜讀

      zman_liangsays
      這種適合FTP VOD 而且設備不用支援

      zman_liangsays
      ALA 設備就必須支援

      Maxsays 查了一下 Linux的Kernel 總共支援七種模式

      zman_liangsays
      那是我不管網卡後出現的 當初只有三種

      zman_liangsays
      這年代幸福啊 當初沒啥資料 連OS都有限制

      Maxsays
      BONDING_MODULE_OPTS='mode=balance-tlb'

      Maxsays
      Transmit load balancing


      Maxsays 相關的資訊可以使用
      cat 指令觀察 /sys/class/net/bond編號/bonding 資料夾內的檔案
      例如mode, active_slave, slaves, miimon

      zman_liangsays
      我的結論是 有這種需求的企業不該用核心,直接買伺服器等級網卡即可

      zman_liangsays
      當時三千多塊而已

      Maxsays
      嗯, 使用kernel 很耗CPU ^^

      zman_liangsays
      好網卡就是 傳輸大 耗資源小 兩者兼具 文章都有寫

      Lab 網卡Bridge 小記

      需要安裝 bridge-utils 套件, 且被Bridge 的網卡原來的設定會被移除


      指令為 brctl
      brctl - ethernet bridge administration

      brctl show 顯示Brideg 網卡資訊

      ip link set br0 down ( 要移除bridge前必須先停用)

      brctl delbr br0 ( 移除br0 的Bridge 網卡)

      手動加入的方式為( 假設有兩張網卡 eth0 and eth1)

      brctl addbr br0 ( 新增一個 Bridge網卡 br0)

      brctl show (觀察情形)

      brctl addif eth0 ( 將 eth0 加入到 br0)

      brctl show (觀察)

      brctl addif eth1

      brctl show (觀察)

      如果要保存設定要存放在 /etc/sysconfig/network/ifcfg-br0

      BOOTPROTO='dhcp' BRIDGE='yes' BRIDGE_FORWARDDELAY='0' BRIDGE_PORTS='eth0 eth1' BRIDGE_STP='off' BROADCAST='' ETHTOOL_OPTIONS='' IPADDR=''

      ip 指令練習 小記

      ip  address  show

      ip link  show

      ip  -s  link  show

      ip   neigh   ls

      ip address add 172.17.8.102/24 brd + dev eth1

      ip address del 172.17.8.102/24 dev eth1

      ip link set eth1 down

      ip link set eth1 upip link set address 00:22:33:44:55:66 dev eth1 ( 必須在down 的狀況下才能改Mac 位址)

      ip monitor all (監控cable 是否有被移除)

      ip route show

      ip route del 172.17.0.0/16 dev eth0

      ip route add 172.17.0.0/16 dev eth0

      ip route add default via 172.17.8.1


      ip route del default via 172.17.8.1

      星期四, 5月 06, 2010

      banshee 檔案名稱亂碼解決小記

      之前就有看 figaro 處理過
      今天也來玩一下
      首先 安裝 python-mutagen 套件
      zypper in python-mutagen




      NAME
             mid3iconv - convert ID3 tag encodings


      SYNOPSIS
             mid3iconv [options] filename ...


      DESCRIPTION
             mid3iconv converts ID3 tags from legacy encodings to Unicode and stores
             them using the ID3v2 format.


      進入到音樂的資料夾, 使用 find 來進行編碼
      find . -name "*.mp3" -exec mid3iconv -e utf-8 {} \;

      筆記一下

      星期二, 5月 04, 2010

      Windows Server 2008 WSUS 安裝小記

      因為要讓內部的 Windows Client 可以透過 WSUS 來更新套件
      所以寫這個 Notes 提醒自己 ^^

      首先安裝 IIS 網頁伺服器

      • 勾選 ASP.NET
      • Windows 驗證
      • IIS 6 Metabase 相容性
      從 http://www.microsoft.com/downloads
      下載 Microsoft Report Viewer Redistributable 2008 ( 有中文版 )
      下載 Windows Server Update Service 3.0 SP2

      安裝 Microsoft Report Viewer Redistributable 2008
      安裝 Windows Server Update Service 3.0 SP2

      • 包含管理主控台的完整伺服器安裝
      • 選擇存放更新目錄 ( 預設 C:\WSUS )
      • 選擇資料庫選項 ( 預設 C:\WSUS ) Windows Internal Database
      • 使用現有的IIS預設網站
      • 完成安裝
      設定 WSUS ( 安裝完畢也會出現精靈來設定 )
      開始 --> 系統管理工具 --> Windows Server Update Service
      • 決定是否要參加 Microsoft Update 改進方案
      • 選擇上游伺服器 ( 從 Microsoft Update 同步處理)
      • 指定或是不指定 Proxy 伺服器
      • 點選 "開始連線" 下載更新資訊
      • 選取要支援的語言
      • 選取要支援的產品
      • 選取要同步處理的分類
      • 選取同步處理的排程 ( 我是選自動同步處理 )
      • 完成設定
      利用 WSUS 選項內的 自動核准

      • 勾選 自動核准
      • 點選 執行規則
      來達成自動核准大量更新的狀況


      **** Client 端的設定 ****
      透過 GPO 來進行設定
      建立GPO 命名為WSUS, 設定以下原則
      • 電腦設定/原則/系統管理範本/Windows 元件/Windows Update
        • 設定自動更新
          • 啟用: 自動下載和排程安裝 每天 12:00  排程安裝
        • 指定進端內部網路Microsoft 更新服務的位置
          • 啟用: http://伺服器名稱
        • 重新排程已經排程好的自動更新安裝 ( 類似anacron 當workstation會關機錯過更新時間的時候, 開機等待幾分鐘後更新)
          • 啟用: 等待 20 分鐘 ( 這個部份依照實際狀況調整 )
      將 GPO 連結到網域或是特定 OU

      在 Client 使用 gpupdate /force 來更新( 或是等待 90 - 120 分鐘)
      在 Server 可以使用 wuauclt  /detectnow 來偵測


      Tips:
      • 當同步處理完畢會發現有幾千個 hotfix 要核准, 所以人類不可能一個一個去看, 所以可以利用 WSUS 選項內的 "自動核准" 功能
        • 勾選 "預設的自動核准規則"  來自動核准安全性更新 以及重大更新
      • 可以將電腦建立電腦群組, 針對不同的部份, 給予不同的軟體升級政策



      星期日, 5月 02, 2010

      利用 dmidecode 查詢主機板相關資訊

      在Windows 的系統下, 我們可以利用 PC Wizard 來查看硬體的資訊

      那在 Linux 底下呢?
      我們可以利用 dmidecode 這個指令來察看

      以下是 man 文件的內容
      NAME
             dmidecode - DMI table decoder


      SYNOPSIS
             dmidecode [OPTIONS]




      DESCRIPTION
             dmidecode  is  a  tool  for dumping a computer's DMI (some say SMBIOS) table contents in a human-readable format. This table contains a description of the system's hardware
             components, as well as other useful pieces of information such as serial numbers and BIOS revision. Thanks to this table, you can retrieve this information  without  having
             to probe for the actual hardware.  While this is a good point in terms of report speed and safeness, this also makes the presented information possibly unreliable.

      所以我們可以利用 dmidecode 指令查詢相關資訊
      以下是 主機板的資訊




      Handle 0x0002, DMI type 2, 15 bytes
      Base Board Information
      Manufacturer: MSI
      Product Name: MS-7309
      Version: 1.0
      Serial Number: To be filled by O.E.M.
      Asset Tag: To Be Filled By O.E.M.
      Features:
      Board is a hosting board
      Board is replaceable
      Location In Chassis: To Be Filled By O.E.M.
      Chassis Handle: 0x0003
      Type: Motherboard
      Contained Object Handles: 0

      所以就可以知道我的主機板是 MSI 的主機板
      在從Product Name: 去查詢相對應的主機板型號

      ^^

      趕快記起來