Monday, July 29, 2013

Restoring VM's backed up from ghettoVCB to ESX(i) 3.5, 4.x & 5.x

Usage:

[root@himalaya ~]# ./ghettoVCB-restore.sh
###############################################################################
#
# ghettoVCB-restore for ESX/ESXi 3.5, 4.x and 5.x
# Author: William Lam
# http://www.virtuallyghetto.com/
# Created: 08/18/2009
# Last modified: 2011_11_19_1
#
###############################################################################

Usage: ./ghettoVCB-restore.sh -c [VM_BACKUP_UP_LIST] -l [LOG_FILE] -d [DRYRUN_DEBUG_INFO]

OPTIONS:
   -c     VM backup list
   -l     File ot output logging
   -d     Dryrun/Debug Info [1|2]

(e.g.)

Output will go to stdout
        ./ghettoVCB-restore.sh -c vms_to_restore

Output will log to /tmp/ghettoVCB-restore.log
        ./ghettoVCB-restore.sh -c vms_to_restore -l /tmp/ghettoVCB-restore.log

Dryrun/Debug Info (dryrun only)
        ./ghettoVCB-restore.sh -c vms_to_restore -d 1
        ./ghettoVCB-restore.sh -c vms_to_restore -d 2



Standard input for script is a file that contains:

1) Full path to the backed up VM

2) Full restore path

3) Restoration disk format

4) Restored VM Display Name (NEW!)

Reminder: When creating this file on a non-Linux/UNIX system, one may  introduce ^M characters that will cause the script to misbehave. To  ensure that this does not occur, please create the file on the ESX/ESXi  host.


Here is a sample of what the file should look like:


[root@himalaya ~]# cat vms_to_restore
#"<DIRECTORY or .TGZ>;<DATASTORE_TO_RESTORE_TO>;<DISK_FORMAT_TO_RESTORE>;<OPTIONAL_RESTORED_VM_DISPLAY_NAME>"
# DISK_FORMATS
# 1 = zeroedthick
# 2 = 2gbsparse
# 3 = thin
# 4 = eagerzeroedthick
# e.g.
# "/vmfs/volumes/dlgCore-NFS-bigboi.VM-Backups/WILLIAM_BACKUPS/VCAP/VCAP-2009-08-18--1;/vmfs/volumes/himalaya-local-SATA.RE4-GP:Storage;1""/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36;/vmfs/volumes/mini-local-datastore-1;3"
"/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36;/vmfs/volumes/mini-local-datastore-1;1;VCSA-RESTORE"


Comments in the input file is acceptable so long as the intended line is preceded by a #. The above sample VM restore file,
vms_to_restore, describes the following backup:



VM to restoreDatastore to restore toVMDK formatRestore VM Name
/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36/vmfs/volumes/mini-local-datastore-1thinVCSA-5.1
/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36/vmfs/volumes/mini-local-datastore-zeroedthickVCSA-RESTORE





Sample Execution:


Perform a dryrun by displaying debug information ( restore will not take place)

Display debug information level 1:

# ./ghettoVCB-restore.sh -c vms_to_restore -d 1
################ DEBUG MODE ##############
Virtual Machine: "VCSA-5.1"
VM_ORIG_VMX: "VCSA-5.1.vmx"
VM_ORG_FOLDER: "VCSA-5.1-2012-12-25_01-30-36"
VM_RESTORE_VMX: "VCSA-5.1.vmx"
VM_RESTORE_FOLDER: "VCSA-5.1"
VMDK_LIST_TO_MODIFY:
scsi0:0.fileName = "VCSA-5.1.vmdk"
scsi0:0.fileName  = "VCSA-5.1-0.vmdk"
scsi0:1.fileName = "VCSA-5.1_1.vmdk"
scsi0:1.fileName  = "VCSA-5.1-1.vmdk"
##########################################


