On Sat, Sep 21, 2013 at 4:49 PM, Canek Peláez Valdés <can...@gmail.com>
wrote:
[...]
> The problem, that I believe Stefan and Frank hinted, is that the
> encrypted swap did not activated properly, sometimes resulting in huge
> boot times (in the order of 1 minute). But only if you specify the
> swap partition in fstab.
>
> The problem is, I think, that systemd tries to activate as soon as
> possible the swap partitions, even before
> systemd-cryptsetup activates the devices in /dev/mapper.
>
> The solution is to move the swap partition from fstab, and create a
> system unit for it which has to wait until systemd-cryptsetup does its
> job:

I was a little too quick to reach that conclusion: the problem is a little
more complex, but it has a clean solution.

Following the reports in [1] and [2], I discovered that I had missed two
kernel options required by LVM2:

CONFIG_UEVENT_HELPER_PATH=""
CONFIG_DM_UEVENT=y

Also, the system where I am doing my experiments is a virtual machine with
almost nothing installed; therefore, I forgot to set USE=udev, and
cryptsetup needs it.

With those things out of the way, everything works as expected; there is no
need for an explicit unit for the swap partition, and I can set it in fstab:

/dev/mapper/swap   none   swap   sw   0 0

I would like to use a label for the swap partition, but when the swap is
encrypted systemd does mkswap in the partition without any parameter [3]. I
could wrote a patch, I guess; but I don't think is worth it.

Anyhow, I can get a Gentoo install with mdraid+LVM2+LUKS+systemd working as
intended, and without hacks nor workarounds.

NAME                 MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sr0                   11:0    1 1024M  0 rom
vda                  253:0    0    5G  0 disk
└─vda1               253:1    0    5G  0 part
  └─md127              9:127  0   15G  0 raid5
    ├─vg-vol1 (dm-0) 254:0    0  200M  0 lvm   /boot
    ├─vg-vol3 (dm-1) 254:1    0    2G  0 lvm   /
    ├─vg-vol4 (dm-2) 254:2    0    8G  0 lvm   /usr
    ├─vg-vol2 (dm-3) 254:3    0    2G  0 lvm
    │ └─swap (dm-5)  254:5    0    2G  0 crypt [SWAP]
    └─vg-vol5 (dm-4) 254:4    0  2.8G  0 lvm
      └─home (dm-6)  254:6    0  2.8G  0 crypt /home
vdb                  253:16   0    5G  0 disk
└─vdb1               253:17   0    5G  0 part
  └─md127              9:127  0   15G  0 raid5
    ├─vg-vol1 (dm-0) 254:0    0  200M  0 lvm   /boot
    ├─vg-vol3 (dm-1) 254:1    0    2G  0 lvm   /
    ├─vg-vol4 (dm-2) 254:2    0    8G  0 lvm   /usr
    ├─vg-vol2 (dm-3) 254:3    0    2G  0 lvm
    │ └─swap (dm-5)  254:5    0    2G  0 crypt [SWAP]
    └─vg-vol5 (dm-4) 254:4    0  2.8G  0 lvm
      └─home (dm-6)  254:6    0  2.8G  0 crypt /home
vdc                  253:32   0    5G  0 disk
└─vdc1               253:33   0    5G  0 part
  └─md127              9:127  0   15G  0 raid5
    ├─vg-vol1 (dm-0) 254:0    0  200M  0 lvm   /boot
    ├─vg-vol3 (dm-1) 254:1    0    2G  0 lvm   /
    ├─vg-vol4 (dm-2) 254:2    0    8G  0 lvm   /usr
    ├─vg-vol2 (dm-3) 254:3    0    2G  0 lvm
    │ └─swap (dm-5)  254:5    0    2G  0 crypt [SWAP]
    └─vg-vol5 (dm-4) 254:4    0  2.8G  0 lvm
      └─home (dm-6)  254:6    0  2.8G  0 crypt /home
vdd                  253:48   0    5G  0 disk
└─vdd1               253:49   0    5G  0 part
  └─md127              9:127  0   15G  0 raid5
    ├─vg-vol1 (dm-0) 254:0    0  200M  0 lvm   /boot
    ├─vg-vol3 (dm-1) 254:1    0    2G  0 lvm   /
    ├─vg-vol4 (dm-2) 254:2    0    8G  0 lvm   /usr
    ├─vg-vol2 (dm-3) 254:3    0    2G  0 lvm
    │ └─swap (dm-5)  254:5    0    2G  0 crypt [SWAP]
    └─vg-vol5 (dm-4) 254:4    0  2.8G  0 lvm
      └─home (dm-6)  254:6    0  2.8G  0 crypt /home

lvm ~ # systemd-analyze blame
          2.948s systemd-cryptsetup@home.service
           765ms systemd-udev-settle.service
           199ms systemd-cryptsetup@swap.service
           170ms systemd-fsck-root.service
           154ms systemd-udev-trigger.service
           145ms systemd-logind.service
           136ms dhcpcd@enp0s3.service
           129ms sshd.service
           108ms systemd-modules-load.service
           100ms systemd-fsck@dev-disk-by\x2dlabel-Home.service
            99ms lvm2-activation-early.service
            99ms lvm2-activation.service
            75ms dev-mqueue.mount
            74ms mdadm.service
            72ms systemd-sysctl.service
            67ms systemd-fsck@dev-disk-by\x2dlabel-Boot.service
            61ms systemd-ask-password-wall.service
            60ms dev-hugepages.mount
            58ms systemd-vconsole-setup.service
            57ms systemd-tmpfiles-clean.service
            51ms systemd-tmpfiles-setup-dev.service
            47ms systemd-random-seed-load.service
            47ms sys-kernel-debug.mount
            45ms systemd-remount-fs.service
            44ms systemd-user-sessions.service
            43ms systemd-tmpfiles-setup.service
            37ms boot.mount
            33ms systemd-udevd.service
            27ms systemd-journal-flush.service
            22ms tmp.mount
            15ms dev-mapper-swap.swap
            15ms home.mount

The almost 3 seconds pause is me entering the passphrase for the /home
partition; the system takes less than a second to boot.

Let me reiterate: the problem was that I didn't pay attention when I
emerged LVM2 and cryptsetup; otherwise everything should have worked
immediately.

Regards.

[1] https://bugzilla.redhat.com/show_bug.cgi?id=979695
[2] https://bugzilla.redhat.com/show_bug.cgi?id=759402
[3]
http://cgit.freedesktop.org/systemd/systemd/tree/src/cryptsetup/cryptsetup-generator.c#n166
-- 
Canek Peláez Valdés
Posgrado en Ciencia e Ingeniería de la Computación
Universidad Nacional Autónoma de México

Reply via email to