Lvm

甚至可以糾正我的 LVM 錯誤嗎?

  • May 16, 2021

我在舊伺服器上安裝了這個 Proxmox (PVE),我想交換舊驅動器以獲得更多空間。但首先我想將 PVE 安裝移動到 SSD。很簡單。

初始點:

  • 1x76GB SATA(PVE 根 LVM)
  • 2x500GB SATA(VG1 配置為帶有 mdadm 的 RAID1 - LVM Thinpool)

最終目標:

  • 1x120GB SSD(PVE 根 LVM)
  • 2x500GB SATA(VG1 更長)
  • 1x2000GB SATA*(在 VG1 中,以便將pvmove所有文件從舊 RAID 轉移到此驅動器)

*此驅動器將在 mdraid 設置中配置另一個 2TB 驅動器,稍後將添加該驅動器(由於缺少電纜和 SATA 埠)。

我插入 SSD 並用 Linux 啟動了一個 live USB,執行我在網上找到的 dd 命令將舊的 76GB 驅動器複製到新的(但使用過的)120GB SSD。這很好,除了磁碟仍然顯示 76GB 大小。

所以要解決這個問題,我不完全確定我事後做了什麼。查看歷史我相信我執行了以下命令

echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan
parted -l
# At this point I got a few questions and I chose Fix and/or Ignore until it was finished
pvresize /dev/sda3
lvresize /dev/pve/data -l 100%FREE

現在我認為我已經完成並開始處理列表中的下一個項目。這是我遇到深夜大腦Stu Pid的地方。

我用一個驅動器創建了 RAID

mdadm --create /dev/md2 --level 1 --raid-devices 2 /dev/sdd missing
# Next, I forgot to RTFM..
mkfs.ext4 /dev/md2
# I actually aborted the above command Ctrl-C...
# Uhhhh. I create the Physical Volume and extended the VG
pvcreate /dev/md2
vgextend vg1 /dev/md2
# Next, I dunno
lvextend /dev/vg1/tpool /dev/md2
resize2fs /dev/mapper/vg1-tpool
# Again what? And now something from Youtube
/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf
dpkg-reconfigure pve-kernel-`uname -r`

從那時起,出於某種原因,我又跑了parted -l一次。我所知道的是,我現在不知道自己在做什麼。resize2fs``vg1-tpool

總而言之,這就是我最終得到的結果(為簡潔起見,省略了一些資訊):

root@host:~# lsblk
NAME                           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                              8:0    0 111.8G  0 disk
├─sda1                           8:1    0  1007K  0 part
├─sda2                           8:2    0   512M  0 part
└─sda3                           8:3    0 111.3G  0 part
 ├─pve-swap                   253:0    0     8G  0 lvm   [SWAP]
 ├─pve-root                   253:1    0  18.5G  0 lvm   /
 ├─pve-data_tmeta             253:2    0     1G  0 lvm
 │ └─pve-data-tpool           253:4    0  82.8G  0 lvm
 │   ├─pve-data               253:5    0  82.8G  0 lvm
 │   ├─pve-vm--102--disk--0   253:6    0    15G  0 lvm
 │   └─pve-vm--103--disk--0   253:7    0     4G  0 lvm
 └─pve-data_tdata             253:3    0  82.8G  0 lvm
   └─pve-data-tpool           253:4    0  82.8G  0 lvm
     ├─pve-data               253:5    0  82.8G  0 lvm
     ├─pve-vm--102--disk--0   253:6    0    15G  0 lvm
     └─pve-vm--103--disk--0   253:7    0     4G  0 lvm
sdb                              8:16   0 465.8G  0 disk
└─sdb1                           8:17   0 465.8G  0 part
 └─md1                          9:1    0 465.7G  0 raid1
   ├─vg1-tpool_tmeta          253:8    0   108M  0 lvm
   │ └─vg1-tpool-tpool        253:10   0   2.3T  0 lvm
   │   ├─vg1-tpool            253:11   0   2.3T  0 lvm
   │   ├─vg1-vm--100--disk--0 253:12   0    32G  0 lvm
   │   ├─vg1-vm--100--disk--1 253:13   0   350G  0 lvm
   │   └─vg1-vm--101--disk--0 253:14   0    32G  0 lvm
   └─vg1-tpool_tdata          253:9    0   2.3T  0 lvm
     └─vg1-tpool-tpool        253:10   0   2.3T  0 lvm
       ├─vg1-tpool            253:11   0   2.3T  0 lvm
       ├─vg1-vm--100--disk--0 253:12   0    32G  0 lvm
       ├─vg1-vm--100--disk--1 253:13   0   350G  0 lvm
       └─vg1-vm--101--disk--0 253:14   0    32G  0 lvm
