<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muhammad Umer</title>
    <description>The latest articles on DEV Community by Muhammad Umer (@mumer2834).</description>
    <link>https://dev.to/mumer2834</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F908015%2F8d085063-c41d-45bd-af28-eebd1d1f9b12.jpeg</url>
      <title>DEV Community: Muhammad Umer</title>
      <link>https://dev.to/mumer2834</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mumer2834"/>
    <language>en</language>
    <item>
      <title>Architecture &amp; Design of Linux Storage Stack</title>
      <dc:creator>Muhammad Umer</dc:creator>
      <pubDate>Mon, 10 Jul 2023 15:17:06 +0000</pubDate>
      <link>https://dev.to/mumer2834/architecture-design-of-linux-storage-stack-12bc</link>
      <guid>https://dev.to/mumer2834/architecture-design-of-linux-storage-stack-12bc</guid>
      <description>&lt;p&gt;I'm excited to announce my book: "Architecture and Design of Linux Storage Stack". The book will explore the multilayered design of the Linux kernel's storage stack and is divided into the following four parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Diving into the Virtual filesystem:&lt;/strong&gt; This part offers a detailed introduction to the virtual filesystem (VFS) layer, its major data structures, and the concepts associated with the different filesystems in Linux&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Navigating through block layer:&lt;/strong&gt; This part will explain the role of block layer and focus on some of its major components, such as the device mapper framework, block devices, the multi-queue framework, and the different I/O schedulers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Descending into the physical layer:&lt;/strong&gt; This part will focus on the major components of the SCSI subsystem and the different types of physical storage media available today and the differences in their implementation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analzying &amp;amp; troubleshooting storage performance:&lt;/strong&gt; This part will present the different metrics for assessing and troubleshooting storage performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com/Architecture-Design-Linux-Storage-Stack-ebook/dp/B0BTT9VCF2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.packtpub.com/product/architecture-and-design-of-linux-storage-stack/9781837639960"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>kernel</category>
      <category>storage</category>
      <category>architecture</category>
    </item>
    <item>
      <title>SPARC to x86 migration using OpenZFS</title>
      <dc:creator>Muhammad Umer</dc:creator>
      <pubDate>Sat, 13 Aug 2022 07:07:46 +0000</pubDate>
      <link>https://dev.to/mumer2834/sparc-to-x86-migration-using-openzfs-6pp</link>
      <guid>https://dev.to/mumer2834/sparc-to-x86-migration-using-openzfs-6pp</guid>
      <description>&lt;p&gt;If you have ever run a database on a SPARC platform, the very thought of migrating it to an x86 based system can be mind numbing. Different architectures, endianness, operating systems and what not. A Solaris SPARC system doesn’t support the native Linux file systems such as ext4, xfs etc, which makes any migration even more difficult.&lt;/p&gt;

&lt;p&gt;Fortunately, there’s now a common ground between two platforms through the implementation of ZFS file system for Linux. The ZFS file system can be exported from one system to another, even if the two systems have different architectural endianness. This allows it to be used as a bridge for migrating from SPARC to x86.&lt;br&gt;
Setup&lt;/p&gt;

&lt;p&gt;The below steps were performed on Solaris SPARC 11.4 and RHEL 7.9. You can install OpenZFS on RHEL by following this link. The steps in this demo can be broken down as follows:&lt;/p&gt;

&lt;p&gt;1- Connect a disk to Solaris SPARC host&lt;/p&gt;

&lt;p&gt;2- Create a ZFS pool and file system on the disk&lt;/p&gt;

&lt;p&gt;3- Disconnect and remove the disk from the Solaris host&lt;/p&gt;

&lt;p&gt;4- Connect the disk to the RHEL host&lt;/p&gt;

&lt;p&gt;5- Import the ZFS file system&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ZFS pool and file system versions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check the current ZFS and pool versions on the Solaris SPARC platforms.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c3lMyfBy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zbp979pvouqjit4xf6x5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c3lMyfBy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zbp979pvouqjit4xf6x5.png" alt="Image description" width="880" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check the same on RHEL host.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---D9m5Drk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/11jjxxd93890q11tk2tv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---D9m5Drk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/11jjxxd93890q11tk2tv.png" alt="Image description" width="880" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see that the ZFS file system and pool versions on Solaris SPARC system are 6 and 47 respectively. This is important to note. There are different ZFS file system and pool versions available, having different features. On Solaris, these versions are shown by incrementing version numbers (1,2,3 etc). The OpenZFS project for Linux uses feature flags to show these different version numbers. This causes confusion as the exact version number on Solaris based ZFS cannot be cross matched with the feature flags on OpenZFS.&lt;/p&gt;

&lt;p&gt;By default, the creation of a ZFS pool on Solaris is done using the latest available version, which is not compatible with Open ZFS on Linux. To work around this, the ZFS pool on Solaris needs to created by specifying a version, which can be imported on Linux. ZFS on Linux includes support for legacy ZFS pool versions 1–28.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create a ZFS pool and file system&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a ZFS pool and file system on the Solaris SPARC system. Use version 28 for the pool and version 5 for the file system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QWSA7ngb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijm09oqli3m8s6zek0d6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QWSA7ngb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijm09oqli3m8s6zek0d6.png" alt="Image description" width="880" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the file system has been created, you can place some dummy data inside it so that it can be verified once the same file system is mounted on the Linux host. Safely un-mount the ZFS file systems, and export the pool, so that it can be imported on the RHEL system later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mowmIg1n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ggwny2lrp6hq35gedc9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mowmIg1n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ggwny2lrp6hq35gedc9l.png" alt="Image description" width="880" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Import ZFS on Linux&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, disconnect the disk (on which ZFS was created) from Solaris host and connect it to the RHEL system. Run the import command and see if the pool is online.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fJXm1ZkO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o4mme2lfy7gl6z7cxdma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fJXm1ZkO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o4mme2lfy7gl6z7cxdma.png" alt="Image description" width="880" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The status shows that “the pool was last accessed by another system”. Although the pool is online, it’s still not showing up in the “zpool list” output. If that’s the case, try importing the pool forcefully, it might throw up a few warnings on some systems, but they can be ignored.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JqUWCUOq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r4i570r8ztxmc139xet0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JqUWCUOq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r4i570r8ztxmc139xet0.png" alt="Image description" width="880" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The ZFS file systems get mounted automatically once the pool has been successfully imported. ZFS also logs any commands that change the pool configuration. You can check what commands were run to create this pool. How cool is that!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mcovTwPv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lcghruxe2rv6suhhxlgr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mcovTwPv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lcghruxe2rv6suhhxlgr.png" alt="Image description" width="880" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>zfs</category>
      <category>openzfs</category>
      <category>linux</category>
      <category>sparc</category>
    </item>
  </channel>
</rss>
