 Hello everyone, welcome to Windows Server Summit 2024. I'm Shiva Shastri. I'm a Product Marketing Manager at Microsoft focusing on Azure Migrate, our principal tool for migrating to and modernizing in Azure. Today, I'll be specifically focusing on a feature within Azure Migrate for upgrading Windows Server end-of-support versions in place in the process of migrating to Azure. Before we look at the demo, I would like to take a couple of minutes to set the stage and give you a little bit of background information. As you may know, there are quite a few customers and applications out there that are still running on platforms such as Windows Server 2008 and 2012, which are end-of-support. Customers such as these need a cost-effective and reliable platform for their legacy applications, and this is the need that we are looking to fill today. Now before we had this feature, customers had two options essentially. They were either required to upgrade the current operating system to a later version on-premises or purchase extended security updates or ESUs as we call it, to keep their applications running with some security and support. Both of these are expensive propositions, and this third option that we are going to be talking about and seeing today in a demo will provide an option where the legacy applications on-prem can move to Azure, and then immediately be upgraded in place in a test environment, where it will be supported and a lot more secure. I'll dive into the details as we go through this demo. There are a few more caveats and details I would like to bring to your attention at this point. Servers, when they go through this process, are converted to a volume license after the move and upgraded in Azure with support, and customers should have purchased a valid retail or volume license for either Windows 2008 or 2012 on-prem in order for them to port over the same license to Azure. Now, the other part is that they need to select the upgrade feature within Azure Migrate at the time of migration, and I'll show you how when we do the demo. After the move to Azure, the server is upgraded in place and rebooted. Finally, as a best practice, we recommend that the upgrade and testing happen in a test environment in Azure. That way, before the production traffic is cut over from your premises to the instance in Azure, you know for a fact that your application is running, and the traffic can be diverted effectively without disruptions. With that little bit of a context, now let's dive right into the demo. When you get to the Azure portal, if you have a subscription, you will typically land on a page like this. You need to get into the Azure Migrate tool, and one way to do that would be to search for it on the bar here and select Azure Migrate. Within Azure Migrate, we'll be going to the servers databases and web apps tab, and for the sake of expediency, I have already run Discovery. As you can see, we have discovered about 300 servers of which 175 are Windows and the rest are Linux with a few unknowns. Now, if you were to scroll down below here under Migration Tools and Replications, we've identified 55 VMs that are replicating to Azure. I'm going to select one of these replicated VMs that are on Windows Server 2012, and we are going to perform our operation on this. Before we do that, I'd like to show you what its current configuration is, and as you can see here, it is on Windows 2012 64-bit, and this is, as we know, an end-of-support server as of October of last year. So, let's go back to the previous screen, and form the in-place upgrade on this server. If you see here to the last here, we have the ellipses, and when you click on that, you have the options that you can perform on the server. We need to do a test migration because we don't want to affect production, and we don't want to cut over to it right away. This will give us some time to let it soak, test it out, and when we test the migration, you will see an option here for upgrade available. What this is telling you is that for the 2012 instance that we've selected, there are upgrade options available in place as part of migration, and when you select this, you will see the N plus 2 versions that are within scope. In this case, let's just go to the latest version, 2019, and apply. Now, when I click on test migration, the replication is going to start, and you will notice after a little while, when I refresh, that the syncing is happening, and in just a minute, I'll show you the various steps involved. As you can see, here are the various migration status steps. We are ready to migrate state, and the test migration is in progress. This whole process could take about 15 minutes, and so we are going to pause for a minute and then come back to it, and then pick it up from where we left off. As you can see, the test migration is in process. Here are the main steps involved. There is a prerequisite check before the test migration is kicked off. That went off successfully, and then there is some preparation, and the next step would be to create the virtual machine, all in a testbed in Azure, and then there will be an upgrade in place. This is an in-place upgrade, not a fresh install, and that is specifically less disruptive when you're talking about porting legacy applications, and then finally, there is a few more steps, and all of this could take up to 15 minutes, and then we'll circle back when it is complete. Okay, so after about 15 minutes, when the in-place upgrade is complete, you can get back to the home screen and go into the virtual machines menu and search for the config VM that was recently upgraded, and as you can see here, it has a suffix of a dash test to signify that this is a test VM open to testing. You can look at the details of this one. As you can see, it is a Windows server. So with this, you've seen how easy and quick it is to upgrade end-of-support Windows 2008 or 2012 operating system server while migrating to Azure. There's a few more pieces of information I would like to leave you with. In terms of a set of frequently asked questions I have here, in terms of prerequisites, as mentioned earlier, customers should have purchased a valid license on-prem in order for this feature to be utilized and ported over to Azure. Currently, we can go all the way back up to 2008 R2 in terms of supported platforms. One of the often asked features in the same context is about whether this can be applied to a whole lot of servers in one shot in terms of in-place upgrades. The answer to that is that feature is coming, it's not there yet. So for now, it's single servers at a time. Yes, the ESU cost is also factored into your cost calculations and the recommended approach as mentioned is to upgrade to a testbed in Azure, perform the required tests before cutting over, thus reducing or eliminating disruptions to your production traffic. If you need more information, there are a couple of links given to you at the bottom in terms of the specific EOS page and the link to this FAQ itself. With that, I'm going to conclude my demo. Please make sure to fill out your evals. Thank you. Good morning, good evening, good afternoon. Welcome to my session. My name is Jaramir. I'm and welcome to the session called Windows 7 2025 Performance Validation. So my name is Jaramir, as I mentioned, I'm based in Czech Republic. I work for Dell. I worked for Microsoft for nine and a half years and I collected a lot of experience around the performance testing around the Hyper-V and I'm trying to share all of this experience now with you. So hopefully you'll like it and let's talk about the issue that you might face, right? So the issue number one, so when you receive the hardware, how you will evaluate the performance? If you will receive a new build of a new operating system, how you will evaluate the performance, right? So you need to have a consistent lab where you can just simply deploy operating system, deploy configuration, and then just consistently measure the performance with the tools that are trusted because you can pull any tool from the internet and it will give you millions of IOPS, but you really need to have a lab that will look like a real production and will do tests, not only 4K reads, but it also evaluate the real workloads. So this was the problem, right? So consistent deployment, it needs to be fast. You want to drink a coffee during the deployment. You don't want to work, right? We admins are lazy, especially me, right? I want to drink a coffee, watch the script, just see if there is something happening or not, and that's it, right? And it really needs to simulate the real workload because if you'll showcase this to the boss, the first thing he'll ask you, how does it relate to the real production? You know, is it a real stuff or is it something that you just pull up from somewhere? And it needs to be really, really easy, right? There's some learning curve, right? This tool we will talk about, you know, and the approach is using MS lab, but there's some learning curve, right? But it's pretty steep, right? You will start slowly and then you will see the problems, you will see the PowerShell, you'll learn PowerShell and then you'll learn new tools, but I'll try to make it everything easy enough to follow. So let's talk about my lab setup, right? So what I do have in the lab in the Texas, what kind of hardware and how I provision the hardware. So as I mentioned, right, the lab has to be relatively easy. So what we do have here is an MS lab running in a server and it's in here. So there's like R640 full of the multiple labs, multiple virtual machines deployed with MS lab. And this MS lab is connected with a physical port on the hardware on the R640 to the physical switches. And then I deploy operating system using MDT to the real physical service. So what I basically do is that I just pixie boot these machines with a script, right? And the machine will pick up the image from the MDT, it will find itself in the database and it will deploy operating system I want. And I documented everything for you in this link if you don't have a link, probably it will be under the video if you don't have a presentation or just being Dell Geos GitHub and there will be a lab and Azure Stack hands on labs called deploy physical service with MS lab. So in this case, we do have two MC4520 deployed with MDT and then as I said, it needs to be consistent. So what I can do, I can simply switch image and have Windows Server 2022 or I can switch the image and I have Azure Stack ACI or switch an image and I can have newest build of Windows Server 2025. So let's talk about the tool that we will deploy to the machines, right? So we do have, let's say, we do have already merchant machines or physical machines deployed. I also recorded another session for the Windows Server Summit talking about MS lab itself and how to deploy Windows Server 25 storage spaces direct cluster. So you already know how to achieve this, right? You have this link to deploy operating system. Once you have operating system, you can simply deploy the cluster. And the next step is to deploy VM fleet. So what is VM fleet? VM fleet is just a tool that uses disk speed, disk speed and then there's a tool that will create a virtual machines and distribute disk speed to the virtual machines. So in this case, I have two hosts and these two hosts are populated with virtual machines, a lot of virtual machines. Actually there's one virtual machine for one core. In my case, it's not that much because it's just 12 cores for each node. So it will be in this case, 24 virtual machines for the cluster and each virtual machine has dedicated disk. So it's fair. So it's not using operating system drive. It's using dedicated disk that is not dynamic. It was expanded automatically with a tool and it's testing different, different, I mean, different scenarios like 100% reads or 90% reads, 70% reads or SQL workload or VDI workload. If you want to know more again, there's a lab. If you just search for Azure Stack hands on labs, you will find that there's a performance testing with a VM fleet. You will learn about that you can how to create a VM fleet image, how to configure the VM fleet prerequisites and how to then measure the VM fleet or measure the performance with a VM fleet. You will also find some results and I can also share this result that I measured in here in this page if you want. So let's talk about results, right? So when you will run the tool, what you will see is you can watch the cluster and this is the big screen here. You can watch the cluster, how many IOPS you are performing on each node, how many reads, in this case, it's 100% reads. So there are no writes. What is the throughput? What is the latency for the reads and writes? And you can also see how the storage bus layer is performing and how the cluster shared volume is performing and how the CPUs are utilized. So this is the monitoring of the cluster itself. So you can see, observe, or if you just, you know, ad hoc test or like if you just simply run one test and if you want to see the performance, this is the tool you want to use. It's called watch cluster. It's just a PowerShell script you run and we'll just watch your cluster, how it's performing. On this side, we can see that it's now testing its first test out of 130 tests where I'm seeing that there's a test with 100% virtual machines aligned. It's using 4K and it's using high performance power scheme. So now it's the same, now it's performing and it's doing 700,000 I-ups. When it will be testing it during this, you know, big test, it's called measure fleet core workload. It will collect all of these results into the collect folder, into the results of DSV. And this is during the test. So you can anytime pull this DSV file and look what's there. Once the test will finish, it will just compress entire folder and just, you know, it'll create a zip file that you can save with all of the configuration, what was the, how was the cluster configured. And then you can just simply explore the results. So how the results look like. It's a big file, a lot of lines, a lot of columns and you can open it and import data into the Excel spreadsheet, right? You can explore all the data, you can see different columns like, you know, how was the alignment, what kind of tests was this, right? How many QoS were configured for the virtual machines because it also depends if you configure QoS or not depending on the workload, especially for the SQL workloads, it matters if you do or do not configure any QoS, how many virtual machines you had and most importantly, how many I-ups you achieved. However, there are more data, like what was the latency, right? What was the latency like for every test so you know what was your real performance. So what I did, I collected this performance for Windows 7 2022 and for Windows 7 2025. And these are the results. So simply comparing, okay, so maybe it's not fair because I deployed Windows 7 2022 like one month ago and then I also tested Windows 7 2025, back then it was its previous build and I was more or less the same numbers and today I deployed again, Windows 7 2025. Now with network ATC, I made sure that I'm deploying it from Windows 7 2025. So the storage is configured correctly and everything is done correctly and I achieved these results. As you can see, it's 500K or versus the 700K or almost 800K for the 4K reads, right? 100% reads. If you will take a look in the VDI workload, it's 180,000 I-ups or against the 80,000 I-ups on Windows 7 2022. So there's a big difference. I don't know why there is so big difference. Maybe it's because the storage subsystem was improved, right? It's a new feature of Windows 7 2025 but you can test it by yourself, right? Because if you will follow this lab, if you'll try it with your hardware, if you'll just follow this up, you can spin the hardware, if you get into this, into this lab, I was able to deploy entire lab in two hours and in two hours I just spin the lab, initiated the test and then I collected the results and just I was able to compare it. So let's take a look in the demo. So now I am connected to my lab and as you can see, it's running multiple labs, multiple MS labs. As you can see, there's a development lab, there's a production lab and there's my colleagues lab and there's my lab that I did test, the CloudDeploy, there's just the KCI. So let's connect to my development lab where I do run MDT and I have my Windows 7 2025 and here as you can see, I have my cluster based on MC 4520s with two nodes and I can open even a failover cluster manager to trust me that there are some virtual machines running. These virtual machines were created with VM fleet and as you can see, I do have two nodes here. The CPU is being hammered now because it's now being, now it's running at all of these tests, right? So let me just minimize this and let me just show you how it looks like when it's hammering the CPU. As you can see, there's almost 800,000 IOPS now on this two small node system. This is the test that is being running. As you can see now, it's there's VM fleet, 100% VM alignment, 100% high performance power scheme. Okay, a lot of IOPS. And yep, I'm able to collect the results if I'll navigate into the folder in the cluster, in the cluster storage into the collect folder. And that is a result to TSV so I can anytime bring it over and just open it. So let me just show you the results, right? How it looks like when it's in Excel. So this is the Excel spreadsheet and I do have the results from Windows 7 2022, from Windows 7 2025. And what you can do, you can some simply filtered results by, how was the alignment? There are two types of alignments, like 100% if all of the machines are sitting on a host that owns the volume or just somehow misaligned, like 70%. So you can just take a look how it's, when it's aligned, you can take a look for the kind of workload you have. So let's say you want to explore the SQL workloads. And then with the SQL workload, you can see it was trying to find out the baseline was 40K and not much. And then it applied QoS, increasingly applying QoS until it find the limit where there was a CPU limitation. And if I scroll a little bit to the right, you can see all of these small things like how was the latency? How was the latency for the reads? And then you can see the percentile that there were some reads and how many reads of the percentile were above or what was the average? In this case, like three milliseconds, but it's 99% till. So it's almost nothing. So it was performing really well. And this is how you can stamp your cluster, right? So this was the result you want. So with this, you hopefully now know how to test the performance correctly. And I would like to ask you for the evaluation. This is really important for us and for me, because if you evaluate, if you let us know that you want to know more, we can record longer session, one hour session, where we will talk about deep diving into the VM fleet, how you will set it up. We can walk through and record everything you want. So please, pretty please fill the evaluations, let us know. Thank you. And if you want anything, just ping me on Twitter or just ping me on email, here's my email. I'm open for questions or anything, anytime.