* BTRFS, SSD and single metadata
@ 2014-06-16 7:54 Swâmi Petaramesh
2014-06-16 11:09 ` Austin S Hemmelgarn
2014-06-16 12:16 ` Duncan
0 siblings, 2 replies; 7+ messages in thread
From: Swâmi Petaramesh @ 2014-06-16 7:54 UTC (permalink / raw)
To: Linux BTRFS
Hi,
I created a BTRFS filesytem over LVM over LUKS encryption on an SSD [yes, I
know...], and I noticed that the FS got created with metadata in "DUP" mode,
contrary to what "man mkfs.btrfs" says for SSDs -> it would be supposed to be
"SINGLE"...
Well I don't know if my system didn't identify the SSD because of the LVM+LUKS
stack (however it mounts well by itself with the "ssd" flag and accepts the
"discard" option [yes, I know...]), or if the manpage is obsolete or if this
feature just doesn't work...?
The SSD being a Micron RealSSD C400
For both SSD preservation and data integrity, would it be advisable to change
metadata to "SINGLE" using a rebalance, or if I'd better just leave things the
way they are...?
TIA for any insight.
--
Swâmi Petaramesh <swami@petaramesh.org> http://petaramesh.org PGP 9076E32E
Tout le malheur des hommes vient de ce qu'ils ne vivent pas dans _le_ monde,
mais dans _leur_ monde.
-- Héraclite.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: BTRFS, SSD and single metadata
2014-06-16 7:54 BTRFS, SSD and single metadata Swâmi Petaramesh
@ 2014-06-16 11:09 ` Austin S Hemmelgarn
2014-06-16 11:18 ` Swâmi Petaramesh
2014-06-16 12:16 ` Duncan
1 sibling, 1 reply; 7+ messages in thread
From: Austin S Hemmelgarn @ 2014-06-16 11:09 UTC (permalink / raw)
To: Swâmi Petaramesh, Linux BTRFS
[-- Attachment #1: Type: text/plain, Size: 1204 bytes --]
On 2014-06-16 03:54, Swâmi Petaramesh wrote:
> Hi,
>
> I created a BTRFS filesytem over LVM over LUKS encryption on an SSD [yes, I
> know...], and I noticed that the FS got created with metadata in "DUP" mode,
> contrary to what "man mkfs.btrfs" says for SSDs -> it would be supposed to be
> "SINGLE"...
>
> Well I don't know if my system didn't identify the SSD because of the LVM+LUKS
> stack (however it mounts well by itself with the "ssd" flag and accepts the
> "discard" option [yes, I know...]), or if the manpage is obsolete or if this
> feature just doesn't work...?
>
> The SSD being a Micron RealSSD C400
>
> For both SSD preservation and data integrity, would it be advisable to change
> metadata to "SINGLE" using a rebalance, or if I'd better just leave things the
> way they are...?
>
> TIA for any insight.
>
What mkfs.btrfs looks at is
/sys/block/<whatever-device>/queue/rotational, if that is 1 it knows
that the device isn't a SSD. I believe that LVM passes through whatever
the next lower layer's value is, but dmcrypt (and by extension LUKS)
always force it to a 1 (possibly to prevent programs from using
heuristics for enabling discard)
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 2967 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: BTRFS, SSD and single metadata
2014-06-16 11:09 ` Austin S Hemmelgarn
@ 2014-06-16 11:18 ` Swâmi Petaramesh
2014-06-16 11:23 ` Austin S Hemmelgarn
0 siblings, 1 reply; 7+ messages in thread
From: Swâmi Petaramesh @ 2014-06-16 11:18 UTC (permalink / raw)
To: Austin S Hemmelgarn; +Cc: Linux BTRFS
Hi Austin, and thanks for your reply.
Le lundi 16 juin 2014, 07:09:55 Austin S Hemmelgarn a écrit :
>
> What mkfs.btrfs looks at is
> /sys/block/<whatever-device>/queue/rotational, if that is 1 it knows
> that the device isn't a SSD. I believe that LVM passes through whatever
> the next lower layer's value is, but dmcrypt (and by extension LUKS)
> always force it to a 1 (possibly to prevent programs from using
> heuristics for enabling discard)
In the current "running condition", the system clearly sees this is *not*
rotational, even thru the LVM/dmcrypt stack :
# mount | grep btrfs
/dev/mapper/VG-LINUX on / type btrfs
(rw,noatime,seclabel,compress=lzo,ssd,discard,space_cache,autodefrag)
# ll /dev/mapper/VGV-LINUX
lrwxrwxrwx. 1 root root 7 16 juin 09:21 /dev/mapper/VG-LINUX -> ../dm-1
# cat /sys/block/dm-1/queue/rotational
0
...However, at mkfs.btrfs time, it migth well not have seen it, as I made it
from a live USB key in which both the lvm.conf and crypttab had not been
taylored to allow "trim" commands...
However, now that the FS is created, I still wonder whether I should use a
rebalance to change the metadata from DUP to SINGLE, or if Id' better stay
with DUP...
Kind regards.
--
Swâmi Petaramesh <swami@petaramesh.org> http://petaramesh.org PGP 9076E32E
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: BTRFS, SSD and single metadata
2014-06-16 11:18 ` Swâmi Petaramesh
@ 2014-06-16 11:23 ` Austin S Hemmelgarn
2014-06-16 12:01 ` Russell Coker
0 siblings, 1 reply; 7+ messages in thread
From: Austin S Hemmelgarn @ 2014-06-16 11:23 UTC (permalink / raw)
To: Swâmi Petaramesh; +Cc: Linux BTRFS
[-- Attachment #1: Type: text/plain, Size: 1726 bytes --]
On 2014-06-16 07:18, Swâmi Petaramesh wrote:
> Hi Austin, and thanks for your reply.
>
> Le lundi 16 juin 2014, 07:09:55 Austin S Hemmelgarn a écrit :
>>
>> What mkfs.btrfs looks at is
>> /sys/block/<whatever-device>/queue/rotational, if that is 1 it knows
>> that the device isn't a SSD. I believe that LVM passes through whatever
>> the next lower layer's value is, but dmcrypt (and by extension LUKS)
>> always force it to a 1 (possibly to prevent programs from using
>> heuristics for enabling discard)
>
> In the current "running condition", the system clearly sees this is *not*
> rotational, even thru the LVM/dmcrypt stack :
>
> # mount | grep btrfs
> /dev/mapper/VG-LINUX on / type btrfs
> (rw,noatime,seclabel,compress=lzo,ssd,discard,space_cache,autodefrag)
>
> # ll /dev/mapper/VGV-LINUX
> lrwxrwxrwx. 1 root root 7 16 juin 09:21 /dev/mapper/VG-LINUX -> ../dm-1
>
> # cat /sys/block/dm-1/queue/rotational
> 0
>
> ...However, at mkfs.btrfs time, it migth well not have seen it, as I made it
> from a live USB key in which both the lvm.conf and crypttab had not been
> taylored to allow "trim" commands...
>
> However, now that the FS is created, I still wonder whether I should use a
> rebalance to change the metadata from DUP to SINGLE, or if Id' better stay
> with DUP...
>
> Kind regards.
>
>
I'd personally stay with the DUP profile, but then that's just me being
paranoid. You will almost certainly get better performance using the
SINGLE profile instead of DUP, but this is mostly due to it requiring
fewer blocks to be encrypted by LUKS (Which is almost certainly your
primary bottleneck unless you have some high-end crypto-accelerator card).
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 2967 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: BTRFS, SSD and single metadata
2014-06-16 11:23 ` Austin S Hemmelgarn
@ 2014-06-16 12:01 ` Russell Coker
0 siblings, 0 replies; 7+ messages in thread
From: Russell Coker @ 2014-06-16 12:01 UTC (permalink / raw)
To: Austin S Hemmelgarn, Linux BTRFS
On Mon, 16 Jun 2014 07:23:14 Austin S Hemmelgarn wrote:
> I'd personally stay with the DUP profile, but then that's just me being
> paranoid. You will almost certainly get better performance using the
> SINGLE profile instead of DUP, but this is mostly due to it requiring
> fewer blocks to be encrypted by LUKS (Which is almost certainly your
> primary bottleneck unless you have some high-end crypto-accelerator card).
On my Q8400 workstation running BTRFS over LUKS on an Intel SSD the primary
bottleneck has always been BTRFS. The message I wrote earlier today about
BTRFS fallocate() performance was on this system, I had BTRFS using kernel CPU
time for periods of 10+ seconds without ANY disk IO - so LUKS wasn't a
performance issue.
So far I've never seen LUKS be a performance bottleneck. When running LUKS on
spinning media the disk seek performance will almost always be the bottleneck.
The worst case for LUKS is transferring large amounts of data such as
contiguous reads. In a contiguous read test I'm seeing 120MB/s for LUKS on a
SSD and 200MB/s for direct access to the same SSD. That is a reasonable
difference, but it's not something I've been able to hit with any real-world
use while BTRFS metadata performance is often an issue.
--
My Main Blog http://etbe.coker.com.au/
My Documents Blog http://doc.coker.com.au/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: BTRFS, SSD and single metadata
2014-06-16 7:54 BTRFS, SSD and single metadata Swâmi Petaramesh
2014-06-16 11:09 ` Austin S Hemmelgarn
@ 2014-06-16 12:16 ` Duncan
2014-06-16 12:26 ` Swâmi Petaramesh
1 sibling, 1 reply; 7+ messages in thread
From: Duncan @ 2014-06-16 12:16 UTC (permalink / raw)
To: linux-btrfs
Swâmi Petaramesh posted on Mon, 16 Jun 2014 09:54:01 +0200 as excerpted:
> I created a BTRFS filesytem over LVM over LUKS encryption on an SSD
> [yes, I know...], and I noticed that the FS got created with metadata in
> "DUP" mode, contrary to what "man mkfs.btrfs" says for SSDs -> it would
> be supposed to be "SINGLE"...
>
> Well I don't know if my system didn't identify the SSD because of the
> LVM+LUKS stack (however it mounts well by itself with the "ssd" flag and
> accepts the "discard" option [yes, I know...]), or if the manpage is
> obsolete or if this feature just doesn't work...?
Does btrfs automatically add the ssd mount option or do you have to add
it? If you have to add it, that means btrfs isn't detecting the ssd,
which would explain why mkfs.btrfs didn't detect it either... as you said
very likely due to the LVM over LUKS stack.
I believe the detection is actually based on what the kernel reports. I
may be mistaken and I'm not running stacked devices ATM in ordered to
check them, but check /sys/block/<device>/queue/rotational. On my ssds,
the value in that file is 0. On my spinning rust, it's 1. If that is
indeed what it's looking at, you can verify that your hardware device is
actually detected by the kernel as rotational 0, and then check the
various layers of your stack and see where the rotational 0 (or the
rotational file itself) gets dropped.
> The SSD being a Micron RealSSD C400
>
> For both SSD preservation and data integrity, would it be advisable to
> change metadata to "SINGLE" using a rebalance, or if I'd better just
> leave things the way they are...?
>
> TIA for any insight.
That's a very good question, on which there has been some debate on this
list.
The first question: Does your SSD firmware do compression and dedup, or
not? IIRC the sandforce (I believe that's the firmware name) firmware
does compression and dedup, but not all firmware does. I know a bullet-
point feature of my SSDs (several Corsair Neutron 256 GB, FWIW) is that
they do NOT do this sort of compression and dedup -- what the system
tells them to save is what they save, and if you tell it to save a
hundred copies of the same thing, that's what it does. (These SSDs are
targeted at commercial usage and this is billed as a performance
reliability feature.)
The reason originally given for defaulting to single mode metadata on
SSDs was that it was due to this possible dedup -- dup-mode metadata
might actually end up single-copy-only due to the firmware compression
and dedup in any case. Between that and their typically smaller size, I
guess the decision was that single was the best default.
However, it occurs to me that with the LUKS encryption layer, I'm not
entirely sure if duplication at the btrfs level would end up as the same
encrypted stream headed to the hardware in any case. If it would encrypt
the two copies of the dup-mode metadata as different, then the hardware
dedup/compression wouldn't work on it anyway. OTOH, if it encrypts them
as the same stream headed to hardware, then again, it would matter.
Meanwhile... which is better and should you rebalance to single? In
terms of data integrity, dup mode is definitely better, since if there's
damage to one copy such that it doesn't pass checksum verification, you
still have the other copy to read from... and to rebuild the damaged copy
from.
OTOH, single does take less space, and performance should be slightly
better. If you're keeping good backups anyway, or if the ssd's firmware
might be mucking with things leaving you with only a single copy in any
case, single mode could be a better choice.
FWIW, while most of my partitions are btrfs raid1 here, so the second
copy is on a different physical device, /boot is an exception. I have a
separate /boot on each device, pointed at by the grub loaded on each
device so I can use the BIOS boot selector to choose which one I boot.
That lets me keep a working /boot that I boot most of the time on one
device, and a backup /boot on the other device, in case something goes
wrong with the first.
So those dedicated /boot partitions are an exception to my normal btrfs
raid1. They're both (working and primary backup) 256 MiB mixed-data/
metadata mode as they're so small, which means data and metadata must
both be the same mode, and they're both set to dup mode.
Which means they effectively only hold (a bit under) 128 MiB worth of
data, since it's dup mode for both data and metadata, but 128 MiB is fine
for /boot, as long as I don't let too many kernels build up.
So I'd obviously recommend dup mode, unless you know your ssd's firmware
is going to dedup it anyway. But that's just me. As I said, there has
been some discussion about it on the list, and some people make other
choices. You can of course dig in the list archives if you want to see
previous threads on the subject, but ultimately, it's upto you. =:^)
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: BTRFS, SSD and single metadata
2014-06-16 12:16 ` Duncan
@ 2014-06-16 12:26 ` Swâmi Petaramesh
0 siblings, 0 replies; 7+ messages in thread
From: Swâmi Petaramesh @ 2014-06-16 12:26 UTC (permalink / raw)
To: Duncan; +Cc: linux-btrfs
Le lundi 16 juin 2014, 12:16:33 Duncan a écrit :
> Does btrfs automatically add the ssd mount option or do you have to add
> it? If you have to add it, that means btrfs isn't detecting the ssd,
First time I mounted the freshly created filesystem, it actually added the
"ssd" option by itself. Thus indeed, it could see this was a SSD...
> However, it occurs to me that with the LUKS encryption layer, I'm not
> entirely sure if duplication at the btrfs level would end up as the same
> encrypted stream headed to the hardware in any case. If it would encrypt
> the two copies of the dup-mode metadata as different, then the hardware
> dedup/compression wouldn't work on it anyway. OTOH, if it encrypts them
> as the same stream headed to hardware, then again, it would matter.
That makes an excellent point. 2 copies of the same binary data in different
filesystem sectors, process thru LUKS, will create entirely different binary
ciphertext, so for sure both metadata copies will always be different and
cannot be "deduped" by SSD firmware...
Kind regards.
--
Swâmi Petaramesh <swami@petaramesh.org> http://petaramesh.org PGP 9076E32E
Les êtres humains, cernés par leurs besoins, s'agitent sans but comme des
lapins pris au piège. Ainsi, moine, détourne-toi de ces besoins et trouve
la liberté.
-- Buddha Shakyamuni
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-06-16 12:27 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-16 7:54 BTRFS, SSD and single metadata Swâmi Petaramesh
2014-06-16 11:09 ` Austin S Hemmelgarn
2014-06-16 11:18 ` Swâmi Petaramesh
2014-06-16 11:23 ` Austin S Hemmelgarn
2014-06-16 12:01 ` Russell Coker
2014-06-16 12:16 ` Duncan
2014-06-16 12:26 ` Swâmi Petaramesh
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox