LFSCK Phase 1 - OI Scrub Scope Statement

From Lustre Wiki
Revision as of 16:27, 8 June 2018 by Adilger (talk | contribs) (Project Goals: add to LFSCK category)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Introduction

The following scope statement applies to the Inode Iterator and OI Scrub project.

Problem Statement

Over the lifetime of an active filesystem, inconsistencies may develop as a result of a restore from file-level backup or non-graceful shutdown. Currently, the Lustre 2.x series is unable to do a file-level MDT backup and restore, because restoring a file-level backup will give files new inode numbers and cause the Object Index (OI) to contain an incorrect FID-to-inode mapping table. The Inode Iterator and IO Scrub project will create a tool to traverse all inodes in an MDT and verify their corresponding entries in the Object Index (OI) are correct. Incorrect entries will be resolved automatically. The Inode Iterator and OI Scrub tool will increase available backup options and provide the foundation for additional distributed filesystem checks for later phases of this project.

Project Goals

  • Demonstrable file level backup and restore.
  • Characterize the performance of lfsck without filesystem load.
  • Characterize the performance of lfsck with filesystem load.
  • Code landed in Lustre master branch.

In-Scope

  • Kernel-space Inode Iterator and OI Scrub tool for the osd-ldiskfs backend.
  • User-space control code for Inode Iterator and OI Scrub tool.
  • Administrative documentation in the form of a man page and update to Lustre 2.x manual.

Out of Scope

  • While the design and implementation will strive to be agnostic to the back-end OSD filesystem, only osd-ldiskfs will be developed, tested and landed for this phase.
  • Detection and resolution of internal filesystem inconsistencies (i.e. those repaired by e2fsck or ZFS scrub) is not within scope of this phase.

Key Deliverables

  • Milestone documents for project phases:
  • Test Plan
  • Source code that meets feature requirements and runs with Lustre 2.x
  • Source code for new test cases
  • Inode iterator and IO scrub code landed in the Master Lustre 2.x