實驗室:在 Linux 上設定 lvm、raid

題外話:這個 LR 是合成的。
這裡描述的一些任務可以更簡單地完成,但由於 l/r 的任務是了解
有了raid和lvm功能,有些操作就被人為地複雜化了。

執行LR的工具需求:

  • Virtualbox等虛擬化工具
  • 以Linux安裝鏡像為例 Debian9
  • 可透過網路下載多個軟體包
  • 透過 ssh 連接到已安裝的 VM(選用)

注意

這項實驗室工作涉及資料安全這樣一個微妙的問題——這是一個需要關注的領域。
這會讓您因最小的錯誤(一個額外的字母或數字)而丟失所有資料。
由於您正在做實驗室工作,因此您不會有任何危險,只是您必須重新開始做這件事。
在現實生活中,一切都更加嚴重,因此您應該非常仔細地輸入磁碟名稱,並理解
您到底在使用目前命令做什麼以及您正在使用哪些磁碟。

第二個要點是磁碟和分割區的命名:根據情況,磁碟編號可能會有所不同
來自實驗室工作中命令中呈現的那些值。
因此,例如,如果從陣列中刪除sda磁碟,然後新增磁碟,則會顯示新磁碟
在名為 sda 的系統上。 如果在新增磁碟之前重新啟動,則新磁碟
該磁碟將命名為 sdb,舊磁碟將命名為 sda

實驗室必須以超級使用者 (root) 身分運行,因為大多數命令都需要
提升權限,透過 sudo 不斷提升權限是沒有意義的

學習材料

  • 的RAID
  • LVM
  • Linux 作業系統中的磁碟命名
  • 什麼是節
  • 什麼是分區表以及它儲存在哪裡?
  • 什麼是 grub

使用的公用事業

1)查看磁碟資訊

  • lsblk -o 名稱、大小、FSTYPE、類型、掛載點
  • fdisk -l
    2)查看資訊並使用LVM
  • 個人資料
  • 擴充
  • pv創建
  • 調整大小
  • 視頻
  • 減量
  • LVS
  • 延長
    3)查看資訊並使用RAID
  • 貓 /proc/mdstat
  • mdadm的
    4) 掛載點
  • 安裝
  • 數量
  • 貓 /etc/fstab
  • 貓 /etc/mtab
    5)磁碟重新分割區
  • fdisk /dev/XXX
    6)複製分區
  • dd if=/dev/xxx of=/dev/yyy
    7) 使用分區表
  • 部分
  • 磁盤
  • mkfs.ext4文件
    8) 使用引導程式
  • grub 安裝 /dev/XXX
  • 更新GRUB
    9) 雜項
  • 易於
  • rsync的

實驗室工作由3部分組成:

  • 使用 lvm、raid 設定工作系統
  • 模擬其中一個磁碟故障
  • 即時更換磁碟、新增磁碟和移動分割區。

任務1(作業系統安裝及LVM、RAID配置)

1)建立一個新的虛擬機,賦予其以下特徵:

  • 1 GB RAM
  • 1個CPU
  • 2 個硬碟(將它們命名為 ssd1、ssd2 並分配相同的大小,選取熱插拔和 SSD 方塊)
  • 配置為 4 個連接埠的 SATA 控制器

實驗室:在 Linux 上設定 lvm、raid

