9
VMware 笔记
ICON1 陈方安生 | ICON2 VM | 图标4 03 9日, 2018| ICON1 8,073 意见 | ICON3评论 »

【vSphere HA会】
vSphere HA必须在ESXi主机发生故障损坏事件时,才会在HA Cluster中其他存活的ESXi主机,将存放在共享储存资源中的VM虚拟主机重新启动。

若是底层的ESXi主机并未发生故障损坏事件,而是vCenter Server虚拟主机内本身所运作的服务停止的时候,那么vSphere HA高可用性机制是帮不上忙的。 (故可以靠Watchdog补足)

【看门狗】(6.0以上才支援,预设情况会自动启用)
vCenter Server 6.0新增了「Watchdog」监控机制,当运作的服务发生故障事件而停止运作,前2次发生时,Watchdog会尝试重新启动服务,倘若第3次仍无法重新启动服务,便会将VM虚拟主机重新启动。

【參考連結】

——
【VMware的数据恢复】
VMware Data Recovery(vDR)属于Disk-based的备份方式,具有简单操作及容易部​​署的特性(因为它也是一台虚拟主机),支援Windows VSS(Volume Shadow Copy)备份方式,也支援简单的重复资料删除功能(Data De-duplication)。

但是此备份工具有如下的相关功能限制:

·备份环境中必须具备vCenter Server,才可使用此备份工具。
·属于Disk-based,因此无法使用File Level或Block Level备份方式。
·每台vDR仅能备份100台虚拟主机。
·无法运作于IPv6网路环境上。
·仅支援备份运作Windows作业系统(Windows 2000/XP/Vista/7、Windows Server 2003/2008)的虚拟主机,不支援其他作业系统,如Linux、Solaris等虚拟主机。

【參考連結】

——
【VMware容错】
如果企业无法接受VMware HA机制启动时虚拟主机有短暂的停机时间,则VMware FT可能是一个解决的方案,但是启用VMware FT有许多先决条件,例如该虚拟主机不能进行快照(Snapshot)、无法使用Stoarge vMotion功能、该虚拟主机只能使用一个vCPU等等条件限制。

VMware FT机制会于2台不同的Host上分别建立Primary和Secondary虚拟主机,并且采用vLockstep技术以ESX/ESXi Host上的VMkernel Port来传送Primary虚拟主机的资料至Secondary虚拟主机上,但是Secondary不会有实际I/O的写入行为。

当Primary虚拟主机所处的ESX/ESXi Host故障损坏时,则Secondary虚拟主机会马上接手相关作业,并且成为Primary虚拟主机,此时会在另一台ESX/ESXi Host上,再度建立一台新的Secondary虚拟主机来与Primary虚拟主机同步资料

【總結】
·vMotion/DRS:此机制适合用于「计画性」停机,例如当ESX/ESXi Host实体伺服器发生记忆体、硬碟故障,或者需要停机进行韧体(Firmware)更新及岁修时,这种排定好的计画性工作可以使用此技术,将运作于虚拟化平台上的虚拟主机,迁移到其他台ESX/ESXi Host上,让企业可在服务不中断的情况下维修实体主机。

· HA / FT:此机制为适合用于「非计画性」停机。当ESX/ESXi Host实体伺服器电力系统出问题而不当断电,或者实体主机的主机板损坏导致实体主机故障而这些非人为因素损坏之非计画性故障状况发生时,透过此机制可以使虚拟主机自动迁移到其他台ESX/ESXi Host上继续开机运作。

但很重要的一点是,这些机制都仅仅是保护ESX/ESXi Host Level层级而已,而并非虚拟主机的作业系统层级(OS Level),以及作业系统上的应用程式层级(Application Level)。

例如先前提到的VMware HA机制,当ESX/ESXi Host故障损坏时,等于运作于其上的虚拟主机也是被不当关机,虽然虚拟主机可以在其他台Host上再度开机,但很有可能虚拟主机的作业系统已经因为不当关机而造成作业系统损坏,因此即使已经迁移到别台Host上,也无法顺利开机成功,所以作业系统的备份作业有其必要性。

