Linux

可以組合來自不同組的邏輯捲而不複製內容嗎?

  • November 2, 2018

我使用 Arch Linux 核心4.18.12-arch1-1-ARCH(2018 年 11 月)。

我使用一個 SATA 盒(用於 Thinkpad T400),它裝有舊筆記型電腦的硬碟。我想決定合併內容並擴展邏輯卷rootvollvhome保持目前設置(見下文)。我只使用ext4文件系統,兩個卷都包含數據。雖然這個問題似乎在這裡得到了回答,但我不確定如何防止數據失去。

所以目前我從一個 luks 加密的 SSD 啟動,我有一些符號連結$HOME指向延遲安裝的硬碟驅動器上的目錄以擴展儲存,這允許我$HOME在硬碟驅動器上使用我的舊驅動器。

NAME                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT UUID
sda                    8:0    0 223.6G  0 disk             
└─sda1                 8:1    0 223.6G  0 part             3d17c5b4-a603-4600-9f36-c598a7da783e
 └─root             254:0    0 223.6G  0 crypt            PRGLfW-Q18M-pPu8-nr6a-tloV-SS4W-kK1ROX
   ├─matrix-swapvol 254:1    0     2G  0 lvm   [SWAP]     38e862ef-e919-4388-810f-63ce187b342c
   └─matrix-rootvol 254:2    0 221.6G  0 lvm   /          c71a8292-c678-4a53-90da-3e4bf78cedbb
sdb                    8:16   0 232.9G  0 disk             
├─sdb1                 8:17   0   512M  0 part             14c635fb-6ee7-45c0-aefd-d3d7440116c0
└─sdb2                 8:18   0 232.4G  0 part             c36535d9-4098-4939-9ebe-6a2be950f3ea
 └─caddy            254:3    0 232.4G  0 crypt            kTkSk4-oemR-1fJi-4brz-OXmW-DEZk-rqF2pN
   ├─vgarch-lvswap  254:4    0     4G  0 lvm              a1932471-209e-4d47-85dc-c4ea1ce37de8
   ├─vgarch-lvroot  254:5    0    15G  0 lvm              67d37f85-c2c0-40e7-88e9-afd4a6c1c561
   └─vgarch-lvhome  254:6    0 211.2G  0 lvm              dd89d271-776a-426a-826d-9f4d7056fc6a

可以看出,無論出於何種原因,我決定在 luks 上使用 lvm 兩次。請注意,SSD 沒有/boot分區:它是在 libreboot ROM 映像的幫助下解密的。在引導期間,crypttabfor/dev/sdb2的 UUID 中的條目使用/. 然後,我使用 systemd 的自動掛載服務在需要時掛載或解除安裝它:

# /etc/fstab
# /dev/mapper/vgarch-lvhome
UUID=dd89d271-776a-426a-826d-9f4d7056fc6a /mnt/caddy ext4 rw,noatime,data=ordered,noauto,nofail,x-systemd.automount,x-systemd.device-timeout=20,x-systemd.idle-timeout=2min 0 0

我遞歸地更改了lvhome. 因為我不需要lvrootlvswap我將與包含 /boot 的 /dev/sdb1 一起刪除它們。

那麼如何將這些結合起來呢?這是可取的嗎?(因為SSD和HDD的用途不同)建議先將內容複製到另一個文件系統,但這是否違背了lvm的目的?我認為擴大或縮小文件系統會很容易,但我想我想像了 zfs 世界的功能。

LVM 提供邏輯卷,它們是邏輯塊設備,並且可以輕鬆地對這些塊設備進行增長、收縮、重定位、快照等操作。然後,您可以以任何您喜歡的方式使用這些塊設備……它可以是文件系統,也可以是其他東西,例如用於具有自己的分區表和所有內容的 VM 的虛擬 HDD。

LVM 在文件系統級別上什麼都不做。因此,由文件系統來支持處理那些增長或縮小的塊設備,或者由 VM 來調整其分區表的大小。

大多數文件系統支持增長(但有時不線上,或者沒有超過一定的限制),但其中一些不支持收縮。因此,儘管 LVM 對縮小塊設備沒有疑慮,但您必須首先縮小文件系統,而對於某些文件系統,這是不可能的。

通常不支持合併兩個單獨文件系統的內容。

所以是的,在某些情況下,您必須以老式方式複製文件。然後放棄/刪除那些文件所在的 LV,並使用釋放的空間來擴展 LV 並擴大您將文件複製到的文件系統。

那麼如何將這些結合起來呢?這是可取的嗎?(因為 SSD 和 HDD 的用途不同)

我不會創建一半由 SSD 支持、一半由 HDD 支持的塊設備。我喜歡把這些分開。

在其他一些情況下可能有意義,例如,您可以執行 SSD-HDD-RAID1,其中 HDD 設置為主要寫入,這意味著所有讀取通常由 SSD 提供,因為它更快。但是隨著 SSD 價格的下降,這種設置不太常見,因為您可以只使用兩個 SSD 來代替正常 RAID1。

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