Hírolvasó
Security updates for Friday
Pete Zaitcev: MinIO liberates your storage from rebalancing
MinIO posted a blog entry a few days ago where the bragged about adding capacity without a need to re-balance.
First, they went into a full marketoid mode, whipping up the fear:
Rebalancing a massive distributed storage system can be a nightmare. There’s nothing worse than adding a storage node and watching helplessly as user response time increases while the system taxes its own resources rebalancing to include the new node.
Seems like MinIO folks assume that operators of distributed storage such as Swift and Ceph have no tools to regulate the resource consumption of rebalancing. So they have no choice but to "wait helplessly". Very funny.
But it gets worse when obviously senseless statements are made:
Rebalancing doesn’t just affect performance - moving many objects between many nodes across a network can be risky. Devices and components fail and that often leads to data loss or corruption.
Often, man! Also, a commit protocol? Never heard of her!
Then, we talk about some unrelated matters:
A group of drives is an erasure set and MinIO uses a Reed-Solomon algorithm to split objects into data and parity blocks based on the size of the erasure set and then uniformly distributes them across all of the drives in the erasure such that each drive in the set contains no more than one block per object.
Understood, your erasure set is what we call "partition" in Swift or a placement group in Ceph.
Finally, we get to the matter at hand:
To enable rapid growth, MinIO scales by adding server pools and erasure sets. If we had built MinIO to allow you to add a drive or even a single hardware node to an existing server pool, then you would have to suffer through rebalancing.
MinIO scales up quickly by adding server pools, each an independent set of compute, network and storage resources.
Add hardware, run MinIO server to create and name server processes, then update MinIO with the name of the new server pool. MinIO leaves existing data in their original server pools while exposing the new server pools to incoming data.
My hot take on the social media was: "Placing new sets on new storage impacts utilization and risks hotspotting because of time affinity. There's no free lunch." Even on the second thought, I think that is about right. But let us not ignore the cost of the data movement associated with rebalancing. What if the operator wants to implement in Swift what MinIO blog post talks about?
It is possible to emulate MinIO, to an extent. Some operators add a new storage policy when they expand the cluster, configure all the new nodes and/or volumes in its ring, then make it default, so newly-created objects end on the new hardware. This works to accomplish the same goals that MinIO outline above, but it's a kludge. Swift was not intended for this originally and it shows. In particular, storage policies were intended for low numbers of storage classes, such as rotating media and SSD, or Silver/Gold/Platinum. Once you make a new policy for each new forklift visit, you run a risk of finding scalability issues. Well, most clusters only upgrade a few times over their lifetime, but potentially it's a problem. Also, policies are customer visible, they are intended to be.
In the end, I still think that balanced cluster is the way to go. Just think rationally about it.
Interestingly, the reverse emulation appears to be not possible for MinIO: if you wanted to rebalance your storage, you would not be able to. Or at least the blog post above says: "If we had built MinIO to allow you to add a drive or ... a node to an existing server pool". I take it to mean that they don't allow, and the blog post is very much a case of sour grapes, then.
[$] The core of the -stable debate
Linux Plumbers Conference: Open Printing Microconference Accepted into 2021 Linux Plumbers Conference
We are pleased to announce that the Open Printing Microconference has been accepted into the 2021 Linux Plumbers Conference. Over the years OpenPrinting has been actively working on improving and modernizing the way we print in Linux. We have been working on multiple areas of printing and scanning. Especially driverless print and scan technologies have helped the world do away with a lot of hassles involved in deciding on the correct driver to use and to install the same. Users can now just plug in their printer and do what they need.
Based on the discussions that we had last year, we have been able to achieve the following:
– Significant progress in deciding on the structure of PAPPL – framework/library for developing Printer Applications as a replacement of Printer Drivers.
– Progress on LPrint. Label Printer Application, implementing printing for a variety of common label and receipt printers connected via network or USB.
– Have helped us in giving shape to the Printer Application concept. Sample printer applications for HP PCL printers have been created that use PAPPL to support IPP printing from multiple operating systems. This prototype will help others looking forward to adopting this new concept of Printer Applications. First production Printer Application started from this prototype is the PostScript Printer Application.
Development is in continuous progress, see the state of the art in OpenPrinting’s monthly news posts[6].
This year’s topics to be discussed include:
- Changes in CUPS 2.4.x
- Print sharing changes for mobile
- OAauth support to replace Kerberos
- Printer drivers replaced with Printer Applications
- TLS/X.509 changes
- CUPS in containers
- CUPS 3.0
- Future CUPS development
- Identify support platforms
- Key printing system components
- Discuss integration with Printer Applications and application stores like Snap Store
- Print Management GUI
- Migrating from working with CUPS queues to IPP services
- Handling legacy devices that do not handle IPP services
- Common Print Dialog Backends
- CPDB, CUPS backend.
- Separating GUI toolkits and the print technology support to be independent from each other.
- Printer/Scanner Driver Design and Development
- Design, creation and Snap-packaging of Printer/Scanner Applications.
Come join us and participate in the discussion to bring Linux printing, scanning and fax a better experience.
We hope to see you there.
Security updates for Thursday
Introducing dhcpleased(8)
Now enabled by default on OpenBSD -current is dhcpleased(8), a dynamic host configuration protocol daemon written by florian@ (Florian Obser), who spoke with us about his work:
I suppose this is either the KAME project's fault, or if we don't want to go that far back, Theo's fault. At g2k16 he floated the idea of a network configuration daemon. It would collect "proposals" for IP addresses, default routes and DNS configuration from various sources (DHCP, IPv6 router advertisements, umb(4), etc.), make some policy decisions, configure the network, and set resolv.conf(5)
LWN.net Weekly Edition for July 22, 2021
[$] The Sequoia seq_file vulnerability
Security updates for Wednesday
Rosenzweig: Reverse-engineering the Mali G78
Valhall linearizes Bifrost, removing the Very Long Instruction Word mechanisms of its predecessors. Valhall replaces the compiler’s static scheduling with hardware dynamic scheduling, trading additional control hardware for higher average performance. That means padding with “no operation” instructions is no longer required, which may decrease code size, promising better instruction cache use.
A document describing the instruction set has been released, along with an assembler and disassembler.
Dave Airlie (blogspot): llvmpipe/lavapipe: anisotropic texture filtering
In order to expose OpenGL 4.6 the last missing feature in llvmpipe is anisotropic texture filtering. Adding support for this also allows lavapipe expose the Vulkan samplerAnisotropy feature.
I started writing anisotropic support > 6 months ago. At the time we were trying to deprecate the classic swrast driver, and someone pointed out it had support for anisotropic filtering. This support had also been ported to the softpipe driver, but never to llvmpipe.
I had also considered porting swiftshaders anisotropic support, but since I was told the softpipe code was functional and had users I based my llvmpipe port on that.
Porting the code to llvmpipe means rewriting it to generate LLVM IR using the llvmpipe vector processing code. This is a lot messier than just writing linear processing code, and when I thought I had it working it passes GL CTS, but failed the VK CTS. The results also to my eye looked worse than I'd have thought was acceptable, and softpipe seemed to be as bad.
Once I swung back around to this I decided to port the VK CTS test to GL and run it on softpipe and llvmpipe code. Initially llvmpipe had some more bugs to solve esp where the mipmap levels were being chosen, but once I'd finished aligning softpipe and llvmpipe I started digging into why the softpipe code wasn't as nice as I expected.
The softpipe code was based on an implementation of an Elliptical Weighted Average Filter (EWA). The paper "Creating Raster Omnimax Images from Multiple Perspective Views Using the Elliptical Weighted Average Filter" described this. I sat down with the paper and softpipe code and eventually found the one line where they diverged.[1] This turned out to be a bug introduced in a refactoring 5 years ago, and nobody had noticed or tracked it down.
I then ported the same fix to my llvmpipe code, and VK CTS passes. I also optimized the llvmpipe code a bit to avoid doing pointless sampling and cleaned things up. This code landed in [2] today.
For GL4.6 there are still some fixes in other areas.
[1] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11917
[2] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804
07/20 Kaisen 1.7
[$] Tor gets financial support for Arti development
Stockfish sues ChessBase
In the past four months, we, supported by a certified copyright and media law attorney in Germany, went through a long process to enforce our license. Even though we had our first successes, leading to a recall of the Fat Fritz 2 DVD and the termination of the sales of Houdini 6, we were unable to finalize our dispute out of court. Due to Chessbase’s repeated license violations, leading developers of Stockfish have terminated their GPL license with ChessBase permanently. However, ChessBase is ignoring the fact that they no longer have the right to distribute Stockfish, modified or unmodified, as part of their products.
Another pile of stable kernel updates
Security updates for Tuesday
A local root kernel vulnerability
We discovered a size_t-to-int conversion vulnerability in the Linux kernel's filesystem layer: by creating, mounting, and deleting a deep directory structure whose total path length exceeds 1GB, an unprivileged local attacker can write the 10-byte string "//deleted" to an offset of exactly -2GB-10B below the beginning of a vmalloc()ated kernel buffer.
It may not sound like much, but they claim to have written exploits for a number of Ubuntu, Debian, and Fedora distributions. Updates from distributors are already flowing, and this patch has been fast-tracked into today's stable kernel updates as well.