而VMware FT机制是让2台虚拟主机资料一模一样进行运作,因此若是Primary虚拟主机发生当机的状况时,例如Windows作业系统发生蓝色当机画面(Blue Screen Of Death,BSOD),此时将会因为vLockstep同步机制,而使得Secondary虚拟主机也发生系统当机的状况。

至于应用程式层级的保护机制,目前也有许多厂商研发相关机制,例如Symantec以Veritas Cluster技术开发的Application HA,便是可以保护虚拟主机上运作的应用程式,如MSSQL、Exchange、神谕、SAP等等。

【參考連結】

—–
【VMware DRS可】
自动根据实体主机的负载 , 自动调度虚拟系统的位置 , 也就是当某台实体主机负载较高 , 可以透过 DRS 将部份子系统透过 VMotion 搬到负载较轻的实体主机。

二月 26
HP服务器iLO4很慢
ICON1 陈方安生 | ICON2 其他 | 图标4 02 26日, 2018| ICON1 8,059 意见 | ICON3评论 »

  前年买了一台HP ProLiant Server,这是第一次自己在HP伺服器安装系统(以往都是买IBM),第一次使用iLO时,觉得比IBM的ServerGuide机制方便许多,至少我不用上网去寻找ServerGuide的版本及下载烧录等,但有发现操作的过程似乎有点异常的慢,由于是第一次使用iLO,加上后续也正常装进OS了,便也没再研究。
继续浏览 »

二月 22
//MVC3開始,新增Razer語法,不同於先前的<%...%>括號語法,使用At Sgin(@)敘述程式碼片段。

//在Razer檢視中,使用@*...*@進行程式註解。

//在程式碼中,要輸出內容,要加@或@(...)
//在html標籤中,要輸出內容,要加@
//在程式碼中,要輸出純文字,要加@:
@if(true)
{
    String strPrint = "這是測試輸出文字";
    @strPrint<br/>
    <span>strPring</span><br />
    <span>@strPrint</span><br />
}

@{string strl = "測試";}
@(strl)輸出文字<br />

@{ string strHtml1 = "<ul><li>項目一</li></ul>";}
@Html.Raw(strHtml1)<br />

二月 13

  中午在帮公司一台x3650 M5安装Windows Update并重开机后,就再也唤醒不能,一度怀疑是不是Updates的bug造成,毕竟近期Updates的问题出现的有点频繁。把机壳打开后,除了一颗LED 163亮error外,看到SYS BRD ERROR这颗也亮了,很想直接宣判死刑,请DBA同仁赶紧进行后续补救措施,不过同事外出吃饭,加上这台是公司主要的DB Server,如果放弃这台,补救时间起码要两小时,且早上建的资料都要重来了,因此还是急切的寻找唤醒它的机会。

继续浏览 »

二月 5
//在測試Controller與View時,如果因為設中斷點導致網頁顯示不完整而無法進行測試,
//可以試著點選"跳離函式(Shift+F11)",讓頁面完整顯示,以進行測試。

//先於Model設計好欄位變數等,
//再於Controller設定執行時,透過剛設計的Model樣板,進行各個變數的處理(遞交資料)
//如從網頁欄位A讀取資料到變數X,再把X送到網頁的欄位B
//最後於View設計各欄位的顯示情形
二月 4
//Controllers\HomeController.cs
public ActionResult Index()
        {
            TempData["Message"] = "修改此範本即可開始著手進行您的ASP.NET MVC應用程式。";
            return View();
        }
<!--Views\Home\Index.cshtml-->
<h2>@TempData["Message"]</h2>
二月 3
    //資料模型一對多關聯
    public class Guestbook
    {
        public int Id { get; set; }
        public string Content { get; set; }
        public DateTime CreateTime { get; set; }
        public Member Member { get; set; }
    }

    public class Member
    {
        [Key]
        public string Username { get; set; }
        public string Password { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }

        public ICollection<Guestbook> Guestbook { get; set; }
    }
    //Code First 就是在Model定義好各欄位後,其他的Controller、View都會自動幫你產生,
    //很神奇的功能,讓你專注在寫Model的部分就好
