Coder Social home page Coder Social logo

zfs-overlay's Introduction

This is where Gentoo ZFS development is done. All useful changes made here are
integrated with Gentoo's main tree after they have been properly validated.
Only end users who have received explicit directions from ryao should use it.
Those that have should switch back to the main tree as soon as they have been
told that their issue has been fixed.

To add this overlay to a Gentoo system, run the following command:

layman -o https://raw.github.com/ryao/zfs-overlay/master/overlay.xml -f -a zfs

Note that you must have both dev-vcs/git and app-portage/layman installed on
your system for this to work.

Please file bug reports for ebuilds in the portage tree in the Gentoo bug
tracker and bug reports for ebuilds in this overlay on github.

zfs-overlay's People

Contributors

ivan avatar ryao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zfs-overlay's Issues

SPL HOSTID

[ 2.369380] Switched to clocksource tsc
[ 2.675954] SPL: using hostid 0x00000000
[ 8.177681] NET: Registered protocol family 10
[ 8.178396] systemd[1]: Inserted module 'ipv6'

Hi, ryao
What's the meaning of hostid? should I and how to set id under Gentoo?
Thanks.

Can't build sys-fs/zfs

I'm trying to emerge sys-fs/zfs according to your instruction from https://github.com/ryao/zfs-overlay/blob/master/zfs-install but stuck on the following problem:

libtool: install: warning: ../../lib/libuutil/libuutil.la' has not been installed in/usr/lib64'
libtool: install: warning: ../../lib/libzfs/libzfs.la' has not been installed in/usr/lib64'
libtool: install: warning: /var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/lib/libnvpair/libnvpair.la' has not been installed in/usr/lib64'
libtool: install: warning: /var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/lib/libzpool/libzpool.la' has not been installed in/usr/lib64'
libtool: install: warning: /var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/lib/libuutil/libuutil.la' has not been installed in/usr/lib64'
make[3]: Leaving directory /var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd/mount_zfs' make[2]: Leaving directory/var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd/mount_zfs'
Making install in zpool_layout
make[2]: Entering directory /var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd/zpool_layout' make[3]: Entering directory/var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd/zpool_layout'
test -z "/bin" || /bin/mkdir -p "/var/tmp/portage/sys-fs/zfs-9999/image//bin"
make[3]: Nothing to be done for install-data-am'. /usr/bin/install -c zpool_layout '/var/tmp/portage/sys-fs/zfs-9999/image//bin' make[3]: Leaving directory/var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd/zpool_layout'
make[2]: Leaving directory /var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd/zpool_layout' Making install in zvol_id make[2]: Entering directory/var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd/zvol_id'
make[3]: Entering directory /var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd/zvol_id' make[3]: Nothing to be done forinstall-exec-am'.
test -z "pkg-config --variable=udevdir udev" || /bin/mkdir -p "/var/tmp/portage/sys-fs/zfs-9999/image/pkg-config --variable=udevdir udev"
/bin/sh ../../libtool --silent --mode=install /usr/bin/install -c zvol_id '/var/tmp/portage/sys-fs/zfs-9999/image/pkg-config --variable=udevdir udev'
/usr/bin/install: unrecognized option '--variable=udevdir'
Try '/usr/bin/install --help' for more information.
make[3]: *** [install-udevPROGRAMS] Error 1
make[3]: Leaving directory /var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd/zvol_id' make[2]: *** [install-am] Error 2 make[2]: Leaving directory/var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd/zvol_id'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999/cmd'
make: *** [install-recursive] Error 1

  • ERROR: sys-fs/zfs-9999 failed (install phase):
  • emake failed
  • If you need support, post the output of emerge --info '=sys-fs/zfs-9999',
  • the complete build log and the output of emerge -pqv '=sys-fs/zfs-9999'.
  • The complete build log is located at '/var/tmp/portage/sys-fs/zfs-9999/temp/build.log'.
  • The ebuild environment file is located at '/var/tmp/portage/sys-fs/zfs-9999/temp/environment'.
  • Working directory: '/var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999'
  • S: '/var/tmp/portage/sys-fs/zfs-9999/work/zfs-9999'

Same for 0.6.0_rc9-r6. Also I've tried to turn on/off static-libs use flag but without any effect.

Could you help me this this issue?

About SSD TRIM and HOSTID

Hi, ryao

I googled and found zfsonlinux still not support TRIM on SSD, right?

And I append hostid to the kernel command line, but boot still warning it is 0x0000000, how to fix this?

