我试图了解调整逻辑卷大小的正确方法是什么(我想缩小一个逻辑卷并扩展另一个逻辑卷,而不添加任何额外的 pv)。
据我了解,根据此链接:Chris 的 lvm 指南,以及我读到的有关 VLM 的其他来源,正确的方法如下:
1. Shrink the file system of lv #1
2. Shrink the lv #1 size
3. extend the lv #2 size
4. fix/extend the file system of lv #2
此外,我还了解 LVM 的架构(PV 映射到 VG,VG 映射到 LV)。
我的差距是:
- 如果我不向该方案添加任何额外的 PV,我是否需要关心 LUKS?或者说这个过程只要PV不改变,就不会影响LUKS?
- 分区、PV 是作为一个单元进行加密还是每个 lv 都单独加密?
- 就我而言,我想调整大小
/tmp
并/var
根据我的体系结构,我是否需要从密钥上的磁盘启动并从 livecd 进行启动,或者我可以从主机本身进行启动吗?
光伏扫描
PV /dev/nvme0n1p3 VG fedora_localhost-live lvm2 [475.35 GiB / 4.00 MiB free]
Total: 1 [475.35 GiB] / in use: 1 [475.35 GiB] / in no VG: 0 [0 ]
扫描仪
Found volume group "fedora_localhost-live" using metadata type lvm2
左扫描
ACTIVE '/dev/fedora_localhost-live/root' [70.00 GiB] inherit
ACTIVE '/dev/fedora_localhost-live/home' [<348.35 GiB] inherit
ACTIVE '/dev/fedora_localhost-live/swap' [38.00 GiB] inherit
ACTIVE '/dev/fedora_localhost-live/var' [4.00 GiB] inherit
ACTIVE '/dev/fedora_localhost-live/tmp' [15.00 GiB] inherit
df-h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 124M 16G 1% /dev/shm
tmpfs 16G 2.4M 16G 1% /run
/dev/dm-2 69G 9.9G 56G 16% /
/dev/nvme0n1p2 976M 232M 678M 26% /boot
/dev/nvme0n1p1 599M 30M 570M 5% /boot/efi
/dev/sda1 826G 783G 44G 95% /mnt/workspace_HDD
/dev/dm-7 3.9G 3.0G 720M 81% /var
/dev/loop0 182M 182M 0 100% /var/lib/snapd/snap/spotify/36
/dev/loop1 90M 90M 0 100% /var/lib/snapd/snap/core/8268
/dev/dm-8 342G 3.8G 321G 2% /home
/dev/dm-9 15G 41M 14G 1% /tmp
tmpfs 3.2G 112K 3.2G 1% /run/user/1000
此外,我很乐意了解 Fedora 所做的映射以及用于命令的路径: lvreduce / lvexdend / resize2fs:我想我理解为什么每个 lv 有“两个”路径,一个用于逻辑卷,一个用于逻辑卷第二个是解密的卷。
ls -l /dev/映射器/
total 0
crw-------. 1 root root 10, 236 Jan 18 18:10 control
lrwxrwxrwx. 1 root root 7 Jan 18 18:10 fedora_localhost--live-home -> ../dm-4
lrwxrwxrwx. 1 root root 7 Jan 18 18:10 fedora_localhost--live-root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Jan 18 18:10 fedora_localhost--live-swap -> ../dm-1
lrwxrwxrwx. 1 root root 7 Jan 18 18:10 fedora_localhost--live-tmp -> ../dm-6
lrwxrwxrwx. 1 root root 7 Jan 18 18:10 fedora_localhost--live-var -> ../dm-5
lrwxrwxrwx. 1 root root 7 Jan 18 18:10 luks-3b985124-40c1-450b-8740-da85a6083aa5 -> ../dm-8
lrwxrwxrwx. 1 root root 7 Jan 18 18:10 luks-7791d468-c71b-4603-942e-5a30efc8d3fd -> ../dm-9
lrwxrwxrwx. 1 root root 7 Jan 18 18:10 luks-d695f07d-2017-4e36-a792-851cb23d26d1 -> ../dm-2
lrwxrwxrwx. 1 root root 7 Jan 18 18:10 luks-e0d65c04-dfdb-4f61-8b2f-0b76127eaf8e -> ../dm-3
lrwxrwxrwx. 1 root root 7 Jan 18 18:10 luks-f5400a56-7498-4a73-ab1b-40c331e74d6f -> ../dm-7
和最后一个命令: LSBLK
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 181.1M 1 loop /var/lib/snapd/snap/spotify/36
loop1 7:1 0 89.1M 1 loop /var/lib/snapd/snap/core/8268
sda 8:0 0 953.9G 0 disk
├─sda1 8:1 0 825.9G 0 part /mnt/workspace_HHD
└─sda2 8:2 0 128G 0 part
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 475.4G 0 part
├─fedora_localhost--live-root 253:0 0 70G 0 lvm
│ └─luks-d695f07d-2017-4e36-a792-851cb23d26d1 253:2 0 70G 0 crypt /
├─fedora_localhost--live-swap 253:1 0 38G 0 lvm
│ └─luks-e0d65c04-dfdb-4f61-8b2f-0b76127eaf8e 253:3 0 38G 0 crypt [SWAP]
├─fedora_localhost--live-home 253:4 0 348.4G 0 lvm
│ └─luks-3b985124-40c1-450b-8740-da85a6083aa5 253:8 0 348.3G 0 crypt /home
├─fedora_localhost--live-var 253:5 0 4G 0 lvm
│ └─luks-f5400a56-7498-4a73-ab1b-40c331e74d6f 253:7 0 4G 0 crypt /var
└─fedora_localhost--live-tmp 253:6 0 15G 0 lvm
└─luks-7791d468-c71b-4603-942e-5a30efc8d3fd 253:9 0 15G 0 crypt /tmp
根据输出LSBLK看起来每个lv都是作为一个单元加密的,还是我错了?
我了解 LVM 在没有 LUKS 的情况下如何工作,我想我了解 LUKS 在没有 LVM 的情况下如何工作。但我不明白它们如何协同工作,它们之间的关系是什么,以及当像我这样的情况存在 luks 时,实际上如何调整逻辑卷的大小。
谢谢。
答案1
LVM 中有 LUKS,所以是的,您必须关心 LUKS。lvresize --resizefs
在这里不起作用,所以你必须手动完成。
如果没有 LUKS,LV 的大小和文件系统的大小将是相同的。对于 LUKS,您还必须考虑 LUKS 标头。该标头大几个 MiB,因此文件系统必须小几个 MiB,或者逻辑卷必须大几个 MiB。因此,LUKS 标头和文件系统都有足够的空间。
假设您想要缩小/home
到100G
LUKS 标头大小为16M
(比较cryptsetup luksDump
、有效负载或数据偏移量)。
如果你创建/home
文件系统,LV 的大小100G
就必须确定。100G+16M
或者调整文件系统的100G-16M
大小,以便 LV 可以变得100G
清晰。
因此,例如:
# shrink the filesystem first
resize2fs /dev/mapper/luks-home 100G
# shrink the LUKS
cryptsetup resize --device-size 100G luks-home
# shrink the LV
lvresize -L102416M lvm/home # 100G = 102400M + 16M
如果您不确定数学,通常会进一步缩小文件系统(例如 99G 而不是 100G)以增加安全裕度,然后稍后将其恢复到“真实”设备大小:
# after resizing the LV, grow LUKS and filesystem to device size
cryptsetup resize luks-home
resize2fs /dev/mapper/luks-home
与传统分区不同,使用 LVM 没有理由立即使用所有可用空间。如果您的 LV 大小更合理,您将有足够的可用 LVM 空间来根据需要扩展文件系统,而无需先经历麻烦的收缩过程。
答案2
我花了很长的时间,但是在虚拟机上进行了一些尝试和错误之后(我设法在它工作之前毁掉了几台机器 - 所以在真正的系统上这样做之前先练习一下)以及我在这里得到的巨大帮助,我设法减少了LV 的方案 luks over lvm 如下:
- 启动 live-CD 并进入救援模式
解密分区
cryptsetup open /dev/mapper/fedora_localhost--live-tmp tmpCrypt
收缩文件系统
resize2fs /dev/mapper/tmpcrypt 6G
关闭LUKS分区
cryptsetup close /dev/mapper/tmpCrypt
缩小 LUKS 标头
cryptsetup resize /dev/mapper/fedora_localhost--live-tmp
缩小 LV 大小(隐窝大小 + LUKS 标头大小的 16M = 6144+16)
sudo lvreduce -L 6160M /dev/mapper/fedora_localhost--live-tmp
再次调整 LUKS 的大小
cryptsetup resize /dev/mapper/fedora_localhost--live-tmp
解密分区
cryptsetup open /dev/mapper/fedora_localhost--live-tmp tmpCrypt
再次调整文件系统的大小
sudo resize2fs /dev/mapper/tmpCrypt
*注意:据我所知,步骤 8 和 9 不是强制性的 - 但我这样做只是为了在重新启动系统之前验证文件系统。