################ DEBUG MODE ##############
Virtual Machine: "VCSA-RESTORE"
VM_ORIG_VMX: "VCSA-5.1.vmx"
VM_ORG_FOLDER: "VCSA-5.1-2012-12-25_01-30-36"
VM_RESTORE_VMX: "VCSA-RESTORE.vmx"
VM_RESTORE_FOLDER: "VCSA-RESTORE"
VMDK_LIST_TO_MODIFY:
scsi0:0.fileName = "VCSA-5.1.vmdk"
scsi0:0.fileName  = "VCSA-RESTORE-0.vmdk"
scsi0:1.fileName = "VCSA-5.1_1.vmdk"
scsi0:1.fileName  = "VCSA-RESTORE-1.vmdk"
##########################################


Start time: Sun Jan 13 16:45:12 UTC 2013
End   time: Sun Jan 13 16:45:14 UTC 2013
Duration  : 2 Seconds

---------------------------------------------------------------------------------------------------------------


Display debug information level 2:

[root@himalaya ~]# ./ghettoVCB-restore.sh -c vms_to_restore -d 2

################## Restoring VM: VCSA-5.1  #####################
==========> DEBUG MODE LEVEL 2 ENABLED <==========
Start time: Sun Jan 13 16:45:35 UTC 2013
Restoring VM from: "/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36"
Restoring VM to Datastore: "/vmfs/volumes/mini-local-datastore-1" using Disk Format: "thin"
Creating VM directory: "/vmfs/volumes/mini-local-datastore-1/VCSA-5.1" ...
Copying "VCSA-5.1.vmx" file ...
Restoring VM's VMDK(s) ...
Updating VMDK entry in "VCSA-5.1.vmx" file ...

SOURCE: "/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36/VCSA-5.1.vmdk"
    ORIGINAL_VMX_LINE: -->scsi0:0.fileName = "VCSA-5.1.vmdk"<--
DESTINATION: "/vmfs/volumes/mini-local-datastore-1/VCSA-5.1/VCSA-5.1-0.vmdk"
    MODIFIED_VMX_LINE: -->scsi0:0.fileName  = "VCSA-5.1-0.vmdk"<--
Updating VMDK entry in "VCSA-5.1.vmx" file ...

SOURCE: "/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36/VCSA-5.1_1.vmdk"
    ORIGINAL_VMX_LINE: -->scsi0:1.fileName = "VCSA-5.1_1.vmdk"<--
DESTINATION: "/vmfs/volumes/mini-local-datastore-1/VCSA-5.1/VCSA-5.1-1.vmdk"
    MODIFIED_VMX_LINE: -->scsi0:1.fileName  = "VCSA-5.1-1.vmdk"<--
Registering VCSA-5.1 ...
End time: Sun Jan 13 16:45:35 UTC 2013
################## Completed restore for VCSA-5.1! #####################

################## Restoring VM: VCSA-RESTORE  #####################
==========> DEBUG MODE LEVEL 2 ENABLED <==========
Start time: Sun Jan 13 16:45:35 UTC 2013
Restoring VM from: "/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36"
Restoring VM to Datastore: "/vmfs/volumes/mini-local-datastore-1" using Disk Format: "zeroedthick"
Creating VM directory: "/vmfs/volumes/mini-local-datastore-1/VCSA-RESTORE" ...
Copying "VCSA-5.1.vmx" file ...
Restoring VM's VMDK(s) ...
Updating VMDK entry in "VCSA-RESTORE.vmx" file ...

SOURCE: "/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36/VCSA-5.1.vmdk"
    ORIGINAL_VMX_LINE: -->scsi0:0.fileName = "VCSA-5.1.vmdk"<--
DESTINATION: "/vmfs/volumes/mini-local-datastore-1/VCSA-RESTORE/VCSA-RESTORE-0.vmdk"
    MODIFIED_VMX_LINE: -->scsi0:0.fileName  = "VCSA-RESTORE-0.vmdk"<--
Updating VMDK entry in "VCSA-RESTORE.vmx" file ...

