##EasyReadMore##

2013年6月10日 星期一

Hyper-V 3.0 與 vSphere 5.1 虛擬硬碟效能比較 VHDX V.S VMDK

        虛擬化越來越普遍也就代表效能與實體機越來越近現在的 CPU 與記憶體速度都算相當的快CPU 最少也有 2Ghz多數時間也在閒置Memory 也到了 1600Mhz 的速度但硬碟的速度就是起不來就像是三兄弟去跑步大哥二哥 always 在等小弟。

        所以虛擬化之後就算效能有削減一點點但根本的速度差別還是在硬碟往往換顆更快的硬碟比你換什麼頂級的 CPU 有意義的多今天就拿最常見的 Hypervisor 來比較一下兩者的差別。

        VHDX 最大可支援到 64TBVMDK 只有 2TB現在很多需求是大量的 D如果今天 VM 需要一個 8TB 的空間 VMWare 環境我就只能建立 4 VMDK組成一個跨距磁碟區這會是比較麻煩的地方其餘就還好,兩者的效能部分,VMDK VHDX 號稱在動態大小 (Thin Provision)固定大小效能沒什麼差,這部分之後的測試會再報告,這次主要比較 VMDK VHD 的效能比較。

  • Storage : Infortrend R2850 FC 8Gb
  • 硬碟 : SAS 600GB 15K 轉速 RAID 5
  • 實體機器 : IBM X3650 M4
  • Guest OS : Windows Server 2008R2 SP1 Std
  • 硬碟大小 : 127GB Thin Provision
  • 測試軟體 : CrystalDisk 3.0.2 (I/OMeter 也可以) 因為只是小小測試 所以都用預設來跑
實體機器

VMDK

VHDX


測出來後我自己都嚇了一跳,因為 Hyper-V 的效能超乎想像的好

竟然還超越了實體機器,不知道微軟有沒有做什麼奇怪的加速

VMware 好像就弱了一點,實際來看看開機速度差更多

VMWare vSphere 5.1 VM 開機速度


Hyper-V 3.0 VM 開機速度


        實際比起來 Hyper-V 3.0 的速度快了非常多,第一次玩 Windows 有像 Linux 的開機速度,竟然不到十秒就開完了,但是 Windows-based 的 OS 在 VMWare 就慢了一些些,實際測試起來,在 Hyper-V 3.0 運作 Windows -based的虛擬機器感覺很良好,速度飛快,比 Hyper-V 2.0 好很多,竟然還比 VMWare 快,於是乎現在我都在 Hyper-V 環境建 Windows VM,在 VMWare 環境建立 Linux VM,以上測試給大家一個參考,改天再放更專業的測試 !







2013年6月7日 星期五

從Hyper-V 2.0(2008R2) 搬VM到Hyper-V3.0的注意事項



這幾天搬了一台 Hyper-V 2.0 的 VM 到 3.0 的環境

搬 VHD 檔還好但是要考慮幾件事情


  1. 是否要把 VHD 檔轉成 VHDX?


Ans: 強烈建議要轉 !VHDX 在動態大小硬碟方面的效能逼近固定大小而且可以調整大小到 64TB~ VHD 檔在動態大小跟固定大小的效能有差,最大只能 2TB


  1. 開機就可以直接用嗎?

Ans: 不太建議,因為整合服務還沒更新,2.0 跟 3.0 的整合服務不同,一定要升級,不然網路會有問題,但是你一開機,會發現網路一直繞圈圈,此時請不要裝整合服務,不然 Explorer 容易當掉需要等一段時間等到網路圖示斷線才可以安裝整合服務,裝了之後就會覺得速度有明顯變快了!

How to migrate ADFS Configuration database from Windows Internal Database (WID) to SQL Server


真不知道寫這個在台灣會有誰用到不過過程真的太艱辛了要寫一篇來紀念一下