sdc                              8:32   0 465.8G  0 disk
└─sdc1                           8:33   0 465.8G  0 part
 └─md1                          9:1    0 465.7G  0 raid1
   ├─vg1-tpool_tmeta          253:8    0   108M  0 lvm
   │ └─vg1-tpool-tpool        253:10   0   2.3T  0 lvm
   │   ├─vg1-tpool            253:11   0   2.3T  0 lvm
   │   ├─vg1-vm--100--disk--0 253:12   0    32G  0 lvm
   │   ├─vg1-vm--100--disk--1 253:13   0   350G  0 lvm
   │   └─vg1-vm--101--disk--0 253:14   0    32G  0 lvm
   └─vg1-tpool_tdata          253:9    0   2.3T  0 lvm
     └─vg1-tpool-tpool        253:10   0   2.3T  0 lvm
       ├─vg1-tpool            253:11   0   2.3T  0 lvm
       ├─vg1-vm--100--disk--0 253:12   0    32G  0 lvm
       ├─vg1-vm--100--disk--1 253:13   0   350G  0 lvm
       └─vg1-vm--101--disk--0 253:14   0    32G  0 lvm
sdd                              8:48   0   1.8T  0 disk
└─md2                            9:2    0   1.8T  0 raid1
 └─vg1-tpool_tdata            253:9    0   2.3T  0 lvm
   └─vg1-tpool-tpool          253:10   0   2.3T  0 lvm
     ├─vg1-tpool              253:11   0   2.3T  0 lvm
     ├─vg1-vm--100--disk--0   253:12   0    32G  0 lvm
     ├─vg1-vm--100--disk--1   253:13   0   350G  0 lvm
     └─vg1-vm--101--disk--0   253:14   0    32G  0 lvm

root@host:~# vgdisplay
 --- Volume group ---
 VG Name               pve
 VG Access             read/write
 VG Status             resizable
 VG Size               <111.29 GiB
 PE Size               4.00 MiB
 Total PE              28489
 Alloc PE / Size       28489 / <111.29 GiB
 Free  PE / Size       0 / 0

 --- Volume group ---
 VG Name               vg1
 VG Access             read/write
 VG Status             resizable
 VG Size               2.27 TiB
 PE Size               4.00 MiB
 Total PE              596101
 Alloc PE / Size       596101 / 2.27 TiB
 Free  PE / Size       0 / 0

root@host:~# lvdisplay vg1
 --- Logical volume ---
 LV Name                tpool
 VG Name                vg1
 LV Write Access        read/write
 LV Creation host, time host, 2020-09-11 00:05:40 +0200
 LV Pool metadata       tpool_tmeta
 LV Pool data           tpool_tdata
 LV Status              available
 # open                 4
 LV Size                2.27 TiB
 Allocated pool data    15.16%
 Allocated metadata     50.58%
 Current LE             596047
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           253:10

從 Proxmox 環境

實際的錯誤是什麼,我該如何解決?似乎我已經以某種方式分配了每個 VG 上的所有範圍,所以現在我真的什麼都做不了!同樣,是否仍然可以:

  • 拿回“自由空間”,不管這意味著什麼
  • 修復 /dev/md2 以便我可以pvmove正確地從 /dev/md1

您想要一個名為vg1的 VG ,由兩個 RAID 組成。兩個小磁碟構成 /dev/md1,大磁碟構成 /dev/md2。從lsblk輸出和螢幕截圖來看,這就是你所擁有的。**好的!**儘管 LVM 的內置鏡像可能是更好的解決方案(更簡單,可能不太靈活)。

現在,事情變得很奇怪。您在 /dev/md2 上創建了一個文件系統,然後通過將設備變成物理卷來丟棄它。您將 /dev/md2 添加到卷組(確定)並將tpool擴展到**vg1的整個大小。沒關係,但是如果您擴展邏輯卷以使用所有空間,您應該不會對所有空間都用完感到驚訝。

更奇怪的是,在擴展tpool之後,你執行resize2fs /dev/mapper/vg1-tpool它。這實際上應該導致錯誤,因為該卷上沒有文件系統。或者你可能遺漏了幾個步驟?

為了在vg1中獲得可用空間,我只需將該卷的大小減小到以前的大小。通常,這應該可以工作,希望任何可能使用tpool的精簡卷都沒有看到太多活動。

最後,我絕對不會將隨機教程和 Youtube 影片用於我不理解且有可能摧毀我的伺服器的任務。在重試之前,請閱讀對 LVM、精簡捲和文件系統的全面介紹。

引用自:https://unix.stackexchange.com/questions/649117