<?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: eapreko</title>
    <description>The latest articles on DEV Community by eapreko (@pheistman).</description>
    <link>https://dev.to/pheistman</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%2F3447544%2F18f80a8d-1a1d-49a6-a056-a9d7166896e1.png</url>
      <title>DEV Community: eapreko</title>
      <link>https://dev.to/pheistman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pheistman"/>
    <language>en</language>
    <item>
      <title>Redundancy Transformation Plan - Your Redundancy is a Disguised Setup for Your Next Great Chapter</title>
      <dc:creator>eapreko</dc:creator>
      <pubDate>Tue, 10 Mar 2026 15:29:29 +0000</pubDate>
      <link>https://dev.to/pheistman/redundancy-transformation-plan-your-redundancy-is-a-disguised-setup-for-your-next-great-chapter-4c08</link>
      <guid>https://dev.to/pheistman/redundancy-transformation-plan-your-redundancy-is-a-disguised-setup-for-your-next-great-chapter-4c08</guid>
      <description>&lt;p&gt;Have you ever felt that sudden, jarring shift? That moment when the ground beneath your feet seems to give way, and a wave of uncertainty washes over you? It seems like your whole world is imploding after being told in a meeting or via email that you've been made redundant? In that instant, it's easy for doubt to creep in, for fear to try and take root. But I'm here to tell you today, with every fibre of my being, that this is not the end of your story. This is not a setback; it is a possibly disguised setup for your next great chapter, a powerful redirection towards the productive life you were always meant to live. Get ready, because your comeback is already in motion!&lt;/p&gt;

&lt;h2&gt;
  
  
  Embracing the Shift: Understanding Your New Beginning
&lt;/h2&gt;

&lt;p&gt;When the news of redundancy arrives, it can feel like a personal affront, a judgment on your worth. But let's reframe this moment. This isn't about what you've lost; it's about the incredible space that's just been created for what's next. It's an opportunity to shed what no longer serves you and step into a season of unprecedented growth and opportunity. You are not defined by a job title or a company's decision; you are defined by the limitless potential within you.&lt;/p&gt;

&lt;p&gt;First, it's crucial to understand the mechanics of what has just happened. Knowledge is power, and clarity dispels fear. Many employers follow specific criteria when making redundancy selections. These can include factors like Last In, First Out (LIFO), performance, skills, attendance, disciplinary records, or even cost. While employers have a degree of flexibility, these criteria must be objective and non-discriminatory. It's important to understand that subjective criteria, such as flexibility, must be backed by clear management notes, and cost-based criteria can carry risks of age discrimination. Take a moment to review your selection scoring. Was it fair? Was it consistent? Was it free from bias? Understanding this process isn't about dwelling on the past, but about empowering yourself with information for your future&lt;sup id="fnref1"&gt;1&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Next, consider the settlement agreement. From an employer's perspective, these agreements are often about achieving "finality" and mitigating tribunal risks. They are paying for peace of mind, to avoid hassle and potential legal battles. This insight is powerful, because it means you have leverage. If you understand their motivation, you can better gauge the "premium" they might be willing to pay on top of statutory redundancy to secure that clean break&lt;sup id="fnref2"&gt;2&lt;/sup&gt;. Don't just accept; understand the value you bring to the negotiation table.&lt;/p&gt;

&lt;p&gt;Now, here’s a truth that might surprise you: &lt;strong&gt;being made redundant can be awesome!&lt;/strong&gt; I know, it sounds counter-intuitive when you’re in the midst of it. But hear me out. Many successful individuals look back at redundancy as the necessary "reset" that propelled them to something far greater. It’s often the catalyst for a better role, higher pay, or a completely new, more fulfilling direction. If you find yourself on "garden leave," resist the temptation to treat it as a vacation. Instead, treat it like a job. Wake up early, maintain a schedule, and use this precious time to polish your skills, network, and strategise your next move. The initial sting is real, but the long-term trajectory can be overwhelmingly positive if you maintain your momentum and mindset&lt;sup id="fnref3"&gt;3&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;And what about the emotional journey? The feelings of shame, rejection, or even anger are natural. But what if this moment is actually a powerful correction course? What if it’s an invitation to confront what truly defines you? Many have found that redundancy broke their attachment to a job title or external validation, allowing them to pivot towards a career they genuinely loved. It’s about "surrendering" to the uncertainty, accepting the situation rather than fighting it. When you release the need to control every outcome, you create space for clarity and purpose to emerge. This isn't just a job change; it's an opportunity for profound personal transformation, leading you to more meaningful work&lt;sup id="fnref4"&gt;4&lt;/sup&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Charting Your Course: Mastering the Job Search &amp;amp; Interview
&lt;/h2&gt;

&lt;p&gt;Now that you’ve embraced this powerful shift, let’s talk strategy. The traditional job search—mindlessly applying to countless positions—is often a broken system. It’s a lottery, with Applicant Tracking Systems (ATS) and sheer volume making it incredibly difficult to stand out. Smart, capable people often fail not because they lack talent, but because they rely on a passive system. It’s time to take control. Instead of waiting to be chosen, create a "reliable system" for interviews by directly reaching out to decision-makers, not just HR. Identify a specific business problem you can solve, and pitch that solution directly to a hiring manager. This bypasses the "compliance" trap of standard applications and positions you as a proactive problem-solver&lt;sup id="fnref5"&gt;5&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;When you get that interview, forget the old ways. The standard STAR (Situation, Task, Action, Result) method can be too slow, burying your most impressive outcomes. Instead, adopt the &lt;strong&gt;HERO&lt;/strong&gt; framework: &lt;strong&gt;H&lt;/strong&gt;eadline (start with the impressive outcome), &lt;strong&gt;E&lt;/strong&gt;ffect (why it mattered to the business), &lt;strong&gt;R&lt;/strong&gt;ationale (the strategic choices and trade-offs you made), and &lt;strong&gt;O&lt;/strong&gt;perations (the execution). This framework ensures you sound like a leader, focused on return on investment and strategy, rather than just a "doer" listing tasks. It positions you as a peer, ready to contribute at a high level&lt;sup id="fnref6"&gt;6&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Interviewing is an elite discipline, and there are secrets to mastering it. Stop memorising trivia and start studying the business’s financial pain points. Understand their challenges, their goals, and how you can be the solution. Embrace the "Google XYZ formula": Accomplished X as measured by Y, by doing Z. Quantify your impact. But beyond the technicalities, manage your energy, not your ego. Project calm "poise" rather than bravado. And always, always, close consultatively. Summarise the company’s challenges and validate if your proposed focus aligns with the manager’s vision. This shows you’re not just looking for a job; you’re looking to make a significant difference&lt;sup id="fnref7"&gt;7&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;And here’s a provocative thought: sometimes, "lying" gets you hired. Now, I’m not talking about deceit; I’m talking about &lt;strong&gt;framing&lt;/strong&gt;. Total honesty, like sharing every negative thought about a past employer, is a liability. An interview is an audition. When asked "How are you?" it’s a test of emotional regulation, not an invitation for a therapy session. Learn to select the "version of the truth" that serves the business narrative. Frame resume gaps confidently as planned breaks or periods of upskilling. Address "weaknesses" by focusing on growth and learning. Never hand an interviewer a reason to say "no." Always present yourself as the solution, the asset, the answer to their needs&lt;sup id="fnref8"&gt;8&lt;/sup&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Elevating Your Impact: Working Smarter, Not Just Harder
&lt;/h2&gt;

&lt;p&gt;Once you’ve landed that next incredible opportunity, the journey of growth continues. Many believe that hard work alone leads to career advancement. But often, hard work is useless if it doesn’t solve a problem your manager actually cares about. Think of it like "Product-Market Fit" for your career. You might be building an amazing "product" (your skills, your clean code), but if there’s no "market" (a problem your manager values), it won’t lead to growth. The key is to conduct "market research" in your 1-on-1s. Identify your manager’s "expensive pain"—their biggest challenges—and then apply your unique skills to solve that specific problem. This shifts you from being merely "helpful" to becoming absolutely "essential"&lt;sup id="fnref9"&gt;9&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Don’t let your achievements go unnoticed. Due to recency bias, managers can easily forget your early-year accomplishments by review time. The solution? Create a "Brag Book." This is a living document where you log your wins, mapping them to promotion criteria, even using AI to help you articulate your impact. Understand communication "altitude"—how to explain your work differently to peers (technical details) versus leadership (business impact). And make your work "loud." Send regular updates, praise others publicly, and normalise sharing your successes. If you don’t narrate your value, it effectively doesn’t exist&lt;sup id="fnref10"&gt;10&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Have you ever felt like an impostor, despite your successes? That nagging feeling that you’re not good enough, that you’ll be found out? Lean into it, don’t give into it! Impostor syndrome is often a sign of a healthy, high-achieving mind. Narcissists rarely feel it. High performers feel like frauds because they focus on their internal "resume of failures," while everyone else sees their external achievements. Reframe this anxiety as "growing pains." If you feel out of your depth, it means you are in a zone of development, stretching beyond your comfort zone. Use this feeling as data to identify where you need to upskill, rather than letting it paralyse you. It’s a sign you’re on the right track, pushing boundaries and expanding your capabilities&lt;sup id="fnref11"&gt;11&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;For those who aspire to elite performance, consider the wisdom gleaned from billion-dollar boardrooms. It’s about more than just what’s presented; it’s about "listening to ghost notes"—noticing what’s &lt;em&gt;missing&lt;/em&gt; from a presentation, the unspoken truths. It’s about "optimising for error"—viewing mistakes not as failures, but as necessary data for growth, much like AI learning. Develop "adaptive tension"—the ability to remain calm and effective in high-stakes conflicts. And cultivate "cathedral thinking"—planning with a 7-year horizon, focusing on long-term impact over short-term gains. Shift your focus from "What will this get me?" to "Who will this make me?" This journey is about identity and lasting value, not just temporary status&lt;sup id="fnref12"&gt;12&lt;/sup&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future-Proofing Your Journey: Levelling Up Skills for Tomorrow
&lt;/h2&gt;

