freebsd based high density filers...nexenta based since 2007 difficulty to provide non attended...

36
FREEBSD BASED HIGH DENSITY FILERS Baptiste Daroussin < > < > [email protected] [email protected] BSDCan 2016

Upload: others

Post on 01-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

FREEBSD BASED HIGHDENSITY FILERS

Baptiste Daroussin < >

< >[email protected]

[email protected]

BSDCan 2016

Page 2: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

GANDI.NET

Page 3: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

REFRESHING THE FILERSNexenta based since 2007Difficulty to provide non attended setupKernel patches for multipath on new disksPython stuck to an old (and buggy) versionVery long boot time

OSzpool importiSCSI export

Page 4: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

STUDY

Page 5: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

STUDY

REQUIREMENTS

ZFSAbility to server 1000 NFS and 900 iSCSIPossible extension to 1500 NFS and 1000 iSCSISupport NFSv4 with delegationPowerfull debugging tools (in particular dtrace)Support accessing JBOD with multipathOpenSource with an active communityAbility to easily upstream patchesAbility to run containers

Page 6: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

STUDY

CANDIDATES

Illumos family:OpenIndianaOmniOSSmartOSNewer Nexenta

FreeBSDLinux (with ZoL)

Page 7: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

LINUXRejected:

ZoL cannot be upstreamed due to licenseincompatiblitiesLots of regressions due to not being part of theupstream kernel

Page 8: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

ILLUMOS

Page 9: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

ILLUMOS

NEXENTA

Rejected:

Community version limited to 18TBUpstreaming not easy

Page 10: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

ILLUMOS

OPENINDIANA

Rejected:

Small communityFragile build systemOld python (2.6)

Page 11: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

ILLUMOS

SMARTOS

Rejected:

Global zone hard to customizeno iSCSI/NFS management delegationNot design to make filers

Page 12: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

ILLUMOSExporting lots of iSCSI targets still long: more than 5minutesKernel still has to be patched for new diskmanufacturers

Page 13: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

FREEBSD

Page 14: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

FREEBSD

THE GOOD

Strong reputation on storage areaSupport modern ZFS and dtracectld(4)Very fast iSCSI export: few secondsgood NFSv4 supportmdb -> sysctl/kgdbFast zpool import (tips: disable trim support)

Page 15: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

FREEBSD

THE BAD

Bad support for diskless netbootingSlow to boot on large MFSROOTNo multiboot support == no proper iPXE support

Page 16: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

DESIGN: DISKLESSUnattended setup via puppetUpgradability: just rebootEasy backtracking: just rebootFree from admin heroesEasy migration from NexentaSafe migration from Nexenta

Page 17: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

DESIGN: BOOTING SEQUENCE

EARLY BOOT

1. DHCP request2. tftp get pxeboot3. tftp get /boot/ configs4. tftp get kernel, modules, miniroot

Page 18: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

DESIGN: BOOTING SEQUENCE

BOOT MINIROOT

1. run custom rc2. create a ramdisk3. http get filer.txz config.txz puppet-<hostname>.txz4. extract into ramdisk5. reroot on ramdisk

Page 19: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

DESIGN: BOOTING SEQUENCE

FINAL BOOT

1. zpool import2. puppet run3. starts Gandi's middleware4. ready to serve

Page 20: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

CONTRIBUTIONS

Page 21: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

CONTRIBUTIONS

PY-LIBZFS (FREENAS)

Implement zfs clone supportImplement zfs promote supportImplement support for properties (includingcustom)Implement volume supportBug fixing

Page 22: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

CONTRIBUTIONS

MPSUTIL(8)/MPRUTIL(8) (NETFLIX)

Finish integration with FreeBSD build systemimplement flashing firmwares/bios

Page 23: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

CONTRIBUTIONS

PLAYING THE GUINEA PIG

reroot (by trasz@)smarter mount root wait (by trasz@)

Page 24: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

SESUTIL(8)

MANAGING SCSI ENCLOSURE SERVICES

blink locate led (only disks)blink fault led (only disks)show the detailed map of an enclosureeasy to use:$ sesutil locate da3 on

$ sesutil locale all off

Page 25: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

SESUTIL(8)

VENDOR TOOLS

Lots of noise in the logs2 differents tools for SAS2 and SAS3Unfriendly UI

Page 26: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

SESUTIL(8)

SG_SES (SG3_UTILS)

Unfriendly UImapping disks complex

Page 27: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

REWORK PXEBOOT WITH TFTPSUPPORT

Add support for root-path DHCP option to act likepxeboot with NFS support

Page 28: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

RUNNING HEADstable most of the time

needed features only available there

easier to upstream patches

find (and fix) as early as possible bugs

Gandi's workload very well identified

Page 29: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

TEST LABDrived by ZopkioSimulating broken disks using gnop(8)Simulating bad network access using ipfw(8) +dummynet(4)Simulating crash and reboot under high load fromconsumersProfile based test lab

Page 30: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

FUTUR PLANS

Page 31: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

FUTUR PLANS

IMPROVE SESUTIL(8)

libxoify(?)Add microcode update supportExtend locate to support other devices

Page 32: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

FUTUR PLANS

IMPROVE ZFS(8)

Improve zpool import speedTuning tunable like arc_max into safe read/writetunablesMaybe new features to improve reliability

Page 33: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

FUTUR PLANS

IMPROVE FOR IPXE SUPPORT

Implement a FreeBSD specific loaderorTurn the FreeBSD kernel into multiboot

Page 34: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

FUTUR PLANS

IMPROVE CTL(4)

Convert the number of ports and lun per ports intosysctlTurn ctl(4) into using libucl (too late)

Page 35: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

FUTUR PLANS

STORAGE RELATED TOOLING

Implement port some dtrace scripts from IllumosImprove geom_multipath algorithm to bettermatch ZFS requirements

Page 36: FREEBSD BASED HIGH DENSITY FILERS...Nexenta based since 2007 Difficulty to provide non attended setup Kernel patches for multipath on new disks Python stuck to an old (and buggy)

THANKS!Questions?

BSDCan 2016