Need to mask newest kernel and edit a line.

I use the zfs-install guide pretty often as a reference, and noticed a few things may need updated. I would be glad to help. I just added a mask for the newest kernels, and changed a few lines for package.use since the syntax seems to have slightly changed

Thanks!

zfs-install doc update for grub commands on lines 109, 119

Located on lines 109 and 119, 'grub2-probe' and 'grub2-install' are now 'grub-probe' and 'grub-install'

Boot Linux Live CD with ZFS support

fearedbliss maintains a variant of System Rescue CD that is highly recommended:

https://wiki.gentoo.org/wiki/User:Fearedbliss

Instruction for a USB key version

http://www.sysresccd.org/Sysresccd-manual-en_How_to_install_SystemRescueCd_on_an_USB-stick

Create pool

zpool create -f -o ashift=12 -o cachefile=/tmp/zpool.cache -O normalization=formD -m none -R /mnt/gentoo -d -o feature@async_destroy=enabled -o feature@empty_bpobj=enabled -o feature@lz4_compress=enabled -o feature@spacemap_histogram=enabled -o feature@enabled_txg=enabled -o feature@extensible_dataset=enabled -o feature@bookmarks=enabled rpool /dev/sda

Workaround 0.6.4 regression

zfs umount "/mnt/gentoo/rpool"
rmdir "/mnt/gentoo/rpool"

Create rootfs

zfs create -o mountpoint=none rpool/ROOT
zfs create -o mountpoint=/ rpool/ROOT/gentoo

Create home directories

zfs create -o mountpoint=/home rpool/HOME
zfs create -o mountpoint=/root rpool/HOME/root

Create portage directories

zfs create -o mountpoint=none -o setuid=off rpool/GENTOO
zfs create -o mountpoint=/usr/portage -o atime=off rpool/GENTOO/portage
zfs create -o mountpoint=/usr/portage/distfiles rpool/GENTOO/distfiles

Create portage build directory

zfs create -o mountpoint=/var/tmp/portage -o compression=lz4 -o sync=disabled rpool/GENTOO/build-dir

Create optional packages directory

zfs create -o mountpoint=/usr/portage/packages rpool/GENTOO/packages

Create optional ccache directory

zfs create -o mountpoint=/var/tmp/ccache -o compression=lz4 rpool/GENTOO/ccache

Set bootfs

zpool set bootfs=rpool/ROOT/gentoo rpool

Download stage3

wget 'ftp://gentoo.osuosl.org/pub/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-[0-9]*.tar.bz2'

Extract stage3

tar -xvjpf stage3-amd64-*.tar.bz2 -C /mnt/gentoo

Copy zpool.cache into chroot

mkdir -p /mnt/gentoo/etc/zfs
cp /tmp/zpool.cache /mnt/gentoo/etc/zfs/zpool.cache

Copy resolv.conf into chroot

cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Mount filesystems

mount -t proc none /mnt/gentoo/proc
mount --rbind /dev /mnt/gentoo/dev
mount --rbind /sys /mnt/gentoo/sys

chroot

chroot /mnt/gentoo /bin/bash
env-update; source /etc/profile; export PS1="(chroot) $PS1"; cd

Get portage snapshot (use OSUOSL mirror because it is usually fast)

env GENTOO_MIRRORS="http://gentoo.osuosl.org" emerge-webrsync

Install genkernel

emerge sys-kernel/genkernel

Install sources

emerge sys-kernel/gentoo-sources

Build initial kernel (required for checks in sys-kernel/spl and sys-fs/zfs)

FIXME: Make genkernel support modules_prepare

genkernel kernel --no-clean --no-mountboot

Install ZFS

echo "sys-kernel/spl ~amd64" >> /etc/portage/package.accept_keywords
echo "sys-fs/zfs-kmod ~amd64" >> /etc/portage/package.accept_keywords
echo "sys-fs/zfs ~amd64" >> /etc/portage/package.accept_keywords
emerge sys-fs/zfs

Add zfs to boot runlevel

rc-update add zfs-import boot
rc-update add zfs-mount boot
rc-update add zfs-share default
rc-update add zfs-zed default

Install gptfdisk

emerge sys-apps/gptfdisk

Make BIOS Boot Partition (make certain /dev/sda is your actual block device!)

sgdisk --new=2:48:2047 --typecode=2:EF02 --change-name=2:"BIOS boot partition" /dev/sda

Flush the page cache to ensure GRUB2 sees the latest disk content