一月 31

    public class Index
    {
        [DisplayName("必選修")]
        //上面中括號這項非必要
        public string Required { get; set; }

        /*name只能有一個,所以這兩段先註解掉
        [Required(ErrorMessage = "學生姓名不得為空白")]
        public string Name { get; set; }

        [StringLength(10, ErrorMessage = "學生姓名不得超過10字元")]
        public string Name { get; set; }
        */

        [StringLength(10, ErrorMessage = "學生姓名必須介於2-10字元", MinimumLength = 2)]
        public string Name { get; set; }

        [Range(0, 100, ErrorMessage = "得分必須介於0~100之間")]
        public int Point { get; set; }

        [System.Web.Mvc.Compare("re_password", ErrorMessage = "兩次密碼輸入不一致")]
        //上面沒有using System.Web.Mvc的話,這邊就要打完整的命名空間
        public string Password { get; set; }
        public string Re_password { get; set; }

        [RegularExpression( @"^[0-9]{2,4}-?[0-9]{3,4}-?[0-9]{-4}$", ErrorMessage = "請輸入正確的電話號碼")]
        public string Phone { get; set; }

        [EmailAddress(ErrorMessage = "這不是E-mail格式")]
        public string Studentmail { get; set; }

        [Url(ErrorMessage = "這不是網址標準格式")]
        public string Url { get; set; }

        [FileExtensions(ErrorMessage = "所上傳的檔案不是圖片")]
        public string File { get; set; }

        [CreditCard(ErrorMessage = "這不是信用卡格式")]
        public string CreditCard { get; set; }

        [DataType(DataType.Date)]
        public string Date { get; set; }

        [Remote("RemoteTest", "Home", ErrorMessage = "Remote屬性測試")]
        public string For_Remote { get; set; }

        [MetadataType(typeof(ContentMetaData))]
        public partial class Content
        {
            private class ContentMetaData
            {
                [DisplayName("編號")]
                public int Id { get; set; }

                [DisplayName("姓名")]
                [Required(ErrorMessage = "請輸入性名")]
                [StringLength(10, ErrorMessage = "姓名不得超過10字元")]
                public string Name { get; set; }

                [DisplayName("內容")]
                [Required(ErrorMessage = "請輸入內容")]
                public string Content { get; set; }
            }
        }
    }
一月 31

  早上遇到一个问题,前晚在设定完Synology NAS的权限后,今天遇到有人反应开启NAS上的档案时,外貌”目录名称无效”的错误,确认NAS权限没问题后,就上网找资讯,有找到一位网友遇到同样的情形,且看起来是Windows 10更新到1709后才发生,查看手边的电脑,确实也是1709。

继续浏览 »

一月 30
    public class Index
    {
        [DisplayName("必選修")]

        public string required { get; set; }

        /*name只能有一個,所以這兩段先註解掉
        [Required(ErrorMessage = "學生姓名不得為空白")]
        public string name { get; set; }

        [StringLength(10, ErrorMessage = "學生姓名不得超過10字元")]
        public string name { get; set; }
        */

        [StringLength(10, ErrorMessage = "學生姓名必須介於2-10字元", MinimumLength = 2)]
        public string name { get; set; }

        [Range(0, 100, ErrorMessage = "得分必須介於0~100之間")]
        public int point { get; set; }

        [System.Web.Mvc.Compare("re_password", ErrorMessage = "兩次密碼輸入不一致")]
        //上面沒有using System.Web.Mvc,所以這邊就要打完整的命名空間
        public string password { get; set; }
        public string re_password { get; set; }

        [RegularExpression( @"^[0-9]{2,4}-?[0-9]{3,4}-?[0-9]{-4}$", ErrorMessage = "請輸入正確的電話號碼")]
        public string phone { get; set; }

        [EmailAddress(ErrorMessage = "這不是E-mail格式")]
        public string studentmail { get; set; }

        [Url(ErrorMessage = "這不是網址標準格式")]
        public string url { get; set; }
    }