2) 開始安裝 Linux,當您開始選擇硬碟時,請執行以下操作:

  • 分區方式:手動,之後你應該會看到這樣的圖:
    實驗室:在 Linux 上設定 lvm、raid

  • 為/boot設定單獨的分割區:選擇第一個磁碟並在其上建立新的分割區表

    • 分割區大小:512M
    • 掛載點:/boot
    • 對第二個碟重複設置,但由於無法同時掛載/boot兩次,所以選擇掛載點:none,最終得到如下(有門框的圖,懶得重做了):
      實驗室:在 Linux 上設定 lvm、raid

  • RAID 設定:

    • 選擇第一個磁碟上的可用空間並將分割區類型配置為 RAID 的實體磁碟區
    • 選擇“完成分區設定”
    • 對第二個磁碟重複完全相同的設置,結果如下:
      實驗室:在 Linux 上設定 lvm、raid
    • 選擇“配置軟體 RAID”
    • 創建MD設備
    • 軟體 RAID 設備類型:選擇鏡像陣列
    • RAID XXXX 陣列的活動設備:選擇兩個磁碟機
    • 備用設備:預設為 0
    • RAID XX 陣列的活動裝置:選擇您在 raid 下建立的分割區
    • 結果,你應該得到這樣的圖片:
      實驗室:在 Linux 上設定 lvm、raid

  • 配置LVM:選擇配置邏輯磁碟區管理器

    • 保持目前分區佈局並配置 LVM:是
    • 建立卷宗組
    • 卷冊組名稱:系統
    • 新磁碟區組的裝置:選擇您建立的 RAID
    • 建立邏輯磁碟區
    • 邏輯磁碟區名稱:root
    • 邏輯磁碟區大小:磁碟大小的 25
    • 建立邏輯磁碟區
    • 邏輯磁碟區名稱:var
    • 邏輯磁碟區大小:磁碟大小的 25
    • 建立邏輯磁碟區
    • 邏輯磁碟區名稱:log
    • 邏輯磁碟區大小:磁碟大小的 15
    • 選擇“顯示配置詳細資訊”,您應該得到以下圖片:
      實驗室:在 Linux 上設定 lvm、raid
    • 完成 LVM 設定後,您應該會看到以下內容:
      實驗室:在 Linux 上設定 lvm、raid

  • 分區佈局:逐一選擇在LVM中建立的每個磁碟區並對其進行佈局,例如對於root,如下所示:

    • 用作:ext4
    • 掛載點:/
    • 標記根分區的結果應如下所示:
      實驗室:在 Linux 上設定 lvm、raid
    • 對var和log重複分區操作,選擇適當的掛載點(/var和/var/log手動輸入),得到下列結果:
      實驗室:在 Linux 上設定 lvm、raid
    • 選擇完成分割區
    • 系統會詢問您幾個問題,因為您仍然有未安裝的分割區並且交換未配置。 這兩個問題都應該得到否定的答案。

  • 最終結果應如下所示:
    實驗室:在 Linux 上設定 lvm、raid
    3) 透過在第一台裝置(sda)上安裝 grub 來完成作業系統安裝並引導系統。
    4)將/boot分割區的內容從sda磁碟機(ssd1)複製到sdb磁碟機(ssd2)

    dd if=/dev/sda1 of=/dev/sdb1

    5) 在第二台裝置上安裝grub:

  • 查看系統中的磁碟:

    fdisk -l
    lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

  • 列出上一個命令給您的所有磁碟並描述它是什麼類型的磁碟

  • 找到未安裝 grub 的磁碟機並執行此安裝:
    grub-install /dev/sdb

  • 使用 cat /proc/mdstat 指令查看有關目前 raid 的資訊並記下您所看到的內容。

  • 查看命令的輸出:pvs、vgs、lvs、mount 並寫下您到底看到了什麼

用自己的話描述你做了什麼以及你從任務中得到了什麼結果。

完成此任務後,建議儲存虛擬機器資料夾的備份副本或製作
流浪盒子: https://t.me/bykvaadm/191

結果:具有磁碟 ssd1、ssd2 的虛擬機

任務 2(模擬其中一個磁碟發生故障)