&lt;p&gt;In this rapidly evolving world, especially with the rise of Artificial Intelligence, staying relevant is not just an advantage—it’s a necessity. While AI is a powerful tool, it’s crucial to understand its nuances. It’s excellent for prototyping and "vibe coding," but it can also create technical debt and sloppy code in production, potentially slowing down experienced developers. And be warned: using AI to "cheat" in interviews is easily spotted by seasoned hirers. The real opportunity lies in mastering the &lt;em&gt;integration&lt;/em&gt; of AI. Focus on skills like integrating AI into applications and Retrieval-Augmented Generation (RAG). Don’t let AI replace your critical thinking; instead, master how to leverage it as a powerful augmentative tool to stay highly employable&lt;sup id="fnref13"&gt;13&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Indeed, AI literacy is no longer just for tech roles; it’s mandatory for &lt;em&gt;all&lt;/em&gt; roles. We are transitioning from "doing" tasks to "managing" intelligent agents, making the ability to critically evaluate AI output a key leadership skill. Experts predict that 39% of current skills may be outdated within five years. This calls for a "skills-first" approach to career development. Demonstrating "AI fluency" and a commitment to continuous learning—a deep sense of curiosity—is the best way to future-proof your career against the rapid obsolescence of technical skills. View AI not as a threat, but as a tool for augmentation, empowering you to achieve more and contribute at a higher level&lt;sup id="fnref14"&gt;14&lt;/sup&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Unstoppable Comeback
&lt;/h2&gt;

&lt;p&gt;Despite how you feel right now remember you are not a victim of circumstance; you are a victor in the making. This moment of redundancy is not a period of loss, but a powerful punctuation mark, signalling the beginning of your greatest chapter yet. Embrace the shift, master the strategy, elevate your impact, and future-proof your journey. Your comeback is not just coming; it is already here, waiting for you to step into it with faith, courage, and an unstoppable spirit. Get ready to live the next chapter of your purposeful life!&lt;/p&gt;

&lt;p&gt;Please share this with anyone you know who may find this helpful or beneficial and let me know your thoughts and contributions in the comments!&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;PLEASE NOTE:&lt;/strong&gt; &lt;em&gt;This article is a carefully curated collation of wisdom from experts and high-performers, designed to provide you with the most effective and productive tools to navigate your career transition successfully. Thanks and all acknowledgments to the original content creators and below are citations for all references made above.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/AHcbuLrJ0bY?si=WHP6r6RrIJdL6N9z" rel="noopener noreferrer"&gt;Redundancy: The selection criteria&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/vzGObkoSub8?si=eN2jFIXs7-eZXqlT" rel="noopener noreferrer"&gt;Settlement agreement from the perspective of the employer&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/pD6-DeMp3oE?si=LKBiSgOUAmKwp0mi" rel="noopener noreferrer"&gt;Being made redundant can be awesome&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/e-6pzogb9rg?si=FHGSkfMKcn9CuRDu" rel="noopener noreferrer"&gt;How redundancy made me turn my life around&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn5"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/NxU3yNMAmiQ?si=6UujilPD2ZKzNX9W" rel="noopener noreferrer"&gt;Stop applying to jobs (it’s killing your career)&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn6"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/9H6JzlxluuA?si=9S4Pw0l4eljftYAO" rel="noopener noreferrer"&gt;Ex-Google recruiter explains the hero framework that gets you hired&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn7"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/JY4rnwYv51A?si=PSJM-WiPbNW2VUVz" rel="noopener noreferrer"&gt;Ex-Google recruiter explains: The interview secret to getting hired&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn8"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/T__1QViXUxk?si=t_bkAAF1ZGBXbvB9" rel="noopener noreferrer"&gt;Ex-Google recruiter explains: Why “lying” gets you hired&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn9"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/Xa0Dcxd-qA8?si=kddgr2to1KQtmZU8" rel="noopener noreferrer"&gt;Why hard work doesn’t lead to career growth (and what actually does)&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn10"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/qn4T9QciJ44?si=qVM11NxXP4F5me_b" rel="noopener noreferrer"&gt;The easy way to be seen as a high performer&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn11"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/qGmwH6DyUjo?si=ljS78cp47d-DI6_T" rel="noopener noreferrer"&gt;Lean into impostor syndrome, don’t give into it&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn12"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/yCCIDNvp5dk?si=PqdT-aHyXq5w9xE6" rel="noopener noreferrer"&gt;Everything I learned sitting in billion-dollar boardrooms&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn13"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/oOvl_htqhy8?si=ksd4yJO_o3e__35Z" rel="noopener noreferrer"&gt;I quit an AI start-up after six months – this is what I learned&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn14"&gt;
&lt;p&gt;&lt;a href="https://youtu.be/x1hyuvUUR0w?si=1q6J2CXgZk4myA71" rel="noopener noreferrer"&gt;Build AI skills and stay relevant in the AI economy&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>productivity</category>
      <category>discuss</category>
      <category>community</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Complete Guide: Raspberry Pi LVM Setup with M.2 SSD - Improved Performance Boost</title>
      <dc:creator>eapreko</dc:creator>
      <pubDate>Tue, 26 Aug 2025 11:38:52 +0000</pubDate>
      <link>https://dev.to/pheistman/complete-guide-raspberry-pi-lvm-setup-with-m2-ssd-improved-performance-boost-2hnp</link>
      <guid>https://dev.to/pheistman/complete-guide-raspberry-pi-lvm-setup-with-m2-ssd-improved-performance-boost-2hnp</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🚀 Impressive performance improvement over microSD&lt;/li&gt;
&lt;li&gt;🛡️ Data protection through LVM volume separation&lt;/li&gt;
&lt;li&gt;📊 Benchmark results explanations included&lt;/li&gt;
&lt;li&gt;⚡ 250+ MiB/s sequential read speeds achieved&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Raspberry Pi LVM Setup Guide - The Smart Way to Manage Storage
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🚀 Quick Start for Technical Users&lt;/strong&gt;: Skip the introduction and jump straight to the technical implementation&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Introduction &amp;amp; Overview
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Introduction: Why Your Pi Deserves Better Storage Management&lt;/li&gt;
&lt;li&gt;What is LVM? Explain Like I'm 5&lt;/li&gt;
&lt;li&gt;
Why Would I Want This?

&lt;ul&gt;
&lt;li&gt;The Problem with Standard Pi Setup&lt;/li&gt;
&lt;li&gt;The Improved Solution&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Planning &amp;amp; Comparison
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
The Convenience vs. Flexibility Trade-off

&lt;ul&gt;
&lt;li&gt;Raspberry Pi Imager: Convenient but Limiting&lt;/li&gt;
&lt;li&gt;Why This Matters for Large SSDs&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Pros and Cons Comparison

&lt;ul&gt;
&lt;li&gt;When to Use Standard Setup&lt;/li&gt;
&lt;li&gt;When to Use LVM Setup&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Use Cases &amp;amp; Benefits
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
Real-World Scenarios

&lt;ul&gt;
&lt;li&gt;Scenario 1: Home Media Server&lt;/li&gt;
&lt;li&gt;Scenario 2: Development Workstation&lt;/li&gt;
&lt;li&gt;Scenario 3: Learning Environment&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Performance Benefits You'll See&lt;/li&gt;

&lt;li&gt;What We'll Accomplish&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Technical Implementation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
Technical Implementation Guide

&lt;ul&gt;
&lt;li&gt;Prerequisites and Safety&lt;/li&gt;
&lt;li&gt;Required Hardware &amp;amp; Systems&lt;/li&gt;
&lt;li&gt;Before You Begin&lt;/li&gt;
&lt;li&gt;Important Notes About This Workflow&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step-by-Step Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
Step 1: Initial OS Installation and Backup Creation (Ubuntu Laptop)