SOURCE: "/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36/VCSA-5.1_1.vmdk"
    ORIGINAL_VMX_LINE: -->scsi0:1.fileName = "VCSA-5.1_1.vmdk"<--
DESTINATION: "/vmfs/volumes/mini-local-datastore-1/VCSA-RESTORE/VCSA-RESTORE-1.vmdk"
    MODIFIED_VMX_LINE: -->scsi0:1.fileName  = "VCSA-RESTORE-1.vmdk"<--
Registering VCSA-RESTORE ...
End time: Sun Jan 13 16:45:35 UTC 2013
################## Completed restore for VCSA-RESTORE! #####################


Start time: Sun Jan 13 16:45:34 UTC 2013
End   time: Sun Jan 13 16:45:35 UTC 2013
Duration  : 1 Seconds

---------------------------------------------------------------------------------------------------------------

Execute restore with output going to stdout (restore the first two VMs listed from above):

Input file:

# cat vms_to_restore
"/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36;/vmfs/volumes/mini-local-datastore-1;3"
"/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36;/vmfs/volumes/mini-local-datastore-1;1;VCSA-RESTORE"


./ghettoVCB-restore.sh -c vms_to_restore

################## Restoring VM: VCSA-5.1  #####################
Start time: Sun Jan 13 16:46:41 UTC 2013
Restoring VM from: "/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36"
Restoring VM to Datastore: "/vmfs/volumes/mini-local-datastore-1" using Disk Format: "thin"
Creating VM directory: "/vmfs/volumes/mini-local-datastore-1/VCSA-5.1" ...
Copying "VCSA-5.1.vmx" file ...
Restoring VM's VMDK(s) ...
Updating VMDK entry in "VCSA-5.1.vmx" file ...
Destination disk format: VMFS thin-provisioned
Cloning disk '/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36/VCSA-5.1.vmdk'...
Clone: 100% done.
Updating VMDK entry in "VCSA-5.1.vmx" file ...
Destination disk format: VMFS thin-provisioned
Cloning disk '/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36/VCSA-5.1_1.vmdk'...
Clone: 100% done.
Registering VCSA-5.1 ...
34
End time: Sun Jan 13 16:48:51 UTC 2013
################## Completed restore for VCSA-5.1! #####################

################## Restoring VM: VCSA-RESTORE  #####################
Start time: Sun Jan 13 16:48:52 UTC 2013
Restoring VM from: "/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36"
Restoring VM to Datastore: "/vmfs/volumes/mini-local-datastore-1" using Disk Format: "zeroedthick"
Creating VM directory: "/vmfs/volumes/mini-local-datastore-1/VCSA-RESTORE" ...
Copying "VCSA-5.1.vmx" file ...
Restoring VM's VMDK(s) ...
Updating VMDK entry in "VCSA-RESTORE.vmx" file ...
Destination disk format: VMFS zeroedthick
Cloning disk '/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36/VCSA-5.1.vmdk'...
Clone: 100% done.
Updating VMDK entry in "VCSA-RESTORE.vmx" file ...
Failed to clone disk: There is not enough space on the file system for the selected operation (13).
Destination disk format: VMFS zeroedthick
Cloning disk '/vmfs/volumes/mini-local-datastore-2/backups/VCSA-5.1/VCSA-5.1-2012-12-25_01-30-36/VCSA-5.1_1.vmdk'...
Registering VCSA-RESTORE ...
35
End time: Sun Jan 13 16:50:19 UTC 2013
################## Completed restore for VCSA-RESTORE! #####################


Start time: Sun Jan 13 16:46:40 UTC 2013
End   time: Sun Jan 13 16:50:19 UTC 2013
Duration  : 3.65 Minutes


---------------------------------------------------------------------------------------------------------------


Execute restore with output going to log file
/tmp/ghettoVCB-restore.log (restore the last two VMs listed from above):

