Archive

Archive for the ‘Infrastructure’ Category

Cluster Disk With Identifier (identifier) has a Persistent Reservation on it

November 27, 2009 Mohamed Fawzi Leave a comment

One of my customer’s team member had destroy the Hyper-V Cluster by mistake. He formatted the cluster nodes without evict them before doing that . The nodes of the clsuter used to be  part of old cluster that was destroyed by mistake.

I tried to build the nodes again from the scratch and Create new cluster, When I run the validation wizard I got this error:

Cluster disk with identifier (identifier) has a persistent reservation on it ,the disk might be part of other cluster. removing the disk from other validation set.

My SAN is HP EVA. The Cluster is not able to see any of my LUNS although I can see them from disk management and can’t create the cluster.

This error due to the fact that the LUNs still keeping the old identifiers from the old cluster, You have to use Cluster command line to clear the reservation by that command:

cluster.exe node %nodename% /clear:disknumber

Now everything should work fine and you can pass the validation wizard :)

Quick Tip: Query Active Directory Functional Levels

October 30, 2009 Mohamed Fawzi Leave a comment

To determine the domain functional level, Windows Server 2003 uses a combination of two attributes stored in Active Directory. To determine the forest functional level, Windows Server 2003 uses a single attribute.
To verify the forest and domain functional level by using ADSIEdit.msc:

  1. Open a Run command, and type ADSIEdit.msc
  2. Expand the Domain object, right-click domainname (where domainname is the distinguished name of the domain that you want to check), and then click Properties.
  3. Under the Attribute column, scroll until you locate the msDS-Behavior-Version attribute. Check the value of this attribute.
  4. Check the value of the nTMixedDomain attribute on the domain object. The following table provides the details for both attributes for the domain functional level.
Domain functional level msDS-Behavior-Version attribute nTMixedDomainattribute
Windows 2000 mixed 0 1
Windows 2000 native 0 0
Windows Server 2003 2 0

To verify the forest functional level, expand the Configuration object, and  then expand the CN=Configuration,forestname object (where forestname is the  distinguished name of the forest).

Right-click the Partitions container, and then click Properties. Locate the  msDS-Behavior-Version attribute, and check the value of this attribute. The  following table provides the details for the attribute for the forest  functional level.

Forest functional level msDS-Behavior-Version attribute
Windows 2000 0
Windows 2000 interim 1
Windows Server 2003 2

Source: Microsoft Corporation

Hyper-V Domain Controller Negative Ping Results

October 28, 2009 Mohamed Fawzi 5 comments

This one was a little bit new for me, About 6 months ago one of my customers told me that some times his new virtual Domain Controller is giving a negative ping results.

Negative Ping

This DC was working fine and it was new installation Windows server 2003 Domain Controller. Every 5 minutes it reports an event 1054 saying that it cannot find the domain controller name.

Event ID: 1054
Source: Userenv
Type: Error
Description:
Windows cannot obtain the domain controller name for your computer network. (The specified domain either does not exist or could not be contacted). Group Policy processing aborted.

everything was fine and SRV and DNS records are created fine, Clients can logon and access the server with no problem and the group policy is being applied correctly.

As per Microsoft KB This behavior may occur if the address for the configured preferred DNS server on the client is invalid or unreachable. but everything from the client side is fine as expected.

That is odd. I was sure that no problem with the system at all. After some time searching for that I start to suspect the hardware or the network and Bingoooo I was right

Problem now resolved via a HP support article below

SUPPORT COMMUNICAT

ION – CUSTOMER ADVISORYDocument ID: c01075682

 

Version: 2
Advisory: (Revision) HP ProLiant Servers Using Dual-Core or More Than One Single-Core AMD Opteron Processor May Experience Incorrect Operating System Time When Running Systems That Use the System Time Stamp Counter
NOTICE: The information in this document, including products and software versions, is current as of the Release Date. This document is subject to change without notice.

Release Date: 2007-07-16

Last Updated: 2007-07-16

HP ProLiant servers configured with Dual-Core or with more than one single-core AMD Opteron processor may encounter Time Stamp Counter (TSC) drift in certain conditions. The TSC is used by some operating systems as a timekeeping source. Each processor core, whether it is a single-core processor or a dual-core processor, includes a TSC. The condition where the TSC for different processor cores becomes unsynchronized is known as TSC drift.