&lt;ul&gt;
&lt;li&gt;1.1 Connect SSD to Ubuntu Laptop&lt;/li&gt;
&lt;li&gt;1.2 Write Initial OS Image to SSD&lt;/li&gt;
&lt;li&gt;1.3 Mount and Create Backups&lt;/li&gt;
&lt;li&gt;1.4 Unmount Partitions Safely&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Step 2: Create Optimal Partition Layout (Ubuntu Laptop)

&lt;ul&gt;
&lt;li&gt;2.1 Design New Partition Scheme&lt;/li&gt;
&lt;li&gt;2.2 Create New Partition Table&lt;/li&gt;
&lt;li&gt;2.3 Verify New Partition Layout&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Step 3: Create Filesystems and LVM Structure (Ubuntu Laptop)

&lt;ul&gt;
&lt;li&gt;3.1 Format Standard Partitions&lt;/li&gt;
&lt;li&gt;3.2 Set Up LVM Infrastructure&lt;/li&gt;
&lt;li&gt;3.3 Verify LVM Setup&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Step 4: Restore System Data to New Partitions (Ubuntu Laptop)

&lt;ul&gt;
&lt;li&gt;4.1 Restore Boot Partition&lt;/li&gt;
&lt;li&gt;4.2 Restore Root Partition&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Step 5: Update System Configuration (Ubuntu Laptop)

&lt;ul&gt;
&lt;li&gt;5.1 Get Partition UUIDs&lt;/li&gt;
&lt;li&gt;5.2 Update Boot Configuration&lt;/li&gt;
&lt;li&gt;5.3 Update Filesystem Mount Configuration&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Step 6: Final System Preparation (Ubuntu Laptop)

&lt;ul&gt;
&lt;li&gt;6.1 Verify Configuration Files&lt;/li&gt;
&lt;li&gt;6.2 Clean Unmount All Filesystems&lt;/li&gt;
&lt;li&gt;6.3 Safe Device Ejection&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pi Setup &amp;amp; Testing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
Step 7: Pi Boot and Verification

&lt;ul&gt;
&lt;li&gt;7.1 First Boot on Raspberry Pi&lt;/li&gt;
&lt;li&gt;7.2 Test Basic Functionality (Pi)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Step 8: Performance Benchmarking (Pi)

&lt;ul&gt;
&lt;li&gt;8.1 Install Benchmarking Tools&lt;/li&gt;
&lt;li&gt;8.2 Quick Performance Tests&lt;/li&gt;
&lt;li&gt;8.3 Understanding Your Results&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Management &amp;amp; Maintenance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
Step 9: LVM Management and Maintenance

&lt;ul&gt;
&lt;li&gt;9.1 Create Snapshots for Safety&lt;/li&gt;
&lt;li&gt;9.2 Expand Volumes as Needed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Step 10: Ubuntu Laptop Cleanup (Optional)

&lt;ul&gt;
&lt;li&gt;10.1 Clean Up Backup Files&lt;/li&gt;
&lt;li&gt;10.2 Remove Temporary Mount Points&lt;/li&gt;
&lt;li&gt;10.3 Package Cleanup (Optional)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Troubleshooting &amp;amp; Recovery
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
Troubleshooting

&lt;ul&gt;
&lt;li&gt;Boot Issues&lt;/li&gt;
&lt;li&gt;LVM Not Found&lt;/li&gt;
&lt;li&gt;Mount Failures&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Emergency Recovery

&lt;ul&gt;
&lt;li&gt;Method 1: Full Recovery from Ubuntu Laptop (Recommended)&lt;/li&gt;
&lt;li&gt;Method 2: Access System from microSD (Pi-based recovery)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advanced Procedures
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
Complete SSD Wipe Procedure

&lt;ul&gt;
&lt;li&gt;Prerequisites for SSD Wipe&lt;/li&gt;
&lt;li&gt;Step 1: Remove LVM Infrastructure&lt;/li&gt;
&lt;li&gt;Step 2: Delete All Partitions&lt;/li&gt;
&lt;li&gt;Step 3: Complete Disk Wipe&lt;/li&gt;
&lt;li&gt;Step 4: Fresh Start Verification&lt;/li&gt;
&lt;li&gt;When to Use Complete SSD Wipe&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Summary&lt;/li&gt;
&lt;li&gt;
References and Acknowledgments

&lt;ul&gt;
&lt;li&gt;Technical Documentation&lt;/li&gt;
&lt;li&gt;Performance Data&lt;/li&gt;
&lt;li&gt;Methodology&lt;/li&gt;
&lt;li&gt;Community Resources&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Introduction: Why Your Pi Deserves Better Storage Management
&lt;/h2&gt;

&lt;p&gt;If you've ever felt frustrated by running out of space on your Raspberry Pi, struggled with OS upgrades, or wished you could separate your data from your operating system, this guide is for you. We're going to transform your Pi from a simple microSD-based system into a storage powerhouse using LVM (Logical Volume Manager) on a high-performance M.2 SSD.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is LVM? Explain Like I'm 5
&lt;/h2&gt;

&lt;p&gt;Imagine your SSD is like a big house, but instead of having one giant room where you keep everything mixed together, you have separate rooms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The office room&lt;/strong&gt; (Operating System) - where all the important work stuff lives&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your bedroom&lt;/strong&gt; (Your personal files/projects) - where your personal stuff stays safe
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The guest room&lt;/strong&gt; (Future storage) - ready for when you need more space&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The storage closet&lt;/strong&gt; (Snapshots) - where you keep backup copies of important things&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;LVM is like having magic walls that can:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Move and resize&lt;/strong&gt; - make rooms bigger or smaller as needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Take photos&lt;/strong&gt; of how each room looks before you change it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep rooms separate&lt;/strong&gt; - if you renovate the office, your bedroom stays untouched&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In computer terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Physical Volume (PV)&lt;/strong&gt; = Your big house (the SSD)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Volume Group (VG)&lt;/strong&gt; = The house's floor plan and organisation system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logical Volume (LV)&lt;/strong&gt; = Each individual room (data storage, projects, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Would I Want This?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Problem with Standard Pi Setup
&lt;/h3&gt;