[root@himalaya ~]# ./ghettoVCB-restore.sh -c vms_to_restore -l /tmp/ghettoVCB-restore.log
Logging output to "/tmp/ghettoVCB-restore.log" ...

Friday, July 26, 2013

Synchronize time with external NTP server on Windows Server 2008 (R2)

Synchronize time with external NTP server on Windows Server 2008 (R2).


Time synchronization is an important aspect for all computers on the network. By default, the clients computers get their time from a Domain Controller and the Domain Controller gets his time from the domain’s PDC Operation Master. Therefore the PDC must synchronize his time from an external source. I usually use the servers listed at the NTP Pool Project website. Before you begin, don’t forget to open the default UDP 123 port (in- and outbound) on your (corporate) firewall.
  1. First, locate your PDC Server. Open the command prompt and type: C:\>netdom /query fsmo
  2. Log in to your PDC Server and open the command prompt.
  3. Stop the W32Time service: C:\>net stop w32time
  4. Configure the external time sources, type: C:\> w32tm /config /syncfromflags:manual /manualpeerlist:”0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org”
  5. Make your PDC a reliable time source for the clients. Type: C:\>w32tm /config /reliable:yes
  6. Start the w32time service: C:\>net start w32time
  7. The windows time service should begin synchronizing the time. You can check the external NTP servers in the time configuration by typing: C:\>w32tm /query /configuration
  8. Check the Event Viewer for any errors.
Tested on Windows Server 2008 R2 (Build 7600).

Hong Kong — hk.pool.ntp.org

3.hk.pool.ntp.org
1.asia.pool.ntp.org
3.asia.pool.ntp.org
stdtime.gov.hk

Tuesday, May 28, 2013

Google App Engine - Picasa-Gallery installation & upload

My Picasa Gallery - http://picasa.kennymoody.net

by using : https://github.com/angryziber/picasa-gallery


installation:

0. download the picasa-gallery , unzip & config

1a. download JAVA SDK and install ( I am using SDK 1.6 )
1b.  Remeber to uninstall ALL JAVA JRE if you installed before

2. download GAE SDK and unzip ( Latest Version )

3. download Apache ANT and unzip to c:/ANT ( Latest Version )

4. in CMD ,
    type " set ANT_HOME=c:\ant "
             " set PATH=PATH;%ANT_HOME%\bin "
             " set JAVA_HOME=***path to JAVA SDK folder*** "

5. compile the file in CMD
    type " ant -Dsdk.dir =***path to GAE SDK folder*** compile "

6. in CMD , go to GAE SDK folder \ bin
    type " appcfg update ***path to picasa-gallery WAR folder*** "
   

all the files should be uploaded to GAE server now ...


   

Monday, May 20, 2013

Control USB Drive letter

The USBDLM is a freeware for personal use Windows service that gives control over Window's drive letter assignment for USB drives. Running as service makes it independent of the logged on user's privileges, so there is no need to give the users the privilege to change drive letters.It automatically solves conflicts between USB drives and network drives of the currently logged on user. Furthermore you can define new default letters for USB drives and much more.


USB drive letter manager - USBDLM http://www.uwe-sieber.de/usbdlm_e.html


What can USBDLM do for newly attached USB drives?
Check if the letter is used by a network share of the currently logged on user and assign the next letter that is really available
Reserve letters, so they are not used for local drives
Assign a letter from a list of new default letters, also dependent on many different criteria as the active user, drive type, connection (USB, FireWire), USB port, volume label, size and others
Assign letters for a specific USB drive by putting an INI file on the drive
Remove the drive letters of card readers until a card is inserted
Show a balloon tip with the assigned drive letter(s)
Define autorun events depending on many different criteria
Many other things, see help file, available online as HTML version too


All functions are applied to USB drives at the moment they are being attached, when the USBDLM service starts up and when a user logs on.
Usage


Instructions can be found on the author's site, so you'd better read them from there.


Running without a configuration USBDLM only prevents that an USB drive gets the letter of a network share drive of the currently logged on user. It remounts then to the next letter that is really available.