ADFS AD Federation Service主要就是讓外部的服務可以透過 FS 主機利用 AD 去進行驗證達到 Single Sign On 的目標 Windows Server 裡面的一個角色:





      預設裝起來的話很快就裝好了你甚至可以把 ADFS 第二台第三台加進去讓他變成一個同盟可以同時提供高可用性的服務這在 2008R2 比較難因為 2008R2 預設是 ADFS 1.0必須另外獨立裝 ADFS2.0Server 2012 就好多了直接內建 2.0
那為什麼要把 Configuration 資料搬到 SQL Server 呢?

         因為預設的 Configuration 資料是放在 WID 的,就是 Windows Internal Database,內建的小資料庫,微軟很不夠意思的在官網上講,如果你把 ADFS 的資料放在 WID 的話....... 我們來看一下官方的解釋:


  • No more than five federation servers should be added to a federation server farm deployment. If you need more federation servers to support higher performance in farm deployment, use SQL Server instead.
  • No more than 100 trust relationships of the same type (either claims provider trusts or relying party trusts) can be supported. For example, you can have up to 100 claims provider trusts and 100 relying party trusts with a Windows Internal Database deployment, but to exceed this number for either category of trusts, use SQL Server instead.


         第一點還好就是不能放超過五台同盟我也不知道什麼巨大規模需要超過五台我們學校四五萬人我估個四台都覺得太高估了但是第二點頭就比較大了他竟然不能超過一百筆的信任關係一個網址進來進行認證就算一個我們學校的校務系統加上其他三姑六婆一定都超過一百組那就會造成很大的困擾只好咬牙開始轉移了!



首先你要先準備以下的材料:

  • ADFS Server 2~4: 就是乾淨的 Server 2012 加上 ADFS 的角色還不要加同盟喔推薦千萬要先快照 (Snapshot) 一次這樣就算做錯大不了重來就好Hyper-V 3.0 快照超快不用省這幾秒。
  • 在第一台 ADFS SQL Server Management Studio : 我們需要用到 sqlcmd 這個小工具所以要先花時間裝一下Express 或是正式版都可以可以到微軟下載 Express 版
  • SQL Server 一台: 建議開啟 SQL 驗證,不然跨網域就有點麻煩了!





Step.1 ADFS 的服務停止,並將資料庫檔案卸載並搬出
--------------------------------------------------------------------------------
開啟工程師的好朋友 Command Prompt,記得要按右鍵"以系統管理員身分執行",然後輸入:

net stop adfssrv

ADFS 的服務停掉,沒有用系統管理員身分就會存取被拒,其實直接去服務關掉也是可以,沒辦法,打指令比較帥嘛~~

接下來要把 WID 上面的資料庫先卸載,打開 PowerShell,輸入以下指令:

    sqlcmd -S \\.\pipe\MICROSOFT##WID\tsql\query
    use master
    go         
    sp_detach_db 'adfsconfiguration'
    go
    sp_detach_db 'adfsartifactstore'
    go

微軟非常認 (ㄐㄧㄢ) (ㄓㄚˋ) 的把 WID 目錄在 Server 2012 改了,如果各位有去 Google 就會發現,以下是差別:

Server 2008R2:
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query

Server 2012:
sqlcmd -S \\.\pipe\MICROSOFT##WID\tsql\query


如果你在 2012 執行,會發現下了根本沒反應,因為路徑根本就換了啊~~~~,以前是在 C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\Data
現在的路徑已經改到了 C:\Windows\WID\Data 下面,由此可見,很多指令都要重找,不然一定會常常碰壁。






Step.2 把資料庫檔案移動到 SQL SERVER 資料庫主機下
------------------------------------------------------------------------------
卸載了之後,到 C:\Windows\WID\Data 下,把兩個資料庫檔案跟兩個 LOG

adfsconfiguration.mdf
adfsconfiguration_log.ldf
adfsartifactstore.mdf
adfsartifactstore_log.ldf