1)如果您已選取熱插拔框,則可以動態刪除磁碟

  • 在機器屬性中刪除磁碟ssd1
  • 找到你的虛擬機器檔案存放的目錄,刪除ssd1.vmdk
    2) 確保您的虛擬機器仍在運作
    3)重新啟動虛擬機器並確保仍在運行
    4)檢查RAID陣列的狀態:cat /proc/mdstat
    5)在VM介面新增一個相同大小的新磁碟,命名為ssd3
    6) 執行操作:
  • 使用 fdisk -l 查看新磁碟已到達系統
  • 將分割區表從舊磁碟複製到新磁碟: sfdisk -d /dev/XXXX | sfdisk /dev/YYY
  • 使用 fdisk -l 查看結果
  • 將新磁碟加入 raid 陣列: mdadm —manage /dev/md0 —add /dev/YYY
  • 查看結果:cat /proc/mdstat. 您應該看到同步已經開始
    7) 現在您需要手動同步不屬於 RAID 的分割區。
    為此,我們將使用 dd 實用程序,從「活動」磁碟複製到您最近安裝的新磁碟

    dd if=/dev/XXX of=/dev/YYY

    8) 同步完成後,在新磁碟機上安裝grub
    9) 重新啟動虛擬機器以確保一切正常
    用自己的話描述你做了什麼以及你從任務中得到了什麼結果。
    結果:磁碟 ssd1 已刪除,磁碟 ssd2 已儲存,磁碟 ssd3 已新增。

    任務 3(新增磁碟並移動分割區)

    這是所有提出的任務中最複雜、最繁重的。
    仔細檢查您正在做什麼以及使用哪些磁碟和分割區。
    建議在運行之前先製作一份副本。
    此任務獨立於 2 號任務;它可以在 1 號任務之後執行,並根據磁碟名稱進行調整。
    這個實驗室任務的第二部分應該會導致與完成第一部分後完全相同的狀態。

    為了使您的工作更輕鬆,我建議不要從主機上物理刪除磁碟,而僅
    在機器屬性中斷開它們。 從虛擬機器中作業系統的角度來看,它看起來完全相同,但是您可以
    如果出現問題,請重新連接磁碟並透過回滾幾個點來繼續工作,如果
    你有問題。 例如,您可能做得不正確或忘記將 /boot 分割區複製到新磁碟。
    我只能建議您多次仔細檢查正在使用的磁碟和分割區,甚至更好
    在一張紙上寫下磁碟、分割區和「實體」磁碟編號之間的對應關係。 美麗而清晰的樹
    球隊抽籤 lsblk,盡可能經常使用它來分析你已經做了什麼以及需要做什麼。

    對於故事...

    想像一下,您的伺服器已經在 2 個 SSD 驅動器上運行了很長時間,突然...

    1) 透過從虛擬機器屬性中刪除磁碟並重新啟動來模擬 ssd2 磁碟故障
    2)查看磁碟和RAID目前狀態:

    cat /proc/mdstat
    fdisk -l
    lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

    3) 你很幸運 - 你的老闆允許你購買幾張新磁碟:

    2 個大容量 SATA,用於將帶有日誌的分割區移到單獨磁碟這一拖延已久的任務

    2 個 SSD 來替換失效的 SSD,以及替換仍在運行的 SSD。

    請注意,伺服器籃僅支援一次安裝4個磁碟,
    因此,您無法一次新增所有磁碟。

    選擇 HDD 容量比 SSD 大 2 倍。
    SSD容量比之前的SSD大1,25倍。

    4)新增一張新的ssd盤,命名為ssd4,新增後查看發生了什麼:

    fdisk -l
    lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

    5)首先要注意舊盤上資料的安全。
    這次我們將使用LVM傳輸資料:

    • 首先,您需要將文件表從舊磁碟複製到新磁碟:
      sfdisk -d /dev/XXX | sfdisk /dev/YYY

      將 x、y 替換為正確的磁碟並找出該命令的作用。

      運行 lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 並將其輸出與先前的呼叫進行比較。
      發生了什麼變化?
      使用dd命令將/boot資料複製到新驅動器

      dd if=/dev/XXX of=/dev/YYY

      如果 /boot 仍安裝在舊磁碟上,則應將其重新安裝在活動磁碟上:

      mount | grep boot # смотрим куда смонтирован диск
      lsblk # смотрим какие диски есть в системе и смотрим есть ли диск, полученный из предыдущего пункта
      umount /boot # отмонтируем /boot
      mount -a # выполним монтирование всех точек согласно /etc/fstab. 
      # Поскольку там указана точка монтирования /dev/sda, то будет выполнено корректное перемонтирование на живой диск

      在新的 SSD 驅動器上安裝引導程式

      grub-install /dev/YYY

      我們為什麼要執行這個操作?

      建立一個新的 raid 陣列,僅包含一個新的 SSD 磁碟:

      mdadm --create --verbose /dev/md63 --level=1 --raid-devices=1 /dev/YYY

      如果不指定特殊鍵,上述命令將無法運作。
      閱讀幫助並將此鍵新增至命令中。

      使用 cat /proc/mdstat 指令檢查操作結果。 發生了什麼變化?
      運行 lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 並將其輸出與先前的呼叫進行比較。
      發生了什麼變化?
      6)下一步是配置LVM
      執行pvs指令查看目前物理卷信息
      建立一個新的實體卷,包括先前建立的 RAID 陣列:

      pvcreate /dev/md63

      運行 lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT 並將其輸出與先前的呼叫進行比較。
      發生了什麼變化?
      再次執行 pvs 指令。 發生了什麼變化?
      讓我們使用以下命令增加卷宗組系統的大小:

      vgextend system /dev/md63

      運行命令並記下您看到的內容和發生的變化。

      vgdisplay system -v
      pvs
      vgs
      lvs -a -o+devices

      LV var、log、root 目前位於哪個實體磁碟上?

      使用正確的裝置名稱將資料從舊磁碟機移至新磁碟機。

      pvmove -i 10 -n /dev/system/root /dev/md0 /dev/md63 

      對所有邏輯磁碟區重複此操作

      運行命令並記下您看到的內容和發生的變化。

      vgdisplay system -v
      pvs
      vgs
      lvs -a -o+devices
      lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

      讓我們透過刪除舊的 raid 磁碟來更改 VG。 替換正確的團隊名稱。

      vgreduce system /dev/md0

      運行命令並記下您看到的內容和發生的變化。

      lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
      pvs
      vgs

      為了讓畫面更美觀,將/boot重新掛載到第二個ssd碟(ssd4)並執行lsblk。 結果,ssd3碟不
      不應該安裝任何東西。 仔細檢查/boot分區不為空! ls /boot 必須展示
      幾個文件和資料夾。 研究該部分儲存的內容並記下哪個文件目錄負責什麼。
      7) 移除ssd3磁碟並依上述技術規格添加ssd5、hdd1、hdd2,結果:
      ssd4 - 第一個新的 SSD
      SSD5 - 第二個新 SSD
      hdd1 - 第一款新硬碟
      hdd2 - 第二個新硬碟

      8)檢查新增磁碟後發生了什麼事:

      fdisk -l
      lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

      9) 讓我們恢復主raid陣列的運作:

      • 複製分割區表,更換正確的磁碟:
        sfdisk -d /dev/XXX | sfdisk /dev/YYY
      • 請注意,當我們從舊磁碟複製分割區表時,似乎新的大小
        不使用整個硬碟容量。
        因此,很快我們就需要調整這個分割區的大小並擴展raid。
        透過運行命令親自查看:

        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

        10) 將啟動分割區/boot從ssd4複製到ssd5

        dd if=/dev/XXX of=/dev/YYY

        11) 在新磁碟機(ssd5)上安裝grub
        12)調整ssd5磁碟第二個分割區的大小

        運行磁碟分割實用程式:

        fdisk /dev/XXX

        輸入 d 鍵刪除現有分割區(選擇 2)
        輸入鍵 n 建立新分區
        輸入鍵 p 表示分區類型為“主”
        輸入鍵 2 以便新分區具有第二個數字
        第一個磁區:按 Enter 鍵接受自動計算的分割區開頭大小
        最後一個磁區:按 Enter 鍵接受自動計算的分割區末端的大小
        輸入 l 鍵查看所有可能的分區類型的列表,並在其中找到 Linux raid auto
        輸入 t 鍵變更已建立的分割區的類型 (2),然後輸入上一個步驟中找到的數字。
        輸入 w 鍵將變更寫入磁碟。
        12)重新讀取分區表並檢查結果

        partx -u /dev/XXX
        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

        將新磁碟新增至目前 raid 陣列(不要忘記替換正確的磁碟)

        mdadm --manage /dev/md63 --add /dev/sda2

        讓我們將陣列中的磁碟數量擴展到 2:

        mdadm --grow /dev/md63 --raid-devices=2

        查看結果:我們標記了 2 個數組,但該數組中包含的兩個部分的大小不同

        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

        13)增加ssd4磁碟上的分割區大小

        運行磁碟分割實用程式:

        fdisk /dev/XXX

        輸入 d 鍵刪除現有分割區(選擇 2)
        輸入鍵 n 建立新分區
        輸入鍵 p 表示分區類型為“主”
        輸入鍵 2 以便新分區具有第二個數字
        第一個磁區:按 Enter 鍵接受自動計算的分割區開頭大小
        最後一個磁區:按 Enter 鍵接受自動計算的分割區末端的大小
        在標記末尾,選擇「否」以將分割成員身分的簽章保留在陣列中。
        輸入 w 鍵將變更寫入磁碟。
        12)重新讀取分區表並檢查結果

        partx -u /dev/XXX
        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

        請注意,現在 sda2、sdc2 分割區的大小大於 raid 裝置的大小。

        13) 在此階段,raid 規模現在可以擴大

        mdadm --grow /dev/md63 --size=max
        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT # check result

        查看 lsblk 並注意發生了什麼變化
        14) 然而,雖然我們改變了raid的大小,但vg root、var、log本身的大小並沒有改變

        • 看PV大小:
          pvs
        • 讓我們擴大 PV 的大小:
          pvresize /dev/md63
        • 看PV大小:
          pvs

          15) 新增新出現的位置 VG var,root

          lvs # посмотрим сколько сейчас размечено
          lvextend -l +50%FREE /dev/system/root
          lvextend -l +100%FREE /dev/system/var
          lvs # проверьте что получилось

          至此,您已完成主陣列到新磁碟的遷移。 與ssd1一起工作,ssd2完成

          16) 我們的下一個任務是將 /var/log 移至新磁碟,為此我們將在 HDD 磁碟上建立一個新陣列和 lvm。

          • 讓我們看看新的硬碟有什麼名稱
            fdisk -l
          • 讓我們建立一個 raid 陣列
            mdadm --create /dev/md127 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
          • 讓我們在大磁碟的 raid 上建立一個新的 PV
            pvcreate data /dev/md127
          • 讓我們在此 PV 中建立一個名為 data 的群組
            vgcreate data /dev/md127
          • 讓我們建立一個具有所有可用空間大小的邏輯磁碟區並將其命名為 val_log
            lvcreate -l 100%FREE -n var_log data # lvs # посмотрим результат
          • 將建立的分割區格式化為ext4
            mkfs.ext4 /dev/mapper/data-var_log
          • 讓我們看看結果
            lsblk

            17) 將日誌資料從舊分割區轉移到新分割區

            暫時安裝一個新的日誌存儲

            mount /dev/mapper/data-var_log /mnt

            讓我們同步分割區

            apt install rsync
            rsync -avzr /var/log/ /mnt/

            讓我們找出/var/log中目前正在運行哪些進程

            apt install lsof
            lsof | grep '/var/log'

            停止這些進程

            systemctl stop rsyslog.service syslog.socket

            執行分割區的最終同步(自上次同步以來可能已更改的資料)

            rsync -avzr /var/log/ /mnt/

            交換部分

            umount /mnt
            umount /var/log
            mount /dev/mapper/data-var_log /var/log

            讓我們檢查一下發生了什麼

            lsblk

            18) 編輯/etc/fstab
            fstab - 記錄引導時掛載分割區的規則的文件
            我們的任務是找到 /var/log 掛載的行並修復設備 system-logdata-var_log

            19) 此階段最重要的事情是不要忘記更改 radela 表(例如 ext4)。 因為無論我們如何更改任何raid、lvm,直到分區上的FS通知分區大小現在已更改為止,我們都將無法使用新的空間。 使用命令 resize2fs 改變FS。

            20) 最後和弦

            • 讓我們重新啟動吧。 如果您正確執行了所有操作,您將被帶回作業系統(這是確保一切正常運行所必需的。此步驟除了自測試之外沒有任何意義)
            • 檢查我們想做的一切是否真的完成了:
              pvs
              lvs
              vgs
              lsblk
              cat /proc/mdstat

            21) [可選] 請依照下列步驟操作

            • 重新啟動時按F12指定不同的驅動器以確保可以啟動
              來自任何一個 SSD 驅動器,這樣我們就不用擔心其中一個故障
            • 現在您在 VG 系統中有不必要的 LV 登入。 在 root 或 var 之間分配此空間,但不使用
              設計 100%FREE 使用 -L 鍵手動指定尺寸:

              -L 500M
            • 修復/boot位於兩個分割區且不同步的問題,無需正確執行此操作,
              它作為示例添加到此處。 不要忘記先將 /boot 的內容複製到某處。

              • 建立一個新的 raid 並在其中包含 sda1,sda2
              • 將這些分割區包含在現有 raid 中並將 /boot 還原到主 raid,但不安裝它。

來源: www.habr.com

添加評論