However it is worth noting that USBDLM is configured thru a text file, the USBDLM.INI. The USBDLM.INI is read from the folder of the USBDLM.EXE.


New default letters for new USB drives (flash or hard drive)
[DriveLetters] Letter1=U Letter2=Y Letter3=Z



USBDLM can have up to 9 'LetterX' entries in each section. They don't have to be continuous.


For Card readers, the typical 20-in-1 card reader eats one drive letter for each of its slots - if we have a card for or not. USBDLM can remove the reader's drive letter until a media is inserted.
[Settings] NoMediaNoLetter=1



USBDLM assings then a drive letter as configured. If you need different drive letters for a multislot cardreader, then use the criterion 'DeviceType' in a DriveLetters section (MSCR is short for MultiSlotCardReaders which can be used too):
[DriveLetters1] DeviceType=MSCR Letter1=R Letter2=W Letter3=



You can prevent Windows mounting to certain letters by putting them into section ExcludedLetters. This is especially useful for letters of network shares which Windows may assign to USB drives while booting.[ExcludedLetters] Letter1=F Letter2= Letter3=



USBDLM can show a balloon tip with information about the drive letter(s) or mount points used for a just attached drive:
[BalloonTips] Enabled=1



I hope you found this article useful, and that it saves you time on the job!

Tuesday, January 22, 2013

Windows Map Drive System error 86 has occurred

Happen on Windows 7 when access file sharing or run bat file of map drive.

Solution (On PC problem):

1- Start > in Search box type gpedit.msc

2- Computer Configuration > Windows Settings > Security Settings > Local Policies > Security Options

3- Find “Network Security: LAN Manager authentication level” double click on it

4- Set it to “Send LM & NTLM – use NTLMv2 session security id negotiated” click OK

5- Restart


OR

Check the System time , the system time should match TODAY !

Monday, January 21, 2013

RouterOS PPTP VPN 比較有用的連結

Mikrotik Wiki
http://wiki.mikrotik.com/wiki/Manual:Interface/PPTP


Mikrotik RouterOS Site-to-Site configuration for Peers with Dynamic IP
http://alsacecom.fr/blog/?p=117


MikroTik RouterOS 建置 PPTP VPN Server 連回公司、家中內部網路 (固定IP、Static IP 適用)
http://blog.cscworm.net/?p=2454


MikroTik RouterOS 建置 PPTP VPN Server 連回公司、家中內部網路 (PPPoE、撥接上網 適用)
http://blog.cscworm.net/?p=2480

Tuesday, January 15, 2013

How to Run Windows XP for Free in Windows 8


How to Run Windows XP for Free in Windows 8


Microsoft gave Windows 7 users a way to run older applications via Windows XP Mode. With Windows 8, however, that mode is no longer officially supported, and if you want to run Windows XP in a virtual machine, you need the license for it. Lifehacker reader Miloš, however, has found a workaround.
He discovered that within the free WindowsXPMode_en-us.exe file, there's a VirtualXPVHD file containing the Windows XP virtual machine, which you can open in VirtualBox. Here are the steps to get this working:
  1. Download WindowsXPMode_en-us.exe from Microsoft. You'll need to run the validation tool to prove your copy of Windows is valid.
http://www.microsoft.com/taiwan/windows/virtual-pc/download.aspx

  1. Then use 7-Zip or another archive tool to open the EXE file as an archive.
  2. Within that archive, find the "sources/xpm" file within it, and extract that folder to your hard drive.
  3. Finally, in the extracted xpm file, you'll find a file called VirtualXPVHD. Rename it with a VHD extension.
In VirtualBox, open the VirtualXPVHD virtual machine, and voila! You've got Windows XP Mode (running Windows XP Professional) in Windows 8, no need for the XP license.
This might also be possible with Windows 8's built-in virtual machine manager, Hyper-V, but that's only available in Windows 8 Pro.