Note : The potential for TSC drift if the proper recommendations are not applied when using AMD Opteron 200-series, Opteron 800-series, Opteron 1200-series, Opteron 2200-series and Opteron 8200-series processors is not specific to HP ProLiant servers.

Whether or not the system is affected by TSC drift depends on the specific ProLiant server generation, the number and type of AMD Opteron processors installed, the operating system, and whether the AMD PowerNow! feature is being utilized. TSC drift can result in different symptoms and behaviors based on the operating system environment, as detailed below:

Microsoft Windows Server 2003
This condition affects operations such as network communications and performance monitoring tasks that are sensitive to system time. For example, Microsoft Active Directory domain controllers can report an Unexpected Network Error (Event ID 1054) with the following description:

Event Description:
Windows cannot obtain the domain controller name for your computer network. (An unexpected network error occurred.). Group Policy processing aborted.

In addition, a negative PING time or larger than actual PING time may be returned after issuing the PING command. The negative PING time occurs because of a Time Stamp Counter drift occurring on AMD Opteron platforms which include more than one processor core.

SCOPE

Any HP ProLiant server configured with more than one single-core AMD Opteron processor or configured with one (or more) dual-core AMD Opteron processors running the following operating systems:

Microsoft Windows Server 2003 (any edition)
Microsoft Windows Server 2003 x64 Edition (any edition)
Red Hat Enterprise Linux 4(x86) or earlier
Red Hat Enterprise Linux 4 (AMD64/EM64T) or earlier
SUSE Linux Enterprise Server 9 32-bit (x86) or earlier

Note : The issue does not affect systems with only one single-core processor installed.

The following servers are affected when running an affected operating system:

HP ProLiant BL465c Blade Server
HP ProLiant BL685c Blade Server
HP ProLiant BL25p G2 server
HP ProLiant BL45p G2 server
HP ProLiant DL145 G3 server
HP ProLiant DL385 G2 server
HP ProLiant DL585 G2 server
HP ProLiant DL365 server
HP ProLiant ML115 server

The following servers are affected ONLY when using the AMD PowerNow! feature and running an affected operating system:

ProLiant BL25p Blade Server
HP ProLiant BL45p Blade Server
HP ProLiant DL145 G2 server
HP ProLiant DL385 server
HP ProLiant DL585 server

The following operating systems are not affected by TSC drift because these operating systems do not use the TSC as a timekeeping source:

Microsoft Windows Server 2008 (codename Longhorn)
Red Hat Enterprise Linux 5 (x86)
Red Hat Enterprise Linux 5 (AMD64/EM64T)
SUSE Linux Enterprise Server 10 (x86)
SUSE Linux Enterprise Server 10 (AMD64/EM64T)
VMware ESX Server 3.0.0 (or later)

RESOLUTION

To ensure proper operation of tasks sensitive to system time, perform either of the following actions, based on the operating system environment:

Microsoft Windows Server 2003 (any edition)
Edit the BOOT.ini file and add the parameter “/usepmtimer,” then reboot the server. Adding the “/usepmtimer” parameter to the BOOT.INI file configures the Windows operating system to use the PM_TIMER, rather than the Time Stamp Counter.

So the final solution was that

To resolve this problem, install the new AMD CPU driver. To do this, visit the following AMD Web site:

http://www.amd.com/us-en/assets/content_type/utilities/setup.zip (http://www.amd.com/us-en/assets/content_type/utilities/setup.zip)

After you install the new driver, you must restart your computer.

Note The driver installation adds the /usepmtimer switch in the Boot.ini file. This switch is discussed in the above section.

Microsoft stuns Linux world, submits source code for kernel

July 23, 2009 Mohamed Fawzi 1 comment

Network World – In an historic move, Microsoft on Monday submitted driver source code for inclusion in the Linux kernel under a GPLv2 license.The code consists of four drivers that are part of a technology called Linux Device Driver for Virtualization. The drivers, once added to the Linux kernel, will provide the hooks for any distribution of Linux to run on Windows Server 2008 and its Hyper-V hypervisor technology. Microsoft will provide ongoing maintenance of the code.

Linux backers hailed the submission as validation of the Linux development model and the Linux GPLv2 licensing.