&lt;p&gt;When you use the Raspberry Pi Imager on a large SSD (let's say 512GB), here's what actually happens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Standard Pi Imager Result:
┌────────────────────────────────────────────────────────┐
│              M.2 SSD - 500GB Total Capacity            │
├────────────────────────────────────────────────────────┤
│         Single 476GB Partition (after formatting)      │
│ ┌──────────┬─────────────────────────────────────────┐ │
│ │    OS    │            Available Space              │ │
│ │   4GB    │                472GB                    │ │
│ │ ████████ │ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░│ │
│ └──────────┴─────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────┘

Legend: ████ OS/System Files    ░░░░ Available Space
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Problem: Root partition expands to use entire disk - OS and data mixed&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problems with this approach:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;OS upgrades risk your data&lt;/strong&gt; - everything mixed in one expanding partition. Imagine upgrading your smartphone's operating system to the latest version to fix a minor or major security patch, shiny new features, etc and having to worry about the possibility of losing all your irreplaceable photos, conversations, etc should something go wrong each time you consider doing this!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No separation&lt;/strong&gt; - OS and user data compete for the same space and I/O&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No snapshots&lt;/strong&gt; - can't easily backup/restore just the OS or just your data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inflexible&lt;/strong&gt; - can't resize or reorganise without complex operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Poor performance optimisation&lt;/strong&gt; - can't tune different areas for different workloads&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Improved Solution
&lt;/h3&gt;

&lt;p&gt;With our approach, you get clean separation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Optimised Setup with LVM for Data:
┌────────────────────────────────────────────────────────┐
│              M.2 SSD - 500GB Total Capacity            │
├────────────────────────────────────────────────────────┤
│           Optimised Setup with LVM for Data            │
│         476GB Available Space (after formatting)       │
│ ┌──────────┬──────────────────────────────────────────┐│
│ │    OS    │            LVM-Managed Data Space        ││
│ │   50GB   │ ┌──────────┬────────────┬──────────────┐ ││
│ │ (ext4)   │ │   Home   │  Projects  │    Future    │ ││
│ │ ████████ │ │  200GB   │   150GB    │    76GB      │ ││
│ │ ████████ │ │  (LV)    │    (LV)    │  (unused)    │ ││
│ │ ████████ │ │ ████████ │ ░░░░░░░░░░ │ ░░░░░░░░░░░░ │ ││
│ └──────────┴─┴──────────┴────────────┴──────────────┘─┘│
└────────────────────────────────────────────────────────┘

Legend: ██ Used Space ░░ Available/Future Space LV = Logical Volume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Benefits: OS isolated, data flexible/snapshottable/expandable&lt;/p&gt;

&lt;h2&gt;
  
  
  The Convenience vs. Flexibility Trade-off
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Raspberry Pi Imager: Convenient but Limiting
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What Pi Imager Does Well:&lt;/strong&gt;&lt;br&gt;
✅ Dead simple - just click and flash&lt;br&gt;&lt;br&gt;
✅ Handles all the boot configuration automatically&lt;br&gt;&lt;br&gt;
✅ Configures WiFi, SSH, users in one step&lt;br&gt;&lt;br&gt;
✅ Works every time without technical knowledge  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where Pi Imager Falls Short:&lt;/strong&gt;&lt;br&gt;
❌ &lt;strong&gt;Uses entire disk as one partition&lt;/strong&gt; - no flexibility&lt;br&gt;&lt;br&gt;
❌ &lt;strong&gt;Mixes OS and data&lt;/strong&gt; - upgrades risk your personal files&lt;br&gt;&lt;br&gt;
❌ &lt;strong&gt;No volume management&lt;/strong&gt; - can't resize without pain&lt;br&gt;&lt;br&gt;
❌ &lt;strong&gt;No snapshots&lt;/strong&gt; - can't easily backup/restore states&lt;br&gt;&lt;br&gt;
❌ &lt;strong&gt;One size fits all&lt;/strong&gt; - can't optimise for different use cases  &lt;/p&gt;
&lt;h3&gt;
  
  
  Why This Matters for Large SSDs
&lt;/h3&gt;

&lt;p&gt;When you flash Pi OS onto a 512GB SSD:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# What you get (after formatting):&lt;/span&gt;
/dev/sda1    512M  boot partition &lt;span class="o"&gt;(&lt;/span&gt;FAT32&lt;span class="o"&gt;)&lt;/span&gt;
/dev/sda2    475G  root partition &lt;span class="o"&gt;(&lt;/span&gt;ext4&lt;span class="o"&gt;)&lt;/span&gt; - OS + data mixed!

&lt;span class="c"&gt;# What you actually need:&lt;/span&gt;
/dev/sda1    512M  boot partition  
/dev/sda2     50G  OS only &lt;span class="o"&gt;(&lt;/span&gt;isolated, upgradeable safely&lt;span class="o"&gt;)&lt;/span&gt;
/dev/sda3    300G  home directory &lt;span class="o"&gt;(&lt;/span&gt;your data, safe from OS changes&lt;span class="o"&gt;)&lt;/span&gt;
/dev/sda4    100G  projects/docker/databases &lt;span class="o"&gt;(&lt;/span&gt;separate performance&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="c"&gt;# Remaining 25G reserved for snapshots and future use&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pros and Cons Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Standard Pi Setup&lt;/th&gt;
&lt;th&gt;Pi with LVM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Setup Complexity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐ Dead simple&lt;/td&gt;
&lt;td&gt;⭐⭐ Requires technical knowledge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OS Upgrade Safety&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐ Risk losing data&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐ Data completely isolated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Storage Flexibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Fixed partition sizes&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐ Resize volumes on demand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Backup/Restore&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐ Full system only&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐ Snapshot individual volumes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐ All I/O on one partition&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐ Separate performance profiles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Space Utilisation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐ Entire disk&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐ Optimal space allocation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Troubleshooting&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐ Simple structure&lt;/td&gt;
&lt;td&gt;⭐⭐ Need LVM knowledge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Future Growth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐ Hard to expand&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐ Add storage easily&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  When to Use Standard Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Learning/experimentation&lt;/strong&gt; - you just want Pi to work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporary projects&lt;/strong&gt; - not concerned about long-term data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple applications&lt;/strong&gt; - basic web browsing, simple scripts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SD card based&lt;/strong&gt; - small storage, frequent re-flashing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to Use LVM Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Development work&lt;/strong&gt; - need to separate projects and tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Media server&lt;/strong&gt; - large amounts of data to organise&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database/Docker hosting&lt;/strong&gt; - different performance needs per service&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long-term use&lt;/strong&gt; - system will grow and evolve over time, reliability and data safety matter&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Large SSDs&lt;/strong&gt; - 256GB+ where space management matters&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Real-World Scenarios
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Scenario 1: Home Media Server
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Without LVM - Everything mixed together&lt;/span&gt;
/dev/sda2  500GB  &lt;span class="o"&gt;[&lt;/span&gt;OS + Movies + TV Shows + Photos + System logs]
&lt;span class="c"&gt;# Problem: OS upgrade could corrupt media, can't optimise performance&lt;/span&gt;

&lt;span class="c"&gt;# With LVM - Clean separation&lt;/span&gt;
/dev/vg_main/os       40GB   &lt;span class="o"&gt;[&lt;/span&gt;Operating System only]
/dev/vg_main/media   300GB   &lt;span class="o"&gt;[&lt;/span&gt;Movies, TV, optimised &lt;span class="k"&gt;for &lt;/span&gt;sequential &lt;span class="nb"&gt;read&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;  
/dev/vg_main/photos  100GB   &lt;span class="o"&gt;[&lt;/span&gt;Photos, backed up separately]
/dev/vg_main/apps     50GB   &lt;span class="o"&gt;[&lt;/span&gt;Plex, etc., can snapshot before updates]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Scenario 2: Development Workstation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Without LVM - Chaos&lt;/span&gt;
/dev/sda2  500GB  &lt;span class="o"&gt;[&lt;/span&gt;OS + Docker + Projects + Databases + Build artifacts]
&lt;span class="c"&gt;# Problem: Everything on one partition, if something goes wrong impact could be undesirable&lt;/span&gt;

&lt;span class="c"&gt;# With LVM - Organised&lt;/span&gt;
/dev/vg_main/os       40GB   &lt;span class="o"&gt;[&lt;/span&gt;OS, can snapshot before updates]
/dev/vg_main/docker  100GB   &lt;span class="o"&gt;[&lt;/span&gt;Container storage, separate performance]
/dev/vg_main/projects 150GB   &lt;span class="o"&gt;[&lt;/span&gt;Source code, backed up to git]
/dev/vg_main/data    100GB   &lt;span class="o"&gt;[&lt;/span&gt;Databases, optimised &lt;span class="k"&gt;for &lt;/span&gt;random I/O]
/dev/vg_main/build   100GB   &lt;span class="o"&gt;[&lt;/span&gt;Temp space, can be wiped safely]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Scenario 3: Learning Environment
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Without LVM - Fear of breaking things&lt;/span&gt;
/dev/sda2  500GB  &lt;span class="o"&gt;[&lt;/span&gt;Everything mixed - scared to experiment]

&lt;span class="c"&gt;# With LVM - Confidence to experiment  &lt;/span&gt;
/dev/vg_main/os       40GB   &lt;span class="o"&gt;[&lt;/span&gt;Snapshot before trying new things]
/dev/vg_main/stable  100GB   &lt;span class="o"&gt;[&lt;/span&gt;Known-good configurations]
/dev/vg_main/experiment 50GB &lt;span class="o"&gt;[&lt;/span&gt;Break things safely]
/dev/vg_main/backup   50GB   &lt;span class="o"&gt;[&lt;/span&gt;Quick &lt;span class="nb"&gt;local &lt;/span&gt;restore point]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Performance Benefits You'll See
&lt;/h2&gt;

&lt;p&gt;Based on real testing with quality M.2 SSDs on Raspberry Pi:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;MicroSD Card&lt;/th&gt;
&lt;th&gt;Standard SSD&lt;/th&gt;
&lt;th&gt;LVM SSD&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Boot Time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;60-90 seconds&lt;/td&gt;
&lt;td&gt;30-45 seconds&lt;/td&gt;
&lt;td&gt;15-25 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Package Install&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Very slow&lt;/td&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;td&gt;Very fast&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Database Operations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Painful&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Excellent*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;File Operations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Slow&lt;/td&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;td&gt;Optimised*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Docker Containers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Barely usable&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Excellent*&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;*Because different workloads can be placed on optimised volumes&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We'll Accomplish
&lt;/h2&gt;

&lt;p&gt;By the end of this guide, you'll have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Noticeably fast Pi&lt;/strong&gt; - M.2 SSD performance (15-50x faster than SD card)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bulletproof upgrades&lt;/strong&gt; - OS and data completely separated
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible storage&lt;/strong&gt; - resize volumes as your needs change&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Professional setup&lt;/strong&gt; - snapshot capabilities, proper backup strategy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Future-proof system&lt;/strong&gt; - easy to expand and modify&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The process uses a backup/restore methodology giving you complete control over your storage layout from day one.&lt;/p&gt;

&lt;p&gt;Ready to transform your Raspberry Pi? Let's dive into the technical implementation...&lt;/p&gt;




&lt;h2&gt;
  
  
  Technical Implementation Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites and Safety
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Required Hardware &amp;amp; Systems
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Raspberry Pi 4/400/5/500&lt;/strong&gt; with current microSD card setup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;256GB+ M.2 SSD&lt;/strong&gt; (or similar high-capacity storage) &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ubuntu laptop/desktop&lt;/strong&gt; for partitioning tasks (much safer than doing this on the Pi)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USB-to-M.2 adapter&lt;/strong&gt; or M.2 enclosure to connect SSD to Ubuntu laptop&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Before You Begin
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;CRITICAL: Create a full backup&lt;/strong&gt; of your existing Pi system before proceeding&lt;/li&gt;
&lt;li&gt;Have SSH access to your Pi for final testing&lt;/li&gt;
&lt;li&gt;Install required tools on Ubuntu laptop: &lt;code&gt;sudo apt update &amp;amp;&amp;amp; apt install -y rpi-imager parted lvm2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Ensure you have at least 10GB free space on Ubuntu laptop for temporary backups&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Important Notes About This Workflow
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;All operations performed on Ubuntu laptop&lt;/strong&gt; (safer, more reliable)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Device names will differ between systems&lt;/strong&gt; (&lt;code&gt;/dev/sdb&lt;/code&gt; on laptop vs &lt;code&gt;/dev/sda&lt;/code&gt; on Pi)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always verify device names&lt;/strong&gt; with &lt;code&gt;lsblk&lt;/code&gt; before proceeding&lt;/li&gt;
&lt;li&gt;This guide uses &lt;code&gt;DEVICE&lt;/code&gt; as a placeholder - replace with your actual device name&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Initial OS Installation and Backup Creation (Ubuntu Laptop)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1.1 Connect SSD to Ubuntu Laptop
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Connect M.2 SSD via USB adapter to your Ubuntu laptop&lt;/span&gt;
&lt;span class="c"&gt;# Verify it's detected&lt;/span&gt;
lsblk
&lt;span class="nb"&gt;sudo &lt;/span&gt;fdisk &lt;span class="nt"&gt;-l&lt;/span&gt;

&lt;span class="c"&gt;# Identify your SSD device (likely /dev/sdb, /dev/sdc, etc.)&lt;/span&gt;
&lt;span class="c"&gt;# CRITICAL: Verify this is correct before proceeding&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/sdX  &lt;span class="c"&gt;# SET THIS TO YOUR ACTUAL DEVICE&lt;/span&gt;

&lt;span class="c"&gt;# Double-check you have the right device&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Working with device: &lt;/span&gt;&lt;span class="nv"&gt;$DEVICE&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;fdisk &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1.2 Write Initial OS Image to SSD
&lt;/h3&gt;

&lt;p&gt;Use Raspberry Pi Imager GUI to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select your Raspberry Pi model&lt;/li&gt;
&lt;li&gt;Choose your preferred OS (Raspberry Pi OS or Ubuntu Server)&lt;/li&gt;
&lt;li&gt;Select your SSD as destination device&lt;/li&gt;
&lt;li&gt;Configure advanced options: WiFi, SSH, username, etc.&lt;/li&gt;
&lt;li&gt;Write the image&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  After writing, verify partitions were created
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsblk &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected output (Ubuntu Server example):&lt;br&gt;
DEVICE1 - system-boot partition (~512MB, FAT32)&lt;br&gt;
DEVICE2 - writable partition (~3-4GB, ext4)&lt;/p&gt;
&lt;h3&gt;
  
  
  1.3 Mount and Create Backups
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create mount points for backup operations&lt;/span&gt;
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /mnt/pi_boot /mnt/pi_root 

&lt;span class="c"&gt;# Mount the newly written root partition&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mount &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;2 /mnt/pi_root     &lt;span class="c"&gt;# Root partition&lt;/span&gt;

&lt;span class="c"&gt;# Verify mounts&lt;/span&gt;
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;mnt

&lt;span class="c"&gt;# Create backup directory&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/pi_backups
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/pi_backups
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Create boot partition backup
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Warning:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;cloud-init is very sensitive to the exact filesystem structure of the boot partition. &lt;br&gt;
Using &lt;code&gt;dd&lt;/code&gt; preserves the precise FAT32 filesystem metadata that cloud-init depends on to properly detect and process its configuration files. &lt;br&gt;
This is actually documented behaviour - cloud-init expects specific filesystem characteristics on the boot partition that only bit-for-bit copying (like dd) can guarantee.&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo dd &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;1 &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;boot_backup.img &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1M &lt;span class="nv"&gt;status&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;progress

&lt;span class="c"&gt;# Create root partition backup. Grab a cup of coffee, &lt;/span&gt;
&lt;span class="c"&gt;# this might take a few minutes :) &lt;/span&gt;
&lt;span class="nb"&gt;sudo tar&lt;/span&gt; &lt;span class="nt"&gt;-czf&lt;/span&gt; root_backup.tar.gz &lt;span class="nt"&gt;-C&lt;/span&gt; /mnt/pi_root &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Verify backups were created successfully&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lh&lt;/span&gt; ~/pi_backups/
&lt;span class="c"&gt;# Should show both .tar.gz (~1.2GB) and .img (~512MB) files with reasonable sizes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  1.4 Unmount Partitions Safely
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Unmount partitions before repartitioning&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;umount /mnt/pi_root

&lt;span class="c"&gt;# Verify unmounts&lt;/span&gt;
mount | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;
&lt;span class="c"&gt;# Should return nothing&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: Create Optimal Partition Layout (Ubuntu Laptop)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1 Design New Partition Scheme
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Display current disk information&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;fdisk &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Plan your partition layout (example for 512GB SSD = ~476GB usable):&lt;br&gt;
Partition 1: Boot (FAT32)    - 2GB   (larger for future kernels/overlays)&lt;br&gt;
Partition 2: Root (ext4)     - 50GB  (generous space for OS)  &lt;/p&gt;
&lt;h3&gt;
  
  
  2.2 Create New Partition Table
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DANGER ZONE&lt;/strong&gt;:  This destroys existing data. Ensure backups are safely created before proceeding&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"About to repartition &lt;/span&gt;&lt;span class="nv"&gt;$DEVICE&lt;/span&gt;&lt;span class="s2"&gt; - backups created: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt; ~/pi_backups/&lt;span class="k"&gt;*&lt;/span&gt;.tar.gz ~/pi_backups/&lt;span class="k"&gt;*&lt;/span&gt;.img | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; files"&lt;/span&gt;

&lt;span class="c"&gt;# Start parted&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;parted &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;

&lt;span class="c"&gt;# In parted interactive mode:&lt;/span&gt;
&lt;span class="c"&gt;# Create new MBR partition table&lt;/span&gt;
mklabel msdos

&lt;span class="c"&gt;# Confirm data destruction&lt;/span&gt;
&lt;span class="c"&gt;# Type: yes&lt;/span&gt;

&lt;span class="c"&gt;# Create boot partition (2GB)&lt;/span&gt;
mkpart primary fat32 0% 2GB

&lt;span class="c"&gt;# Create root partition (50GB total = 2GB to 56GB)&lt;/span&gt;
mkpart primary ext4 2GB 56GB

&lt;span class="c"&gt;# Create LVM partition (remaining space)&lt;/span&gt;
mkpart primary 56GB 100%

&lt;span class="c"&gt;# Set boot flag on partition 1&lt;/span&gt;
&lt;span class="nb"&gt;set &lt;/span&gt;1 boot on

&lt;span class="c"&gt;# Set LVM flag on partition 3&lt;/span&gt;
&lt;span class="nb"&gt;set &lt;/span&gt;3 lvm on

&lt;span class="c"&gt;# Verify partition layout&lt;/span&gt;
print

&lt;span class="c"&gt;# Expected output (512GB SSD example):&lt;/span&gt;
&lt;span class="c"&gt;# Number  Start   End     Size    Type     File system  Flags&lt;/span&gt;
&lt;span class="c"&gt;#  1      1.0MB   2.0GB   2.0GB   primary  fat32        boot, lba&lt;/span&gt;
&lt;span class="c"&gt;#  2      2.0GB   55.0GB  50.0GB  primary  ext4&lt;/span&gt;
&lt;span class="c"&gt;#  3      55.0GB  476GB   424GB   primary               lvm&lt;/span&gt;

&lt;span class="c"&gt;# Exit parted&lt;/span&gt;
quit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.3 Verify New Partition Layout
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Refresh partition table&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;partprobe &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;

&lt;span class="c"&gt;# Verify new partitions&lt;/span&gt;
lsblk &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;fdisk &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;

&lt;span class="c"&gt;# Should show three partitions with correct sizes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Create Filesystems and LVM Structure (Ubuntu Laptop)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 Format Standard Partitions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Format boot partition (FAT32)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mkfs.vfat &lt;span class="nt"&gt;-F32&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;1

&lt;span class="c"&gt;# Format root partition (ext4)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mkfs.ext4 &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;2

&lt;span class="c"&gt;# Verify filesystem creation&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;blkid &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;1  &lt;span class="c"&gt;# Should show TYPE="vfat"&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;blkid &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;2  &lt;span class="c"&gt;# Should show TYPE="ext4"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3.2 Set Up LVM Infrastructure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create LVM Physical Volume&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pvcreate &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;3

&lt;span class="c"&gt;# Create Volume Group (using meaningful name)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;vgcreate vg_main &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;3

&lt;span class="c"&gt;# Create Logical Volume for home directory (adjust size as needed)&lt;/span&gt;
&lt;span class="c"&gt;# Leave some space unallocated for snapshots/future use&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;lvcreate &lt;span class="nt"&gt;-L&lt;/span&gt; 350G &lt;span class="nt"&gt;-n&lt;/span&gt; lv_home vg_main

&lt;span class="c"&gt;# Format home logical volume&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mkfs.ext4 /dev/vg_main/lv_home

&lt;span class="c"&gt;# Alternative: Use percentage instead of fixed size&lt;/span&gt;
&lt;span class="c"&gt;# sudo lvcreate -l 90%VG -n lv_home vg_main  # Uses 90% of VG space&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3.3 Verify LVM Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Display LVM configuration&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pvs        &lt;span class="c"&gt;# Physical volumes&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;vgs        &lt;span class="c"&gt;# Volume groups  &lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;lvs        &lt;span class="c"&gt;# Logical volumes&lt;/span&gt;

&lt;span class="c"&gt;# Detailed displays&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pvdisplay &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;3 &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;vgdisplay vg_main &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;lvdisplay /dev/vg_main/lv_home

&lt;span class="c"&gt;# Expected output should show:&lt;/span&gt;
&lt;span class="c"&gt;# - PV using full partition 3 (~424GB)&lt;/span&gt;
&lt;span class="c"&gt;# - VG with ~424GB total space&lt;/span&gt;
&lt;span class="c"&gt;# - LV with 350GB allocated, ~74GB free for snapshots&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Restore System Data to New Partitions (Ubuntu Laptop)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4.1 Restore Boot Partition
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Extract boot backup to new boot partition&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/pi_backups
&lt;span class="nb"&gt;sudo dd &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;boot_backup.img &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;1 &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1M

&lt;span class="c"&gt;# Create fresh mount points&lt;/span&gt;
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /mnt/new_boot /mnt/new_root

&lt;span class="c"&gt;# Mount boot partition&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mount &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;1 /mnt/new_boot

&lt;span class="c"&gt;# Verify boot files were restored&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-la&lt;/span&gt; /mnt/new_boot/
&lt;span class="c"&gt;# Should show boot files like config.txt, cmdline.txt, etc.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4.2  Restore Root Partition
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Mount new partitions&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mount &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;2 /mnt/new_root

&lt;span class="c"&gt;# Verify all mounts&lt;/span&gt;
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; /mnt/new

&lt;span class="c"&gt;# Extract root backup to new root partition&lt;/span&gt;
&lt;span class="nb"&gt;sudo tar&lt;/span&gt; &lt;span class="nt"&gt;-xzf&lt;/span&gt; root_backup.tar.gz &lt;span class="nt"&gt;-C&lt;/span&gt; /mnt/new_root/

&lt;span class="c"&gt;# Verify root filesystem was restored&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-la&lt;/span&gt; /mnt/new_root/
&lt;span class="c"&gt;# Should show standard Linux directories: bin, boot, etc, home, etc.&lt;/span&gt;

&lt;span class="c"&gt;# Check critical directories exist&lt;/span&gt;
&lt;span class="nb"&gt;sudo ls&lt;/span&gt; &lt;span class="nt"&gt;-la&lt;/span&gt; /mnt/new_root/etc/
&lt;span class="nb"&gt;sudo ls&lt;/span&gt; &lt;span class="nt"&gt;-la&lt;/span&gt; /mnt/new_root/home/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Update System Configuration (Ubuntu Laptop)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1 Get Partition UUIDs
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Get UUIDs for all partitions (needed for reliable mounting)&lt;/span&gt;
&lt;span class="nv"&gt;BOOT_UUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;blkid &lt;span class="nt"&gt;-s&lt;/span&gt; UUID &lt;span class="nt"&gt;-o&lt;/span&gt; value &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;1&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nv"&gt;ROOT_UUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;blkid &lt;span class="nt"&gt;-s&lt;/span&gt; UUID &lt;span class="nt"&gt;-o&lt;/span&gt; value &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;2&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nv"&gt;HOME_UUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;blkid &lt;span class="nt"&gt;-s&lt;/span&gt; UUID &lt;span class="nt"&gt;-o&lt;/span&gt; value /dev/vg_main/lv_home&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Display UUIDs for reference&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Boot UUID: &lt;/span&gt;&lt;span class="nv"&gt;$BOOT_UUID&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Root UUID: &lt;/span&gt;&lt;span class="nv"&gt;$ROOT_UUID&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Home UUID: &lt;/span&gt;&lt;span class="nv"&gt;$HOME_UUID&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Save UUIDs to file for reference&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; ~/pi_backups/partition_uuids.txt &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;
Boot UUID: &lt;/span&gt;&lt;span class="nv"&gt;$BOOT_UUID&lt;/span&gt;&lt;span class="sh"&gt;
Root UUID: &lt;/span&gt;&lt;span class="nv"&gt;$ROOT_UUID&lt;/span&gt;&lt;span class="sh"&gt;
Home UUID: &lt;/span&gt;&lt;span class="nv"&gt;$HOME_UUID&lt;/span&gt;&lt;span class="sh"&gt;
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5.2 Update Boot Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Backup original cmdline.txt&lt;/span&gt;
&lt;span class="nb"&gt;sudo cp&lt;/span&gt; /mnt/new_boot/cmdline.txt /mnt/new_boot/cmdline.txt.backup

&lt;span class="c"&gt;# Update cmdline.txt to use new root UUID&lt;/span&gt;
&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"s/root=[^ ]*/root=UUID=&lt;/span&gt;&lt;span class="nv"&gt;$ROOT_UUID&lt;/span&gt;&lt;span class="s2"&gt;/g"&lt;/span&gt; /mnt/new_boot/cmdline.txt

&lt;span class="c"&gt;# Verify cmdline.txt was updated correctly&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; /mnt/new_boot/cmdline.txt
&lt;span class="c"&gt;# Should contain: root=UUID=your-root-uuid&lt;/span&gt;

&lt;span class="c"&gt;# Alternative manual method if sed fails:&lt;/span&gt;
&lt;span class="c"&gt;# sudo nano /mnt/new_boot/cmdline.txt&lt;/span&gt;
&lt;span class="c"&gt;# Find the root= parameter and change it to: root=UUID=&amp;lt;ROOT_UUID&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5.3 Update Filesystem Mount Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Backup original fstab&lt;/span&gt;
&lt;span class="nb"&gt;sudo cp&lt;/span&gt; /mnt/new_root/etc/fstab /mnt/new_root/etc/fstab.backup

&lt;span class="c"&gt;# Create new fstab with correct UUIDs&lt;/span&gt;
&lt;span class="nb"&gt;sudo tee&lt;/span&gt; /mnt/new_root/etc/fstab &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /dev/null &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;
# Raspberry Pi Partition Configuration
# Root partition
UUID=&lt;/span&gt;&lt;span class="nv"&gt;$ROOT_UUID&lt;/span&gt;&lt;span class="sh"&gt; /               ext4    defaults,noatime        0       1

# Boot partition  
UUID=&lt;/span&gt;&lt;span class="nv"&gt;$BOOT_UUID&lt;/span&gt;&lt;span class="sh"&gt; /boot/firmware  vfat    defaults                0       1

# Home directory (LVM)
UUID=&lt;/span&gt;&lt;span class="nv"&gt;$HOME_UUID&lt;/span&gt;&lt;span class="sh"&gt; /home           ext4    defaults,noatime        0       2
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="c"&gt;# Verify fstab contents&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; /mnt/new_root/etc/fstab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 6: Final System Preparation (Ubuntu Laptop)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  6.1 Verify Configuration Files
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Double-check critical configuration files&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"=== Boot Configuration ==="&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; /mnt/new_boot/cmdline.txt

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"=== Filesystem Configuration ==="&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; /mnt/new_root/etc/fstab

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"=== Partition Information ==="&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;blkid &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;1 &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;2 /dev/vg_main/lv_home
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6.2 Clean Unmount All Filesystems
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Sync all pending writes&lt;/span&gt;
&lt;span class="nb"&gt;sudo sync&lt;/span&gt;

&lt;span class="c"&gt;# Unmount in reverse order (deepest first)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;umount /mnt/new_root 
&lt;span class="nb"&gt;sudo &lt;/span&gt;umount /mnt/new_boot

&lt;span class="c"&gt;# Deactivate LVM (critical for clean transfer to Pi)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;vgchange &lt;span class="nt"&gt;-an&lt;/span&gt; vg_main

&lt;span class="c"&gt;# Verify no mounts remain&lt;/span&gt;
mount | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;
&lt;span class="c"&gt;# Should return nothing&lt;/span&gt;

&lt;span class="c"&gt;# If unmounting fails, use force unmount&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;mount | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Forcing unmount..."&lt;/span&gt;
    &lt;span class="nb"&gt;sudo &lt;/span&gt;umount &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;1 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true
    sudo &lt;/span&gt;umount &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;2 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true
    sudo &lt;/span&gt;lvchange &lt;span class="nt"&gt;-an&lt;/span&gt; /dev/vg_main/lv_home 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true
    sudo &lt;/span&gt;vgchange &lt;span class="nt"&gt;-an&lt;/span&gt; vg_main
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6.3 Safe Device Ejection
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Final sync and eject&lt;/span&gt;
&lt;span class="nb"&gt;sudo sync
sudo &lt;/span&gt;eject &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;

&lt;span class="c"&gt;# SSD is ready for Raspberry Pi!&lt;/span&gt;
&lt;span class="c"&gt;# Backup files location: ~/pi_backups/&lt;/span&gt;
&lt;span class="c"&gt;# Next: Connect SSD to Pi and boot&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 7: Pi Boot and Verification
&lt;/h2&gt;

&lt;h3&gt;
  
  
  7.1 First Boot on Raspberry Pi
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Connect SSD to Raspberry Pi and boot&lt;/span&gt;
&lt;span class="c"&gt;# SSH to Pi once booted (device names will be different on Pi)&lt;/span&gt;

&lt;span class="c"&gt;# On Pi: Check system status&lt;/span&gt;
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;span class="c"&gt;# Should show:&lt;/span&gt;
&lt;span class="c"&gt;# /dev/sda2 mounted on /&lt;/span&gt;
&lt;span class="c"&gt;# /dev/sda1 mounted on /boot/firmware  &lt;/span&gt;
&lt;span class="c"&gt;# /dev/mapper/vg_main-lv_home mounted on /home&lt;/span&gt;

&lt;span class="c"&gt;# Verify LVM status&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pvs
&lt;span class="nb"&gt;sudo &lt;/span&gt;vgs
&lt;span class="nb"&gt;sudo &lt;/span&gt;lvs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  7.2 Test basic functionality (Pi)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update  &lt;span class="c"&gt;# Test package management&lt;/span&gt;
systemctl status  &lt;span class="c"&gt;# Check service health&lt;/span&gt;
&lt;span class="nb"&gt;touch&lt;/span&gt; ~/test_file &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; ~/test_file  &lt;span class="c"&gt;# Test home directory write&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 8: Performance Benchmarking (Pi)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  8.1 Install Benchmarking Tools
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; fio hdparm iotop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  8.2 Quick Performance Tests
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Quick read test&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;hdparm &lt;span class="nt"&gt;-t&lt;/span&gt; /dev/sda

&lt;span class="c"&gt;# Comprehensive benchmarks &lt;/span&gt;
fio &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;random-read &lt;span class="nt"&gt;--ioengine&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;libaio &lt;span class="nt"&gt;--rw&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;randread &lt;span class="nt"&gt;--bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4k &lt;span class="nt"&gt;--size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1G &lt;span class="nt"&gt;--numjobs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 &lt;span class="nt"&gt;--runtime&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;60 &lt;span class="nt"&gt;--time_based&lt;/span&gt;

fio &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;random-write &lt;span class="nt"&gt;--ioengine&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;libaio &lt;span class="nt"&gt;--rw&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;randwrite &lt;span class="nt"&gt;--bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4k &lt;span class="nt"&gt;--size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1G &lt;span class="nt"&gt;--numjobs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 &lt;span class="nt"&gt;--runtime&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;60 &lt;span class="nt"&gt;--time_based&lt;/span&gt;

fio &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;seq-read &lt;span class="nt"&gt;--ioengine&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;libaio &lt;span class="nt"&gt;--rw&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;--bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1M &lt;span class="nt"&gt;--size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2G &lt;span class="nt"&gt;--numjobs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1

fio &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;seq-write &lt;span class="nt"&gt;--ioengine&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;libaio &lt;span class="nt"&gt;--rw&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;write &lt;span class="nt"&gt;--bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1M &lt;span class="nt"&gt;--size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2G &lt;span class="nt"&gt;--numjobs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  8.3 Understanding Your Results
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;📝 &lt;strong&gt;Note:&lt;/strong&gt; The Raspberry Pi USB 3.0 implementation might create a bottleneck here, not your SSD. The Pi's USB controller typically maxes out around 300-350 MiB/s in real-world scenarios so dont expect the full advertised performance for your SSD.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;What Good Performance Looks Like:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Excellent M.2 SSD Results (what to expect):&lt;/span&gt;
Random Read:  15-20 MiB/s,  4000-8000 IOPS
Random Write: 40-60 MiB/s,  10000-15000 IOPS  
Sequential Read:  300-400 MiB/s
Sequential Write: 100-200 MiB/s

&lt;span class="c"&gt;# MicroSD Card Results (for comparison):&lt;/span&gt;
Random Read:  2-5 MiB/s,   100-500 IOPS
Random Write: 1-3 MiB/s,   50-200 IOPS
Sequential Read:  20-25 MiB/s  
Sequential Write: 10-15 MiB/s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Performance Indicators:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Random Read &amp;gt;15 MiB/s&lt;/strong&gt;: Excellent for database operations, file system responsiveness&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Random Write &amp;gt;40 MiB/s&lt;/strong&gt;: Outstanding for logging, package installs, system updates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sequential Read &amp;gt;300 MiB/s&lt;/strong&gt;: Near USB 3.0 limit, excellent for large file operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sequential Write &amp;gt;100 MiB/s&lt;/strong&gt;: Very good for backups, media processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If Results Are Poor:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check SSD is connected to USB 3.0 port (blue connector)&lt;/li&gt;
&lt;li&gt;Verify Pi power supply is adequate (official 5V 3A+ recommended)&lt;/li&gt;
&lt;li&gt;Test different USB 3.0 cables - some limit speed&lt;/li&gt;
&lt;li&gt;Ensure SSD enclosure supports USB 3.0 speeds&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 9: LVM Management and Maintenance
&lt;/h2&gt;

&lt;h3&gt;
  
  
  9.1 Create Snapshots for Safety
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create snapshots before major changes&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;lvcreate &lt;span class="nt"&gt;-L&lt;/span&gt; 5G &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; lv_home_snapshot /dev/vg_main/lv_home

&lt;span class="c"&gt;# List snapshots&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;lvs

&lt;span class="c"&gt;# Remove snapshots when no longer needed&lt;/span&gt;
&lt;span class="c"&gt;# sudo lvremove /dev/vg_main/lv_home_snapshot&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  9.2 Expand Volumes as Needed
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check available space in volume group&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;vgs vg_main

&lt;span class="c"&gt;# Extend home volume if needed (example: add 50GB)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;lvextend &lt;span class="nt"&gt;-L&lt;/span&gt; +50G /dev/vg_main/lv_home
&lt;span class="nb"&gt;sudo &lt;/span&gt;resize2fs /dev/vg_main/lv_home

&lt;span class="c"&gt;# Verify expansion&lt;/span&gt;
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; /home
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Boot Issues
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Pi won't boot from SSD&lt;br&gt;
&lt;strong&gt;Solutions&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check cmdline.txt has correct root UUID&lt;/li&gt;
&lt;li&gt;Verify fstab uses correct UUIDs&lt;/li&gt;
&lt;li&gt;Boot from microSD and mount SSD to fix configuration&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  LVM Not Found
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: LVM volumes not available at boot&lt;br&gt;
&lt;strong&gt;Solutions&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install lvm2 package: &lt;code&gt;sudo apt install lvm2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Update initramfs: &lt;code&gt;sudo update-initramfs -u&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Enable LVM service: &lt;code&gt;sudo systemctl enable lvm2-monitor&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Mount Failures
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Partitions won't mount&lt;br&gt;
&lt;strong&gt;Solutions&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check UUIDs: &lt;code&gt;sudo blkid&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Verify fstab syntax: &lt;code&gt;sudo mount -a&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Check filesystem health: &lt;code&gt;sudo fsck /dev/device&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Emergency Recovery
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Method 1: Full Recovery from Ubuntu Laptop (Recommended)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Connect SSD to Ubuntu laptop&lt;/strong&gt; - safer environment for troubleshooting&lt;/li&gt;
&lt;li&gt;Mount partitions and diagnose issues with better tools&lt;/li&gt;
&lt;li&gt;Fix configuration files using laptop's text editors&lt;/li&gt;
&lt;li&gt;Reformat and repartition if needed&lt;/li&gt;
&lt;li&gt;Restore from backup files in &lt;code&gt;~/pi_backups/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Update UUIDs and configuration&lt;/li&gt;
&lt;li&gt;Test mount points before returning to Pi&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Method 2: Access System from microSD (Pi-based recovery)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Boot Pi from original microSD card&lt;/li&gt;
&lt;li&gt;Connect SSD and mount partitions manually&lt;/li&gt;
&lt;li&gt;Fix configuration files as needed&lt;/li&gt;
&lt;li&gt;Test changes before switching back to SSD boot&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;This backup/restore approach offers several advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clean Implementation&lt;/strong&gt;: Fresh partitions designed for optimal LVM layout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability&lt;/strong&gt;: Use tar archives for data backup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility&lt;/strong&gt;: Easy to customise partition sizes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety&lt;/strong&gt;: Clear separation between backup and restore phases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The method successfully migrates your Raspberry Pi to M.2 SSD with LVM while maintaining data integrity and providing substantial performance improvements.&lt;/p&gt;

&lt;p&gt;You now have a professional-grade Raspberry Pi setup that can grow with your needs, protect your data during OS upgrades, and deliver noticeably faster performance for years to come.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 10: Ubuntu Laptop Cleanup (Optional)
&lt;/h2&gt;

&lt;p&gt;Once you've confirmed your Pi is working perfectly with the new LVM setup, you can clean up the Ubuntu laptop used for provisioning.&lt;/p&gt;

&lt;h3&gt;
  
  
  10.1 Clean Up Backup Files
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# After confirming Pi works perfectly for several days&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/pi_backups

&lt;span class="c"&gt;# Review backup files one final time&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lah&lt;/span&gt;

&lt;span class="c"&gt;# Archive backups to a safe location (optional but recommended)&lt;/span&gt;
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-czf&lt;/span&gt; pi_lvm_project_backups.tar.gz &lt;span class="k"&gt;*&lt;/span&gt;.tar.gz &lt;span class="k"&gt;*&lt;/span&gt;.img &lt;span class="k"&gt;*&lt;/span&gt;.txt
&lt;span class="nb"&gt;mv &lt;/span&gt;pi_lvm_project_backups.tar.gz ~/Documents/  &lt;span class="c"&gt;# or your preferred backup location&lt;/span&gt;

&lt;span class="c"&gt;# Remove working backup files&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; ~/pi_backups
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  10.2 Remove Temporary Mount Points
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clean up mount points created during setup&lt;/span&gt;
&lt;span class="nb"&gt;sudo rmdir&lt;/span&gt; /mnt/pi_boot /mnt/pi_root /mnt/new_boot /mnt/new_root 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;

&lt;span class="c"&gt;# Verify cleanup&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; /mnt/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  10.3 Package Cleanup (Optional)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# If you installed packages specifically for this project, you can remove them&lt;/span&gt;
&lt;span class="c"&gt;# Only run if you don't use these tools for other projects&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt autoremove rpi-imager parted lvm2

&lt;span class="c"&gt;# Update package cache&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Complete SSD Wipe Procedure
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DANGER ZONE&lt;/strong&gt;: This completely destroys all data on the SSD. Only use when starting completely fresh or repurposing the drive.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you need to completely wipe your SSD and start over, follow these steps on your Ubuntu laptop:&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites for SSD Wipe
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Connect SSD to Ubuntu laptop&lt;/span&gt;
&lt;span class="c"&gt;# Identify the correct device&lt;/span&gt;
lsblk
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/sdX  &lt;span class="c"&gt;# SET THIS TO YOUR ACTUAL DEVICE&lt;/span&gt;

&lt;span class="c"&gt;# CRITICAL: Verify this is the correct device&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"About to COMPLETELY WIPE: &lt;/span&gt;&lt;span class="nv"&gt;$DEVICE&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;fdisk &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;
&lt;span class="c"&gt;# Confirm this shows your SSD, not your laptop's main drive!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 1: Remove LVM Infrastructure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Deactivate any active LVM volumes&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;vgchange &lt;span class="nt"&gt;-an&lt;/span&gt; vg_main 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;

&lt;span class="c"&gt;# Remove logical volumes&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;lvremove vg_main/lv_home 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;

&lt;span class="c"&gt;# Remove volume group&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;vgremove vg_main 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;

&lt;span class="c"&gt;# Remove physical volume&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pvremove &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DEVICE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;3 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;

&lt;span class="c"&gt;# Confirm LVM cleanup&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pvs&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;vgs&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;lvs
&lt;span class="c"&gt;# Should show no volumes related to your SSD&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Delete All Partitions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Use parted to remove all partitions&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;parted &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;

&lt;span class="c"&gt;# In parted interactive mode:&lt;/span&gt;
print                    &lt;span class="c"&gt;# Show current partitions&lt;/span&gt;
&lt;span class="nb"&gt;rm &lt;/span&gt;1                     &lt;span class="c"&gt;# Remove partition 1&lt;/span&gt;
&lt;span class="nb"&gt;rm &lt;/span&gt;2                     &lt;span class="c"&gt;# Remove partition 2  &lt;/span&gt;
&lt;span class="nb"&gt;rm &lt;/span&gt;3                     &lt;span class="c"&gt;# Remove partition 3&lt;/span&gt;
print                    &lt;span class="c"&gt;# Confirm all partitions gone&lt;/span&gt;
quit                     &lt;span class="c"&gt;# Exit parted&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Complete Disk Wipe
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Wipe filesystem signatures&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;wipefs &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;

&lt;span class="c"&gt;# Completely destroy partition table&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;sgdisk &lt;span class="nt"&gt;--zap-all&lt;/span&gt; &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;

&lt;span class="c"&gt;# Optional: Secure wipe (takes a long time!)&lt;/span&gt;
&lt;span class="c"&gt;# sudo dd if=/dev/zero of=$DEVICE bs=1M status=progress&lt;/span&gt;
&lt;span class="c"&gt;# Use only if you need to securely erase sensitive data&lt;/span&gt;

&lt;span class="c"&gt;# Verify complete wipe&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;fdisk &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;
&lt;span class="c"&gt;# Should show no partitions, just raw disk space&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Fresh Start Verification
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# After wipe, the disk should be completely clean&lt;/span&gt;
lsblk &lt;span class="nv"&gt;$DEVICE&lt;/span&gt;
&lt;span class="c"&gt;# Should show only the main device with no partitions&lt;/span&gt;

&lt;span class="c"&gt;# The SSD is now ready for fresh partitioning/formatting&lt;/span&gt;
&lt;span class="c"&gt;# You can start over with Step 1 of this guide if needed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  When to Use Complete SSD Wipe
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Use this procedure when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Starting completely over due to configuration errors&lt;/li&gt;
&lt;li&gt;Repurposing the SSD for a different project
&lt;/li&gt;
&lt;li&gt;Selling or giving away the SSD (use secure wipe option)&lt;/li&gt;
&lt;li&gt;Testing different partition layouts or filesystems&lt;/li&gt;
&lt;li&gt;LVM has become corrupted and needs complete rebuild&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Don't use if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You just want to resize partitions (use LVM resize instead)&lt;/li&gt;
&lt;li&gt;Minor configuration fixes needed (use recovery procedures)&lt;/li&gt;
&lt;li&gt;You want to keep any data on the drive&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  References and Acknowledgments
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Technical Documentation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LVM2 Commands&lt;/strong&gt;: Based on standard Linux LVM2 utilities documentation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;fio Benchmarking&lt;/strong&gt;: Performance testing using Flexible I/O Tester (fio) - industry standard storage benchmarking tool&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Partition Management&lt;/strong&gt;: Standard Linux partitioning tools (&lt;code&gt;fdisk&lt;/code&gt;, &lt;code&gt;parted&lt;/code&gt;, &lt;code&gt;wipefs&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raspberry Pi Boot Process&lt;/strong&gt;: Official Raspberry Pi Foundation boot configuration documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Performance Data
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;All benchmark results&lt;/strong&gt;: Original testing conducted by the author using real hardware&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware compatibility&lt;/strong&gt;: Based on actual testing with M.2 SSD and USB 3.0 adapters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance comparisons&lt;/strong&gt;: MicroSD vs SSD metrics derived from author's empirical testing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Methodology
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backup/restore approach&lt;/strong&gt;: Original methodology developed by the author&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety procedures&lt;/strong&gt;: Industry best practices for disk partitioning and data preservation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ubuntu laptop workflow&lt;/strong&gt;: Author's original approach for safer SSD provisioning&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Community Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Raspberry Pi Community&lt;/strong&gt;: General knowledge and best practices from the Pi community&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linux System Administration&lt;/strong&gt;: Standard practices for storage management and filesystem operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: All performance results, specific configurations, and the backup/restore methodology represent original work and testing by the author. No copyrighted tutorials or guides were directly copied or adapted.&lt;/p&gt;

</description>
      <category>raspberrypi</category>
      <category>linux</category>
      <category>lvm</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
