This video has been made from the slides and an audio recording of a NYCBUG talk by Eitan Adler in Jan of 2013 and gives an over view on the newest features in FreeBSD since 9.0. This talk covered some recent enhancements to FreeBSD as well some of the experimental upcoming changes. By the end of the talk you should have heard about one FreeBSD technology you hadn’t heard of before.
clang + llvm
New Hardware Support
Filesystems: growfs, ZFS TRIM, FUSE, SU+J
CVS moving to svn
For more information on the future of FreeBSD source retrieval please see:
This screencast demonstrates the use of a pfSense device for traffic shaping on a typical home network, with the goals of minimizing latency and maximizing throughput. In particular, we use a three-tier queue configuration where a parent speedboost queue on each interface contains leaf queues that catch all the traffic. The speedboost queues use HFSC’s non-linear service curve to match the behavior of the comcast speedboost. The leaf queues are configured to partition the available bandwidth, and automatically allow ‘borrowing’ when there is no contention.
“DTrace, also known as Dynamic Tracing, was developed by Sun™ as a tool for locating performance bottlenecks in production and pre-production systems. It is not, in any way, a debugging tool, but a tool for real time system analysis to locate performance and other issues.
DTrace is a remarkable profiling tool, with an impressive array of features for diagnosing system issues. It may also be used to run pre-written scripts to take advantage of its capabilities. Users may even author their own utilities using the DTrace D Language, allowing them to customize their profiling based on specific needs.” (source)
This video shows how to install a full ZFS system using bsdinstall, on FreeBSD 9.0-RELEASE. This is not like other tutorials where you just use the FreeBSD ISO as a live cd and then do everything manually, with this method you only have to set up the zfs zpool manually. The rest, user settings, network, time zone, etc is done by bsdinstall for your convenience.
The Z file system, developed by Sun™, is a new technology designed to use a pooled storage method. This means that space is only used as it is needed for data storage. It has also been designed for maximum data integrity, supporting data snapshots, multiple copies, and data checksums. A new data replication model, known as RAID-Z has been added. The RAID-Z model is similar to RAID5 but is designed to prevent data write corruption.
The following video, created by the FreeNAS team, shows you how to configure FreeNAS for FTP.
FreeNAS 8.0.4-BETA2 is out for testing. Changes since 8.0.4-BETA1:
Update transmission to 2.42 (SF r10093).
Add MegaCLI tool (SF r10072, r10073).
Disable periodic tasks in the base system that would negatively impact system performance on NAS boxes with large directory structures (SF r10113).
Fix handling for ‘every day’ SMART tasks created in the GUI (SF r10088).
Add in several robustness fixes to reduce potential for filesystem corruption on root / root device. In some scenarios this would also improve performance when fetching data from the root device as well (SF r10095, r10109, r10129).
Fix vfs objects modules ordering so shadow copy (aka previous versions) support functions again (FN 935, FN 1186, FN 1275).
Update samba to 3.6.3 to resolve several bugs (both security and non-security related) (SF r10127).
Network field from iSCSI initiator could contain multiple IP addresses, CIDR addresses, or ANY keyword (SF r10082).
Generate istgt.conf properly if and when multiple initiators were specified (SF r10081).
Alan, Chris and Bryan talk about FreeBSD 9.0 on the Linux Action Show.
In my opinion, the hosts could be more focused, serious and professional, instead of joking around continually. Anyway, this is the link: FreeBSD 9.0 Review.
If you’re interested in the FreeBSD part, jump to 37:55.
Topics of the conversation:
UFS Softupdate Journaling
The FreeBSD Fast File System now supports softupdates journaling. It introduces a intent log into a softupdates-enabled file system which eliminates the need for background fsck(8) even on unclean shutdown
This new feature means that a fsck after an unexpected reboot is no longer required. In modern FreeBSD only a basic preen was required, and then a full fsck would take place on a snapshot of the file system, in the background after the system had finished rebooting. With the new softupdate journaling (basically an intent log), a full fsck is no longer required at all
Journaling support is enabled by default on all newly created file systems, and can be enabled on existing UFS2 partitions using tunefs(8)
Full TRIM support for SSDs
The FreeBSD Fast File System now supports the TRIM command when freeing data blocks. The TRIM-enable flag makes the file system send a delete request to the underlying device for each freed block
TRIM support can also be enabled during newfs(8) or on an existing file system with tunefs(8)
ZFS Upgraded to v28
ZFS v28 introduces support for data deduplication, triple parity RAIDZ (raidz3), snapshot holds, log device removal, zfs diff, zpool split, zpool import -F, and read-only zpool import
The zpool(8): utility now supports a zpool labelclear command. This allows to wipe the label data from a drive that is not active in a pool
The Highly Available Storage daemon now supports data checksumming (crc32 or sha256) and compression (zero hole or lzf) and improved security
Introduction of the GEOM RAID class graid(8)
It also supports the on disk formats for:
Intel RAID BIOS
JMicron RAID BIOS
NVIDIA MediaShield RAID BIOS
Promise and AMD/ATI RAID BIOS
SiliconImage RAID BIOS
Additionally, geom_map(4) allows specific areas of a device to be mapped as separate devices, especially useful for embedded flash storage
GEOM also support the following classes: CACHE, ELI, JOURNAL, LABEL, MIRROR, MOUNTVER, MULTIPATH, NOP, PART, RAID3, SCHED, SHSEC, STRIPE and VIRSTOR
NFSv4 with ACLs
In addition to NFSv2 and v3,
New utmpx(3) user accounting system
5 new TCP congestion control schems
The FreeBSD TCP/IP network stack now supports the mod_cc(9) pluggable congestion control framework. This allows TCP congestion control algorithms to be implemented as dynamically loadable kernel modules
The following kernel modules are available as of 9.0-RELEASE: cc_chd(4) for the CAIA-Hamilton-Delay algorithm, cc_cubic(4) for the CUBIC algorithm, cc_hd(4) for the Hamilton-Delay algorithm, cc_htcp(4) for the H-TCP algorithm, cc_newreno(4) for the NewReno algorithm, and cc_vegas(4) for the Vegas algorithm.
An h_ertt(4) (Enhanced Round Trip Time) module has been added, which allows per-connection, low noise estimates of the instantaneous RTT in the TCP/IP network stack.
New CAM based disk subsystem
The ATA/SATA disk subsystem has been replaced with a new cam(4)-based implementation. cam(4) stands for Common Access Method, which is an implementation of an API set originally for SCSI–2 and standardized as “SCSI–2 Common Access Method Transport and SCSI Interface Module”
The ada(4) driver now supports per-device write cache control. New sysctl(8) variables kern.cam.ada.write_cache and kern.cam.ada.N.write_cache settings of 1 enables and 0 disables the write cache, and –1 leaves the device default behavior. sysctl(8) variables can override the configuration in a per-device basis (the default value is –1, which means to use the global setting)
New Resource Accounting and Limiting APIs
RACCT is a new resource accounting API has been implemented. It can keep per-process, per-jail, and per-loginclass resource accounting information
The new resource-limiting API RCTL works in conjunction with the RACCT resource accounting implementation and takes user-configurable actions based on the set of rules it maintains and the current resource usage
Full USB3 support
OpenSSH upgraded to 5.8p2 with HPN for faster transfer speeds
OpenResolv to manage resolv.conf for multiple interfaces
Support for SHA–256 and SHA–512 cryptographic password hashing
new arithmetic expression handling imported from dash (which is originally from NetBSD ash)
changes to the way builtin commands relate to PATH env
fixed various other bugs
Capsicum Capability Mode
New Sandboxing and compartmentalization framework from Cambridge University
Improved privilege separation in OpenSSH and DHClient
Replacement of various GPL tools and utilities with BSD licensed ones to avoid GPLv3
llvm/clang imported, will eventually replace gcc 4.2 (last GPL v2)
FreeBSD developer and FreeBSD Foundation member Brooks Davis was present and talked about about the path of getting LLVM/Clang integrated into FreeBSD base as the default compiler to replace the GPLv3-licensed GCC compiler.
“The FreeBSD Project has been actively working to incorporate tools from the LLVM project into our base system including clang, libc++, and possibly lldb. This talk will cover our efforts so far including our plans to ship FreeBSD 9.0 with clang in the base system. I will cover both our current work to replace GPL licensed components with BSD(ish) licensed components and future or experimental work to incorporate new technologies made possible by LLVM”
About LLVM: The Low Level Virtual Machine (LLVM) is a compiler infrastructure written in C++ that is designed for compile-time, link-time, run-time, and “idle-time” optimization of programs written in arbitrary programming languages. Originally implemented for C/C++, the language-agnostic design (and the success) of LLVM has since spawned a wide variety of front ends, including Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, and others. (source: wikipedia)