Virtualization, cloud underlie Microsoft’s Linux kernel submissionMicrosoft’s Linux kernel submission raises virtualization questions

Microsoft said the move will foster more open source on Windows and help the vendor offer a consistent set of virtualization, management and administrative tools to support mixed virtualized infrastructure.

“Obviously we are tickled about it,” said Jim Zemlin, executive director of the Linux Foundation. “Hell has frozen over, the seas have parted,” he said with a chuckle.

Microsoft made the announcement at the annual OSCON open source conference that opened Monday in San Jose.Greg Kroah-Hartman, the Linux driver project lead and a Novell fellow, said he accepted 22,000 lines of Microsoft’s code at 9 a.m. PT Monday. Kroah-Hartman said the Microsoft code will be available as part of the next Linux public tree release in the next 24 hours. The code will become part of the 2.6.30.1 stable release.

“Then the whole world will be able to look at the code,” he said.

The stable release is an interim build between each main release, which come in three-month cycles. The first main kernel release to include the open source driver technology will come in December as part of the 2.6.32 release, Kroah-Hartman said.The drivers will initially be part of the Linux kernel’s staging tree, a place where code is stored and polished before it is moved into the main tree. The code of every first-time kernel submitter begins life in the staging tree.

Kroah-Hartman said Microsoft’s submission was routine. “They abided by every single rule and letter of what we require to submit code. If I was to refuse this code it would be wrong,” he said.

Microsoft’s most important open source act

Sam Ramji, who runs the Open Source Software Lab for Microsoft and is the company’s director of open source technology strategy, called the Linux kernel submission the company’s most important Linux/open source commitment ever.

“It is a significant piece of technology. It is a strategic technology and it is under the GPLv2 license that the Linux kernel uses, and which the community is organized around.”

Read More There

MDOP 2008 R2 Release to Manufacturing!

September 16, 2008 Mohamed Fawzi Leave a comment

Just a week after my colleague Shanen Boettcher wrote about virtualization and its role in the Optimized Desktop, specifically announcing the RTM of Microsoft Application Virtualization 4.5, commonly called “App-V”, I’m proud to let you know that the entire MDOP 2008 R2 suite of products has officially reached RTM status!  New and existing customers can get App-V 4.5 starting TODAY, and will be able to get the other MDOP 2008 R2 components the first week of October!

There are a lot of new and very useful upgrades and improvements in MDOP 2008 R2 in addition to last week’s upgrade to App-V 4.5

Continue at the source

How to optimize Active Directory replication in a large network

September 2, 2008 Mohamed Fawzi Leave a comment

The Knowledge Consistency Checker (KCC) dynamically adjusts the data replication topology of your network when domain controllers are added to or removed from the network, when a domain controller is unavailable, or when the data replication schedules are changed.

The tasks of the KCC are:

Based on the network topology described by Active Directory objects, the KCC creates connection objects which are used to define inbound and outbound replication to domain controllers:

For sources within the same site, inbound to the domain controller on which the KCC is running.
For sources in different sites, inbound to the site in which the KCC is running, if the domain controller on which the KCC is running is the elected interSiteTopologyGenerator for its site.
Convert the KCC-defined and administrator-defined Microsoft Windows NT Directory Service Connection (ntdsConnection) objects into a configuration understood by the Directory Service (DS) replication engine.

By default, each of these tasks is executed every 15 minutes. For more information about the KCC, please see the Active Directory Replication chapter in the Windows 2000 Resource Kit.

More at the source

Troubleshooting client self-update issues

 Reference

WSUS uses IIS to automatically update most computers to the WSUS-compatible Automatic Updates (WSUS client). This process is called client self-update. To accomplish client self-update, WSUS Setup creates a virtual directory under the WSUS Web site named Selfupdate. This virtual directory holds the WSUS-compatible Automatic Updates. This is called the selfupdate tree.

Using Group Policy to point client computers to your WSUS server should eventually cause an Automatic Updates detection and client self-update.

 

If the client self-update does not work automatically, use the following suggestions to troubleshoot the problem.

1.       Verify that the SUS clients are pointed to the WSUS server

2.       Check for the selfupdate tree on the WSUS server