這四個檔複製到 SQL Server 的目錄下,看要哪裡都可以,跟其他 MDF 放在一起也可以。




Step.3 ADFS 的資料庫在 SQL Server 掛載起來
------------------------------------------------------------------------------

麻煩打開 Windows 工程師另外一個好朋友 Powershell,輸入以下指令:

sqlcmd -S \\.\pipe\MICROSOFT##WID\tsql\query  --Server2012
use master
go
sp_attach_db 'adfsconfiguration', 'F:\MSSQL11.MSSQLSERVER\MSSQL\DATA\adfsconfiguration.mdf', 'F:\MSSQL11.MSSQLSERVER\MSSQL\DATA\adfsconfiguration_log.ldf'
go
sp_attach_db 'adfsartifactstore', 'F:\MSSQL11.MSSQLSERVER\MSSQL\DATA\adfsartifactstore.mdf', 'F:\MSSQL11.MSSQLSERVER\MSSQL\DATA\adfsartifactstore_log.ldf'
go
alter database AdfsConfiguration set enable_broker with rollback immediate
go

* 裡面的路徑就是你放 mdf 檔跟 ldf 檔的地方喔

成功的話,就可以在你的 SQL Server 下面看到 configuration 跟 artifactstore 資料庫了!






Step.4 ADFS 的 Configuration 資料庫設定切到 SQL Server
------------------------------------------------------------------------------
做了這個步驟 ADFS 才會去存取 SQL Server 的資料庫 請用系統管理員身分執行 Powershell 輸入:

$temp=GEt-WmiObject -namespace root/ADFS -class SecurityTokenService
$temp.ConfigurationdatabaseConnectionstring="data source=yourdatasource;initial catalog=adfsconfiguration;User ID=username;Password=password;"
$temp.put()


這邊記住一定要以系統管理員身分執行,不然最後 $temp.put() 會說傳了一個無效值 0,其實就是權限不足,這邊困擾我好久,還想說用別的方法改設定,最後沒想到是這麼簡單的解決方法!



Step.5 啟動 ADFS 服務
------------------------------------------------------------------------------
以系統管理員身分執行 Command Prompt輸入

net start adfssrv

可以啟動代表你剛剛切換有成功!



Step.6  ADFS artifactdbconnection 設定切到 SQL Server
------------------------------------------------------------------------------
記得我們剛剛移轉了兩個資料庫嗎? 現在要把另外一個設定也切過去請用系統管理員身分執行 Powershell 輸入:

Add-pssnapin microsoft.adfs.powershell
Set-adfsproperties –artifactdbconnection “data source=DATASOURCE; initial catalog=adfsartifactstore;integrated security=true”



Step.7  重新啟動 ADFS 服務
------------------------------------------------------------------------------
以系統管理員身分執行 Command Prompt,輸入

net stop adfssrv
net start adfssrv

成功的話代表兩個資料庫都切換到 SQL Server! 恭喜!



Step.8  ADFS Server 加入同盟伺服器
------------------------------------------------------------------------------
剛剛只做了第一台,現在要把其他幾台也加進去同盟伺服器
請確定以下事情都準備好了:

  • 有加入網域
  • ADFS 角色安裝完畢
  • ADFS 憑證有 import 進去且是正常的
  • IIS 把憑證繫結 Default Web Site 443 PORT


第三點的意思是,你要在憑證管理裡面看到憑證是沒有問題的才 OK



第四點沒有做好等一下加入同盟伺服器會有警告出現。


因為如果把 Cofig 資料搬到 SQL Server 的話,就不能用精靈加入同盟,一定要利用指令方式使用 ADFS 目錄下的 FsConfig.exe 裡面的 JoinSqlFarm 指令才可以加入,請用管理員身分打開 Command Prompt,到 ADFS 所在的目錄下 C:\Windows\ADFS  輸入:

