This is more interesting than my wireless problem.
Because I no longer needed a / partition on my HDD, I wanted to extend
my home partition. It isn't as dead-simple as back a decade ago. Back
then, I would use fdisk to delete and recreate partitions and resize2fs
to resize the file system.
Now I have layers upon
layers of useful abstraction. I'm calling each something potentially
inaccurate, and the tool I needed in brackets. (Those with wildcards
match multiple tools with the same beginning.)
Top
- ext4 file system (resize2fs)
- Logical volume (lv*)
- Volume group (vg*)
- Physical volume (pv*)
- partitions (fdisk)
Bottom
At first I was almost a little annoyed
at the apparent complexity, but it's actually straight forward. My
drive is still divided into multiple partitions in a partition table.
(/dev/sda1, /dev/sda2, /dev/sda3, etc; I have 8 for various reasons).
Physical
volumes seem to correspond to those partitions, but mostly just the
useful storage ones (e.g. I don't have them for EFI or swap
partitions). pvcreate lets me define them.
The
physical volumes are collected into volume groups. For example,
/dev/sdb1 (my intended root) might be a part of "pantaloons-fedora-ssd"
(if I named my machine pantaloons), and /dev/sda2 and /dev/sda4 might
both be part of "pantaloons-fedora-hdd" (two large areas for my /home
that I'd like to combine later, but which are currently separated by some other, annoying partition).
The
volume group kind of looks like a single contiguous (!) entity (despite
being a collection of disparate physical partitions). Then, I can
define logical volumes atop the volume groups.
I can
have both / and swap as separate logical volumes atop
"pantaloons-fedora-ssd" (talk about cramped - maybe I don't want to
hibernate after all), and have a single logical volume for /home atop
the "pantaloons-fedora-hdd" volume group.
This is where things get a little trippy though. Where does the encryption happen?
For my root file system, it looks like it happens like:
partition /dev/sdb1 > LUKS > physical volume > EXT4 file system
For my home file system, it looks like this:
partitions
/dev/sda2,/dev/sda4 > two physical volumes > 1 volume group > 1
logical volume > LUKS > EXT4 file system
FS | Ext4 | Ext4 | ||
---|---|---|---|---|
(LUKS) | /dev/mapper/luks-BAR | |||
LVs | root | swap | /home | |
VGs | pantaloons-fedora-ssd | pantaloons-fedora-hdd | ||
PVs | /dev/mapper/luks-FOO | /dev/sda2 | /dev/sda4 | |
(LUKS) | /dev/mapper/luks-FOO | /dev/sda2 | /dev/sda4 | |
partitions | /dev/sdb3 | |||
disks | /dev/sdb (SSD) | /dev/sda (HDD) |
The home partition and its LUKS (using
cryptsetup/dm-crypt) was originally configured through whichever tool
Fedora provided years ago (preupgrade? fedup? anaconda?), while the
configuration on my SSD was what was recommended in F22.
Basically, I had to (with steps that actually increase space emboldened):
- define a new partition in the partition table,
- define a new Physical Volume (PV) over top it,
- extend my Volume Group (VG) to include the new Physical Volume
- unmount the file system I was going to extend,
- close its LUKS setup
- extend the file system's Logical Volume (LV) overtop the new space in the Volume Group
- reopen the LUKS setup
- resize the LUKS setup (are these two out of order? hope not!), and
- resize the Ext4 partition
A bit more detail, here are the steps I used on my system (from
my bash_history, probably missing some steps; I think I also used
lvremove
or pvremove to remove LVs and PVs related to the old home partition, oh
well!):
- # cfdisk, to delete the old root on the /dev/sda4 partition and recreate it
- # pvcreate /dev/sda4 (creates a physical volume)
- # vgextend pantaloons-fedora-hdd /dev/sda4 (add the PV into the VG increasing its overall size)
- make sure /home isn't mounted
- # fsck.ext4 -C 0 -f /dev/mapper/luks-BAR (let's make sure the inodes are fine on our file system before messing with it)
- # cryptsetup luksClose luks-BAR (close LUKS while we change the underlying LV)
- # lvextend -L +61G /dev/pantaloons-fedora-hdd/home (increase the size of our LV within the VG)
- # lvextend -L +242M /dev/pantaloons-fedora-hdd/home (catch a little more space)
- there is probably a way to just extend it to the full space available, maybe read the man page
- # cryptsetup luksOpen /dev/pantaloons-fedora-home luks-BAR
- # cryptsetup resize luks-BAR (resizing the LUKS setup)
- # fsck.ext4 -C 0 -f /dev/mapper/luks-BAR (for paranoia maybe)
- # resize2fs /dev/mapper/luks-BAR (finally, let's resize our Ext4 file system)
Sadly, I can't cite the sources I pieced some parts together from, because I did this form a live USB key which is supposed to keep history as persistent storage but the browser history was empty when I tried checking it later :S However, man pages were also useful.
Keine Kommentare:
Kommentar veröffentlichen