WSUS uses IIS to automatically update most client computers to the WSUS-compatible Automatic Updates. To accomplish this, WSUS Setup creates a virtual directory named Selfupdate, under the Web site running on port 80 of the computer where you install WSUS. This virtual directory, called the self-update tree, holds the latest WSUS client. For this reason, you must have a Web site running on port 80, even if you put the WSUS Web site on a custom port. The Web site on port 80 does not have to be dedicated to WSUS. In fact, WSUS only uses the site on port 80 to host the self-update tree.

To ensure that the self-update tree is working properly, first make sure there is a Web site set up on port 80 of the WSUS server. Next, type the following at the command prompt of the WSUS server:

cscript WSUSInstallationDrive:\program files\microsoft windows server update services\setup\InstallSelfupdateOnPort80.vbs

 

3.      Check IIS logs on the WSUS Server

Check the IIS logs on the WSUS server. IIS logs are typically located in %windir%\system32\LogFiles\W3SVC1 for the default Web site. If you copied the Wutrack.bin file to the \InetPub\wwwroot folder on the WSUS server when you set up client self-update, you can open the IIS logs and search for Wutrack.bin to attempt to locate error messages about why self-update is failing. Typical errors might be 404 (file not found) 401/403 (authentication/access), and 500 (Internal server error). Use IIS Help to troubleshoot any problems found in the IIS logs.

If you have installed Windows® SharePoint® Services on the default Web site in IIS, configure it to not interfere with Self-update

4.      Check network connectivity on the WSUS client computer

Check network connectivity on the WSUS client computer. Use Internet Explorer to determine if self-update files on the WSUS server are accessible to the client computer. If you perform the following procedure and are prompted to download or open the files, you have verified network connectivity. It is not necessary to save or open the files. You cannot self-update Automatic Updates this way. If you do not have access to these files, troubleshoot network connectivity between the WSUS client computer and the WSUS server.

To check network connectivity on the WSUS client computer

·        Click Start, and then click Run.

·        In the Open box, type iexplore and then press ENTER

·        In the Internet Explorer Address bar, type: http://WSUSServerName/iuident.cab

where WSUS server name is the name of your WSUS server. Ensure that you are prompted to download or open Iuident.cab. This verifies network connectivity from the WSUS client and the availability of the Iuident.cab file on the WSUS server.

·        If there are any boxes prompting you to download or save, click Cancel. In Internet Explorer Address bar, type:

http://WSUSServerName/selfupdate/AU/x86/osvariable/languagevariable/wuaucomp.cab

Where WSUSServerName is the name of your WSUS server and where osvariable is a variable indicating the operating system of the client computer. The possible variables for osvariableare NetServer, W2K or XP, and where languagevariable is a variable indicating the language of the operating system of the client computer. The possible variables for oslanguage are based on the standard 2- to 4-letter language abbreviations. For example, here is a URL for a client computer running an English version of Windows XP:

http://WSUSServerName/selfupdate/AU/x86/XP/EN/wuaucomp.cab

Ensure that you are prompted to download or save Wuaucomp.cab. This verifies network connectivity from the WSUS client and the availability of the Iuident.cab file on the WSUS server

 

5.      Check logs on the SUS client computer

Check the %windir%\windows update.log on the client computer to see if there has been any activity or any attempts to contact the server. Check the %systemdrive%\program files\windowsupdate\v4\urllog.dat file on the client computer for cached server pingbacks if the client computer has not been able to communicate with the server.

6.      Manipulate registry settings on the SUS client computer

If all else has failed, you can attempt to manually manipulate registry settings to get the client computer to self-update to the WSUS client.

To manually manipulate registry settings on the SUS client computer

·        Click Start, and then click Run.

·        In the Open box, type regedit and then click OK.

  • In Registry Editor, navigate to the WindowsUpdate key by expanding the following:

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\

If the WindowsUpdate key does not exist, do the following:

·        On the menu, click Edit, point to New, and then click Key.

Type WindowsUpdate as the name for the new key.

·        Double-click the WUServer setting, type the URL to your WSUS server, and then press ENTER.

If the WUServer setting does not exist, do the following:

On the menu, click Edit, point to New, and then click String Value.

·        Type WUServer as the setting name.

·        Double-click the WUStatusServer setting, type the URL to your WSUS server, and then press ENTER.

If the WUStatusServer setting does not exist, do the following:

On the menu, click Edit, point to New, and then click String Value.

·        Type WUStatusServer as the setting name.

·        Navigate to the following:

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU

If the AU key does not exist, do the following:

On the menu, click Edit, point to New, and then click Key.

·        Type AU as the name for the new key.

·        Verify that the UseWUServer setting has a value of 1 (0×1).If it does not, modify it by double-clicking the setting and then changing the value.

If the UseWUServer setting does not exist, do the following:

On the menu, click Edit, point to New, and then click DWORD Value.

·        Type UseWUServer for the setting name.

·        Navigate to the following:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update

 

·        Enable and configure Automatic Updates through Control Panel:

Click Start, click Control Panel, and then double-click Automatic Updates.

·        In the Automatic Updates dialog box, specify download and installation options, and then click OK. Make sure that Turn off Automatic Updates is not selected.

 

·        Ensure that the AUState setting has a value of 2 (0×2). If it does not, modify it by double-clicking and changing the value.

·        If the LastWaitTimeout setting exists, delete it.

·        If the DetectionStartTime setting exists, delete it.

·        At the command prompt, type the following, and then press ENTER to stop the Automatic Updates service:net stop wuauserv

·        At the command prompt, type the following, and then press ENTER to restart the Automatic Updates service: net start wuauserv

·        Wait approximately 6 to 10 minutes for the self-update to occur.

 

7.      To force the SUS client computer to check with the WSUS server

Wait approximately one minute, and then refresh the registry. You should now see the following settings and values:

·        DetectionStartTime (REG_SZ) YYYY.MM.DD HH.MM.SS. The DetectionStartTime value is written in local time, but the detection actually occurs 5 minutes after the time noted.

·        LastWaitTimeout (REG_SZ) YYYY.MM.DD HH.MM.SS. The LastWaitTimeout value is written in GMT or Universal Time, and represents the actual time that detection occurs.

 

Although these values refer to the time that detection is going to start, the first phase of detection is the process of checking whether a self-update is necessary. Therefore, these values actually refer to when self-update from SUS client to the WSUS client should occur.

If the client software has not self-updated after ten minutes, refresh the \Auto Update registry key. If the LastWaitTimeout value has changed and is now 24 hours later than its previous value, that indicates that Automatic Updates was not able to contact the server URL that you specified in the WUServer value.

 

 

 

 

 

Categories: Infrastructure Tags:

Purge / Delete corrupted or Un-needed patches on WSUS Server

If you want to purge the downloaded patches on WSUS Server to cleanup / delete unneeded content, then you have to use the following:

 

Download the MS WSUS server diagnostic tool on the MSWSUS site here

 

 

Use command line

WsusDebugTool.exe /Tool:PurgeUnneededFiles

 

What this does is purges all update files where all the updates are marked as DECLINED. So to make sure the files get deleted, make sure the update is declined first.

You have to DECLINE anything you want deleted, then run this tool.

WSUS Debug Tool: Run PurgeUnneededFiles command to Purge unneeded content. This command deletes all files not needed on the WSUS server.

 

Then use WSUSutil.exe command line 

 

Stop the- World Wide Web Publishing Service

WSUSUTIL.exe Deleteunneededrevisions

WSUSUTIL.exe Reset

WSUSUTIL.exe Removeinactiveapprovals

Start the- World Wide Web Publishing Service

 

Wsusutil.exe located in C:\Program Files\Update Services\Tools>wsusutil.exe

 

IMPORTANT

The option “Download update files to this server only when updates are approved” must be checked / selected or else, it will re-download those “not needed” updates, during the next sychronization schedule.

Open WSUSAdmin Console – Click on Options – Click on Synchronization Options – Scroll down to Update Files and Languages Section – Click on Advanced – Click OK – Select ”Download update files to this server only when updates are approved” – Click OK and save settings.

Event ID: 604 Source NTDS ISAM

Description NTDS (260) Must install language support for language id 0xxxx.

Event Type: Error Event

Source: NTDS ISAM

Event Category: General

Event ID:604

Date: 4/23/2008

Time: 03:34:12 AM

User: N/A

Computer:<ComputerName>

Description: NTDS 248 Must install language support for language ID xxxx.

