Linux

如何使用現有未使用的 lvm 空間創建另一個物理卷/分區而不會失去數據?

  • March 8, 2017

我有一個安裝了 Fedora 20的1T U盤。它在下面的第一張圖片中顯示為sdd。我只用了大約50GB。sdd2 下有 3 個邏輯卷,在我縮小其主邏輯分區後還有大約 620GB 的可用空間,如第二張圖所示。

我正在考慮通過使用 620GB 可用空間創建一個物理卷/分區 sdd3。我希望其他邏輯卷不會損壞,數據保持不變。我怎樣才能做到這一點?

我用 clonezilla 創建了一個磁碟映像。所以我不擔心過程中的數據失去。

這樣做的目的是我想將我的 1T 磁碟上的安裝和設置轉移到我的另一個 500GB USB 磁碟上。我嘗試了很多方法,clonezilla、dd邏輯分區、真實映像、gparted ……由於 lvm 和較小的目的地,沒有人可以幫助我或給我一個好的結果。我希望在新的物理分區佔用一些空間後,我可以 dd 物理分區。

sdd是1T U盤

綠色是自由空間

編輯:

我必須重新啟動我的 ubuntu live CD 會話。現在目標磁碟是sdb。嘗試調整 sdb2 的大小時出現錯誤:

ubuntu@ubuntu:~$ sudo su
root@ubuntu:/home/ubuntu# pvdisplay /dev/sdb2
 --- Physical volume ---
 PV Name               /dev/sdb2
 VG Name               fedora_lym
 PV Size               930.99 GiB / not usable 4.00 MiB
 Allocatable           yes 
 PE Size               4.00 MiB
 Total PE              238333
 Free PE               160569
 Allocated PE          77764
 PV UUID               Ytsy31-op7u-DqLM-lJG7-uIFb-2hAG-eZhn0a

root@ubuntu:/home/ubuntu# pvresize --setphysicalvolumesize 320G /dev/sdb2
 /dev/sdb2: cannot resize to 81919 extents as later ones are allocated.
 0 physical volume(s) resized / 1 physical volume(s) not resized
root@ubuntu:/home/ubuntu# 

編輯2:

完成,sdb3 現在在這裡:

root@ubuntu:/home/ubuntu# lsblk
NAME                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                     8:0    0 223.6G  0 disk 
├─sda1                  8:1    0   100M  0 part 
└─sda2                  8:2    0 223.5G  0 part 
sdb                     8:16   0 931.5G  0 disk 
├─sdb1                  8:17   0   500M  0 part 
├─sdb2                  8:18   0 312.5G  0 part 
│ ├─fedora_lym-swap 252:0    0   3.8G  0 lvm  
│ ├─fedora_lym-home 252:1    0   250G  0 lvm  
│ └─fedora_lym-root 252:2    0    50G  0 lvm  
└─sdb3                  8:19   0 618.5G  0 part 
sr0                    11:0    1   4.4G  0 rom  /cdrom
loop0                   7:0    0   1.1G  1 loop /rofs
root@ubuntu:/home/ubuntu# 

如果我理解正確,您想使用 sdd2 上的可用空間來創建另一個分區 sdd3。為此,您首先需要使用pvresize.

首先看看你的物理卷有多大pvdisplay /dev/sdd2。如果它已經具有正確的大小,請跳到下一步。否則你需要先調整它的大小:

pvresize --setphysicalvolumesize 123G /dev/sdd2

代替 123G 使用適當的新大小。小心這個。

pvresize由於分配了某些範圍的錯誤而失敗時,可能有兩個原因:1)您試圖使 pv 大小太小 2)某些範圍被分配到磁碟的末尾而不是開頭。

在後一種情況下,您需要先將這些範圍移到開頭。對於連續段分配的列表,請執行

pvs -v --segments

當您的 PV 上有可用空間時,並非所有內容都會從第一個段分配到最後一個段。將阻止您的 pvresize 的片段移動到開頭

pvmove --alloc anywhere SOURCE_SEGMENTS

(SOURCE_SEGMENTS 是您要移動的段)

有關更詳細的解釋,請查看此處的答案:https ://unix.stackexchange.com/a/67707/154982

下一步是減小分區大小。記下物理卷的新總大小。然後使用 fdisk(或您的圖形工具或您喜歡的任何分區程序),記下分區 sdd2 的起始塊,將其刪除並創建一個具有物理卷大小的新分區。重要的是,這個新分區從您的舊 sdd2 分區開始的完全相同的塊開始!對於分區大小,請記住,您可能必須將塊/扇區號轉換為字節。fdisk 將告訴您為一個扇區(通常為 512)分配了多少字節。還要記住,幅度的基數是 1024,而不是 1000(即 KiB 而不是 kB)。

創建新的較小的 sdd2 後,您的磁碟上有新的未分配空間,您可以使用它來創建另一個分區 sdd3。

但是,如果您只想在 sdd2 末尾為您的 LVM 使用免費的 600MB,您可能只想使用

pvresize /dev/sdd2

然後增加你的 lv 和文件系統的大小(使用lvresize -r),你就完成了。當然,您也可以在免費的 pv 空間上創建一個新的 lv。

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