echo 1 > /proc/sys/vm/drop_caches

Install GRUB2

echo "sys-boot/grub:2 libzfs" >> /etc/portage/package.use/zfs
echo "sys-boot/grub:2 ~amd64" >> /etc/portage/package.accept_keywords
emerge sys-boot/grub:2
touch /etc/mtab

sys-fs/zfs-kmod and sys-fs/zfs switched to a proposed stable /dev/zfs API in

0.6.5.3. This breaks GRUB2 if the userland expects the new ABI and the kernel

modules in the live environment do not support it.

Provided you have the latest ebuilds (0.6.5.3-r1), your userland should be

using the stable ABI. You can see if the new stable ABI is supported in your

live environment by running grub2-probe:

grub2-probe /

Idealy, grub2-probe would print "zfs" (without the quotes). If grub2-probe

reported an error, it is likely that your kernel modules from your live

environment do not support the new ABI. The kernel modules from 0.6.5.3-r1

support both, so install the older userland tools as a workaround. This will

avoid a failure in grub2-install and/or genkernel's invocation of grub2-mkconfig.

emerge -1v --nodeps =sys-fs/zfs-0.6.5.3

Install GRUB2 to disk (make certain /dev/sda is your actual block device!)

grub2-install /dev/sda

We must create an empty configuration file so genkernel fines the right one.

touch /boot/grub/grub.cfg

Build kernel and initramfs

genkernel all --no-clean --no-mountboot --zfs --bootloader=grub2 --callback="emerge @module-rebuild"

If you needed to install the old tools, you should run the following to

install the new tools again and update the initramfs archive.

emerge -1v --nodeps sys-fs/zfs
genkernel initramfs --no-clean --no-mountboot --zfs

Comment the BOOT, ROOT and SWAP lines in /etc/fstab

sed -i -e "s/(.)/(BOOT|ROOT|SWAP)(.)/#\1/\2\3/g" /etc/fstab

Follow chapters 8 through 12 of Gentoo Handboook: http://www.gentoo.org/doc/en/handbook/

Make recovery snapshot after booting into new install

zfs snapshot rpool/ROOT/gentoo@install

Additional tips

ARC tuning - You can configure the RAM that ARC uses in bytes

echo options zfs zfs_arc_max=536870912 >> /etc/modprobe.d/zfs.conf

Set portage niceness to minimize potential for updates to cause lag

echo PORTAGE_NICENESS=19 >> /etc/make.conf

Set portage to compile in a CGROUP to minimize lag

cat << END > /usr/local/sbin/portage-cgroup
#!/bin/sh

$1 must be the portage PID

cgroup=$(mktemp -d --tmpdir=/sys/fs/cgroup/cpu portage-XXXX) &&
echo $1 &gt; "${cgroup}/tasks" &&
echo 1 > "${cgroup}/notify_on_release"
echo 256 > "${cgroup}/cpu.shares"
END
chmod u+x /usr/local/sbin/portage-cgroup
echo 'PORTAGE_IONICE_COMMAND="/usr/local/sbin/portage-cgroup ${PID}"' >> /etc/make.conf

Swap support

zfs create -o sync=always -o primarycache=metadata -o secondarycache=none -b 4K -V 8G rpool/swap
mkswap -f /dev/zvol/rpool/swap
zfs snapshot rpool/swap@install

Edit fstab to use swap here

Note: Integrate zfs create -o mountpoint=/home/user rpool/HOME/user into procedure

warn users about unbootable system

  • there is no working live cd
  • the hardened live cd makes it impossible to complete rescue tasks
  • the gentoo live dvd has an outdated zfs version. upgrading zfs and modules and trying to modprobe the new versions potentially leads to other random errors and is non-trivial

zfs bad performance

It lags and causes desktop freeze for a few seconds sometimes. ROOT is on SSD, no compression there (except the games subfolder).

Never experienced that with ext3/ext4. It may slow down the system a bit, but no lagging behavior.

zfs-install wrong parameter for zfs_arc_max

zfs-install file mentions option for zfs module:
zfs_arc_max=512M
But trying to load module with this option is complaing that value "512M" is bad. I think "M" should be dropped.

About the update of zfs for gentoo

Hi, ryao

I notice zfsonlinux for gentoo official repos has not been updated long time ago. I still stick to the kernel 4.4, but zfsonlinux has already released v0.6.5.7 for 4.6 kernel series.

I want to ask what's the status for zfsonlinux of gentoo? Is it out of support or update now?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.