This error happens if the domain controller or the Exchange server has users connect to it with this language Pack installed on users and missed on the server To solve this problem just install the missing language pack in this server

The language ID xxxx should also be found at HKEY_LOCAL_MACHINE\Software\Microsoft\NTDS\Language.Locate language ID xxxx and install the corresponding language pack:

Locale Language ID language in hexadecimal

-------------------------------------------------------
Afrikaans                    436
Albanian                     041c
Arabic_Saudi_Arabia          401
Arabic_Iraq                  801
Arabic_Egypt                 0c01
Arabic_Libya                 1001
Arabic_Algeria               1401
Arabic_Morocco               1801
Arabic_Tunisia               1c01
Arabic_Oman                  2001
Arabic_Yemen                 2401
Arabic_Syria                 2801
Arabic_Jordan                2c01
Arabic_Lebanon               3001
Arabic_Kuwait                3401
Arabic_UAE                   3801
Arabic_Bahrain               3c01
Arabic_Qatar                 4001
Armenian                     042b
Azeri_Latin                  042c
Azeri_Cyrillic               082c
Basque                       042d
Belarusian                   423
Bulgarian                    402
Catalan                      403
Chinese_Taiwan               404
Chinese_PRC                  804
Chinese_Hong_Kong            0c04
Chinese_Singapore            1004
Chinese_Macau                1404
Croatian                     041a
Czech                        405
Danish                       406
Dutch_Standard               413
Dutch_Belgian                813
English_United_States        409
English_United_Kingdom       809
English_Australian           0c09
English_Canadian             1009
English_New_Zealand          1409
English_Irish                1809
English_South_Africa         1c09
English_Jamaica              2009
English_Caribbean            2409
English_Belize               2809
English_Trinidad             2c09
English_Zimbabwe             3009
English_Philippines          3409
Estonian                     425
Faeroese                     438
Farsi                        429
Finnish                      040b
French_Standard              040c
French_Belgian               080c
French_Canadian              0c0c
French_Swiss                 100c
French_Luxembourg            140c
French_Monaco                180c
Georgian                     437
German_Standard              407
German_Swiss                 807
German_Austrian              0c07
German_Luxembourg            1007
German_Liechtenstein         1407
Greek                        408
Hebrew                       040d
Hindi                        439
Hungarian                    040e
Icelandic                    040f
Indonesian                   421
Italian_Standard             410
Italian_Swiss                810
Japanese                     411
Kazakh                       043f
Konkani                      457
Korean                       412
Latvian                      426
Lithuanian                   427
Macedonian                   042f
Malay_Malaysia               043e
Malay_Brunei_Darussalam      083e
Marathi                      044e
Norwegian_Bokmal             414
Norwegian_Nynorsk            814
Polish                       415
Portuguese_Brazilian         416
Portuguese_Standard          816
Romanian                     418
Russian                      419
Sanskrit                     044f
Serbian_Latin                081a
Serbian_Cyrillic             0c1a
Slovak                       041b
Slovenian                    424
Spanish_Traditional_Sort     040a
Spanish_Mexican              080a
Spanish_Modern_Sort          0c0a
Spanish_Guatemala            100a
Spanish_Costa_Rica           140a
Spanish_Panama               180a
Spanish_Dominican_Republic   1c0a
Spanish_Venezuela            200a
Spanish_Colombia             240a
Spanish_Peru                 280a
Spanish_Argentina            2c0a
Spanish_Ecuador              300a
Spanish_Chile                340a
Spanish_Uruguay              380a
Spanish_Paraguay             3c0a
Spanish_Bolivia              400a
Spanish_El_Salvador          440a
Spanish_Honduras             480a
Spanish_Nicaragua            4c0a
Spanish_Puerto_Rico          500a
Swahili                      441
Swedish                      041d
Swedish_Finland              081d
Tamil                        449
Tatar                        444
Thai                         041e
Turkish                      041f
Ukrainian                    422
Urdu                         420
Uzbek_Latin                  443
Uzbek_Cyrillic               843
Vietnamese                   042a

Hands-on Vista SP1: Better but slower?

February 15, 2008 Mohamed Fawzi Leave a comment

 After Long time of waiting Microsoft announce for Vista SP1 Beta Release.

Check this out.

Good Review By Preston Gralla

Categories: Infrastructure, Vista