Linux

如何將 Linux 硬碟複製到更小的快閃記憶體驅動器

  • June 26, 2019

目前,我正在嘗試將安裝了 Linux 的硬碟複製到 16GB 快閃記憶體驅動器。硬碟是 233GB,但df -h顯示只有 3.5G 在使用。我可以使用 Clonezilla 僅使用分配的空間量創建映像並將其複製到快閃記憶體驅動器,我可以在其中將映像部署到其他 Linux 筆記型電腦嗎?

**編輯:**我嘗試將 Clonzilla 與 Parted Magic 一起使用,並嘗試執行 device-image 並引發以下錯誤:

split /home/partimag/lubuntu.img/lubuntu-vg-root.ext4.ptcl-img.gz.aa: Input/output error
Checking the disk space...
Failed to save partition /dev/lubuntu-vg/root.
Press Enter to continue

您沒有詳細說明您的磁碟佈局,所以我將做出一些假設。請為您的應用程序進行修改,或提供其他詳細資訊,我可以對其進行編輯。

假設:

  • 1 個物理磁碟
  • 2 個分區(引導 + LVM PV)
  • 2 LV(根 + 交換)

這幾乎是 CentOS/Red Hat 的預設安裝,非常非常普遍。

您可以使用 GParted 作為啟動媒體,但讓我們在沒有實際 GParted 工具的情況下嘗試一下:

從棧底開始。收縮 LVM 邏輯卷及其文件系統。

lvreduce -rL 8G /dev/mapper/centos-root

我在這裡指定了 8G,因為它比您可用的 16G 小,而且您的交換量可能仍然很小。

將 centos-root 替換為您的 LV 名稱。執行lvs//如果您不確定。lvdisplayls /dev/mapper

然後,您應該能夠縮小 LVM PV。

pvresize --setphysicalvolumesize 14G /dev/vda2

將 /dev/vda2 替換為您的磁碟。

我選擇 14G 是因為它剛好低於您的 16G 限制,而且我們不必以這種方式進行任何精確的數學運算。如果您的交換是在您的根卷之前分配的,那麼事情應該可以工作。如果在您剛剛調整大小的根卷後面分配交換,此命令*可能會失敗。*如果是這種情況,現在根和交換之間存在間隙,您需要將交換滑入該空閒區域,以便 PV 可以縮小。我遇到了這個問題,但通過接下來的步驟克服了它。

/dev/vda2: cannot resize to *n* extents as later ones are allocated.

首先,找出需要移動的範圍。

pvs -v --segments /dev/vda2

您將看到 LV 在上面的目標邊界n之後​​出現一系列範圍。

pvmove --alloc anywhere /dev/vda2:n-n

此命令將重新排列佈局,使卷佔據您剛剛從縮小根目錄創建的可用空間。然後您可以再次嘗試pvresize,它現在應該可以工作了。

最後,縮小 LVM 分區。

fdisk /dev/vda2

首先,列印 ( p) 您的分區表。(稍後您將需要它。)您要刪除的 ( d) 是您的 LVM 分區,希望它位於磁碟的末尾。然後,使用新的較小尺寸重新創建它。( n) 絕對確保它與以前在同一個扇區開始。(向上滾動到您列印原始表格的位置。)再次將其設為 15G,因為數學計算,我們知道它將適合 16G 快閃記憶體驅動器,但實際上並不是 16G。使用 ( ) 完成此操作w以編寫您的更改。

驗證所有內容均小於 16G,然後重試您的 CloneZilla 程序。

縮小磁碟佈局

引用自:https://serverfault.com/questions/972447