如何將 Linux 硬碟複製到更小的快閃記憶體驅動器
目前,我正在嘗試將安裝了 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
//如果您不確定。lvdisplay
)ls /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 程序。