As you know, Server 2012 natively supports creating iSCSI targets. It’s great addition and i want to demonstrate how to set up this feature in core environment using only Powershell
My test equipment:
iSCSI Initiator – Hyper-V VM on Server 2012
iSCSI Target – Intel Server System S1530SH with 2 SATA 500 Gb in RAID 1 and external RAID Controller with three different RAID 1.
It’s not very old server system but, comparing with newest server systems, it seems very slow during some tasks. Anyway, installation Server 2012 Datacenter Core takes about 6 minutes. Great? I think it’s pretty nice result.
Configuring iSCSI Server Target
1. Type powershell in the command line then Rename-Computer -NewName yourpcname -Restart . This cmdlet lets you change standard name of your server.
Also, i recommend to execute Update-Help cmdlet to get the latest help pages.
2. After successful restart we need to configure ip parameters. Type Get-adapter to show all network adapters in your system and their status. Remember NIC’s Index number. For example, NIC with 12 looks to iSCSI , NIC with 13 – internal
Changing ip properties at NIC with index 12
Type ipconfig /all to see result
3. Installing iSCSI Target feature. Type Get-WindowsFeature to see all available features in Server 8 and then Add-WindowsFeature FS-iSCSITarget-Server.
How to enable Windows Automatic Updates on Server Core?
4. Enabling Remote Desktop Services to management . However, you can use remote powershell connection
5. Creating partitions and VHD on our disks
Get-Disk to see what disks are available in the system
I have some old information on these disks, so i should run Clear-Disk -RemoveData to prepare them for new partitions and volumes
We have to initialize all disks before creation new partition using New-Partition cmdlet
Formatting partition using Format-Volume cmdlet
Creating Vitrual Disks on each partitions which we want to share through iSCSI Target New-iSCSIVirtualDisk c:\test\disk1.vhd -Description “test” -Size 10Gb
6. Setting up new iSCSI Target Server, disks mapping
New-iSCSIServerTarget testTarget -IntiatorIDs “IQN:iqn. … “
test – your target name, intitiatorID – client’s id to access target.
How can i get InitiatorID?
You have to use iscsicli command
Create Target : New-iSCSIServerTarget NameOfTarget -InitiatorIDs “IQN:iqn….”
Mapping our VHDs to iSCSI Target
Add-iSCSIVirtualDiskTarget Test s:\test\disk2.vhd
—————————–
Configuring iSCSI Initiator on the client machine
1. Starting iSCSI Intiator
2. Connecting to created iSCSI Portal
New-iSCSITargetPortal -TargetPortalAddress YourTargetIP
Get-iSCSItarget |FL > shows your added target portal
Connect-iSCSITarget -NodeAddress “your target IQN”
Get-Disk to see iSCSI disks. By default, they are in offline status
Taking disks to online operational status using Set-Disk
Finally, we’ll create new partitions and volumes. Notice , if your iSCSI disks are using for DPM Backups , it’s not necessary to create volumes. DPM can create them by itself.
New-Partition -DiskNumber _ -UseMaximumSize -DriveLetter _
UseMaximumSize lets to create partitions with the biggest size as possible.
Get-Partition -DiskNumber YourDisksNumbers | Format-Volume
Any questions or comments? Leave a reply!
Really handy stuff! Thanks!
Under the format volume I found it effective to just call the driveletter I just created like this:
Invoke-Command -ComputerName NODE01 -ScriptBlock { Get-Partition -DriveLetter Q | Format-Volume -FileSystem NTFS }
Paul, thx for your comment! This is the first one! Congratulations :). I’m really pleased!
Invoke-Command is really helpfull . Espeсially in cases when we have a lot of servers. For example, “Invoke-Command -ComputerName (NameOfServers.txt) ..” gets server names from txt file and runs -ScriptBlock {PS cmdlets} remotely on each server..By the way, “Learn Windows PowerShell in a Month of Lunches”. is really nice book for learning and deep understanding ” for what ps we use”.
Thanks again for comment. Don’t forget to follow me. It’s really inspiring!
thanks ! great post! seems works on hyper-v 2012 server too 🙂 .
Dear all,
I follow this step, but show read only message.
Please help.
Thanks.
run this cmd from hyper server 2012 R2
New-Partition -DiskNumber _ -UseMaximumSize -DriveLetter _
Hi, Vic! Thanks for your comment.
On target server please run : Get-Disk|fl * and find IsReadOnly parameter. does it have value “true”?
I too am using this excellent post while working on a 2012 hyper v server core and have a “true” for the read only parameter. Your assistance is appreciated!!
Mario, try to run Set-Partition -DriveLetter YourDiskLetter -IsReadOnly $False