FsConfig.exe JoinSQLFarm /ServiceAccount Domain\AccountName /ServiceAccountPassword Password /SQLConnectionString "data source=YourDataSource;initial catalog=adfsconfiguration;User ID=username;Password=password;"


如果之前沒有在 IIS 把憑證繫結成功 會有以下錯誤畫面:



成功的話就像以下這樣:


接下來就把剩下的 ADFS 主機一一加入,就大功告成!!

2013年6月5日 星期三

安裝SQL Server 2012 容錯移轉叢集 Cluster 筆記第三篇 - 完成安裝MS SQL Server 2012 Cluster





只建了一台當然還不算 Cluster, 接著我們繼續裝第二台



選擇"將節點加入到 SQL Server 容錯移轉叢集"



選擇要加入的個體, 如果是預設應該是 MSSQLSERVER

勾選就好 
輸入剛剛安裝的密碼


沒錯就可以開始安裝



 安裝成功的話就可以在叢集移轉管理員裡面看到 SQL SERVER 了, 試著在節點間移動, 都沒有錯誤訊息的話就算安裝成功!





我自己也是裝了兩次才成功, 因為要注意的點太多, 我想獨力安裝都可以學到很多才是, 要是順利到底的話就太可惜了 (誤)!

跟 2008 比起來安裝的難度是差不多的, 概念也是相同, 總之看畫面做也是有可能出錯的, 好好想想每個細節吧!


2013年6月4日 星期二

安裝SQL Server 2012 容錯移轉叢集Cluster筆記第二篇 - 安裝MS SQL Server 2012 Cluster





之前那一篇把底層建起來了 (安裝 SQL Server 2012 Cluster-- 建立 Windows Server 2012 容錯移轉叢集)
這一篇就來講一下 SQL Server 的安裝
由於因為 Cluster 的架構, 所以安裝跟單機版有點不同

主要分成兩個部分

  • 安裝 Microsoft 分散式交易協調器
  • 安裝 SQL Server Cluster

分散式交易調節器 (Distributed Transaction Coordination) 就是負責管理各種交易 (Transaction),負責處理多個不同資料來源的資料進行交易處理,確保跨伺服器間的各種複雜操作,SQL Server 如果要裝在叢集上 就是透過 DTC 服務進行跨伺服器的溝通交易存取。


容錯移轉叢集管理員 --> 角色 --> 設定角色

按下一步

新增分散式交易協調器 (DTC)

輸入 DTC 名稱及 IP

因為筆者這邊忘記截圖... 應該要選之前設定的 1GB CSV(Cluster Share Volume)

建完之後去叢集管理員就會看到這個小東西

確定資源都有上線


測試一下可不可以移轉 對著 DTC 服務選移動 然後選取節點

開始進行移轉.........
順利在第二個節點執行代表設定成功!

安裝 SQL Server 2012 Cluster


因為 Server 2012 支援直接開啟 ISO所以可以直接雙點 ISO 檔,就可以把這個 ISO 檔掛載到光碟機下
選擇"新的 SQL Server 容錯移轉叢集安裝"


會有一些前置的檢查更新作業...... 按下一步
會進行安裝前置檢查
下一步

選擇必要的元件安裝
設定 SQL Server 的網路名稱 然後設定執行個體 如果第一次安裝就選預設

會出現需要的磁碟空間
預設叢集資源群組名稱為 MSSQLSERVER, 這三個紅色只是提醒你而已 不要擔心, 繼續下一步!
可以勾選之前沒用的 CSV 了
要設定 SQL SERVER 的 IP (有沒有覺得要準備很多 IP....)
 設定可以存取 SQL Server 的密碼
設定驗證模式還有指派管理員帳號
第二個分頁就可以設定各個檔案目錄
確定設定 OK 的話就開始安裝
這個畫面要看很久......
安裝完就會看到 SQL Server 的角色出現, 但是還不能移轉, 因為第二台還沒裝
看到全部都是線上就代表成功了