Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Reference implementation of the LTFS format Spec for stand alone tape drive

License

NotificationsYou must be signed in to change notification settings

LinearTapeFileSystem/ltfs

GH Action statusBSD License

About this branch

This is themaster branch of the LTFS project. At this time, this branch is used for version 2.5 development. So it wouldn't be stable a little. Please consider to follow the tree onv2.4-stable branch if you want to use stable codes.

What is the Linear Tape File System (LTFS)

The Linear Tape File System (LTFS) is a filesystem to mount a LTFS formatted tape in a tape drive. Once LTFS mounts a LTFS formatted tape as filesystem, user can access to the tape via filesystem API.

Objective of this project is being the reference implementation of the LTFS format Specifications inSNIA.

At this time, the target of this project to meet is theLTFS format specifications 2.5.

Supported Tape Drives

VendorDrive TypeMinimum F/W Level
IBMLTO5B170
IBMLTO6None
IBMLTO7None
IBMLTO8HB81
IBMLTO9None
IBMTS11403694
IBMTS1150None
IBMTS1155None
IBMTS1160None
HPLTO5T.B.D.
HPLTO6T.B.D.
HPLTO7T.B.D.
HPLTO8T.B.D.
HPLTO9T.B.D.
QuantumLTO5 (Only Half Height)T.B.D.
QuantumLTO6 (Only Half Height)T.B.D.
QuantumLTO7 (Only Half Height)T.B.D.
QuantumLTO8 (Only Half Height)T.B.D.
QuantumLTO9 (Only Half Height)T.B.D.

LTFS Format Specifications

LTFS Format Specification is specified data placement, shape of index and names of extended attributes for LTFS. This specification is defined inSNIA first and then it is forwarded toISO as ISO/IEC 20919 from version 2.2.

The table below show status of the LTFS format Specification

VersionStatus of SNIAStatus of ISO
2.2PublishedPublished as20919:2016
2.3.1Published-
2.4Published-
2.5.1PublishedPublished as20919:2021

How to use the LTFS (Quick start)

This section is for a person who already has a machine with the LTFS installed. Instructions on how to use the LTFS is also available onWiki.

Step1: List tape drives

# ltfs -o device_list

The output is as follows. You have 3 drives in this example and you can use "Device Name" field, like/dev/sg43 in this case, as the argument of ltfs command to mount the tape drive.

50c4 LTFS14000I LTFS starting, LTFS version 2.4.0.0 (10022), log level 2.50c4 LTFS14058I LTFS Format Specification version 2.4.0.50c4 LTFS14104I Launched by "/home/piste/ltfsoss/bin/ltfs -o device_list".50c4 LTFS14105I This binary is built for Linux (x86_64).50c4 LTFS14106I GCC version is 4.8.5 20150623 (Red Hat 4.8.5-11).50c4 LTFS17087I Kernel version: Linux version 3.10.0-514.10.2.el7.x86_64 (mockbuild@x86-039.build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Mon Feb 20 02:37:52 EST 2017 i386.50c4 LTFS17089I Distribution: NAME="Red Hat Enterprise Linux Server".50c4 LTFS17089I Distribution: Red Hat Enterprise Linux Server release 7.3 (Maipo).50c4 LTFS17089I Distribution: Red Hat Enterprise Linux Server release 7.3 (Maipo).50c4 LTFS17085I Plugin: Loading "sg" tape backend.Tape Device list:.Device Name = /dev/sg43, Vender ID = IBM    , Product ID = ULTRIUM-TD5    , Serial Number = 9A700L0077, Product Name = [ULTRIUM-TD5] .Device Name = /dev/sg38, Vender ID = IBM    , Product ID = ULT3580-TD6    , Serial Number = 00013B0119, Product Name = [ULT3580-TD6] .Device Name = /dev/sg37, Vender ID = IBM    , Product ID = ULT3580-TD7    , Serial Number = 00078D00C2, Product Name = [ULT3580-TD7] .

Step2: Format a tape

As described in the LTFS format specifications, LTFS uses the partition feature of the tape drive. This means you can't use a tape just after you purchase a tape. You need format the tape before using it on LTFS.

To format a tape, you can usemkltfs command like

# mkltfs -d 9A700L0077

In this case,mkltfs tries to format a tape in the tape drive9A700L0077. You can use the device name/dev/sg43 instead.

Step3: Mount a tape through a tape drive

After you prepared a formatted tape, you can mount it through a tape drive like

# ltfs -o devname=9A700L0077 /ltfs

In this command, the ltfs command will try to mount the tape in the tape drive9A700L0077 to/ltfs directory. Of course, you can use a device name/dev/sg43 instead.

If the mount process is successfully done, you can access to the LTFS tape through/ltfs directory.

You must not touch anyst devices while ltfs is mounting a tape.

Step4: Unmount the tape drive

You can use following command when you want to unmount the tape. The ltfs command try to write the current meta-data to the tape and close the tape cleanly.

# umount /ltfs

One thing you need to pay attention to here is, that the unmount command continues to work in the background after it returns. It just initiates a trigger to notify the the ltfs command of the unmount request. Actual unmount is completed when the ltfs command is finished.

Theltfsee_ordered_copy utility

Theltfsee_ordered_copy is a program to copy files from source to destination with LTFS order optimization.

It is written in python and it can work with both python2 and python3 (Python 2.7 or later is strongly recommended). You need to install thepyxattr module for both python2 and python3.

Building the LTFS from this GitHub project

These instructions will get a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites for build

Please referthis page.

Build and install on Linux

./autogen.sh./configuremakemake install

./configure --help shows various options for build and install.

In some systems, you might needsudo ldconfig -v aftermake install to load the shared libraries correctly.

Buildable Linux distributions

DistArchStatus
RHEL 8x86_64OK - Not checked automatically
RHEL 8ppc64leOK - Not checked automatically
CentOS 8 (Rocky Linux)x86_64GH Action status
CentOS 8 (Rocky Linux)ppc64leOK - Not checked automatically
Fedora 28x86_64GH Action status
Ubuntu 16.04 LTSx86_64GH Action status
Ubuntu 16.04 LTSppc64leOK - Not checked automatically
Ubuntu 18.04 LTSx86_64GH Action status
Ubuntu 18.04 LTSppc64leOK - Not checked automatically
Ubuntu 20.04 LTS (Need icu-config)x86_64GH Action status
Debian 9x86_64GH Action status
Debian 10 (Need icu-config)x86_64GH Action status
ArchLinux 2018.08.01x86_64OK - Not checked automatically
ArchLinux 2018.12.31 (rolling)x86_64OK - Not checked automatically

Currently, automatic build checking is working on GitHub Actions and Travis CI.

For Ubuntu20.04 and Debian10, dummyicu-config is needed in the build machine. See Issue#153.

Build and install on OSX (macOS)

Recent Homebrew system setup

Before build on macOS, you need to configure the environment like below.

export ICU_PATH="/usr/local/opt/icu4c/bin"export LIBXML2_PATH="/usr/local/opt/libxml2/bin"export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig"export PATH="$PATH:$ICU_PATH:$LIBXML2_PATH"

Old Homebrew system setup

Before build on OSX (macOS), some include path adjustment is required.

brew link --force icu4cbrew link --force libxml2

Building LTFS

On OSX (macOS), snmp cannot be supported, you need to disable it on configure script. And may be, you need to specify LDFLAGS while running configure script to link some required frameworks, CoreFundation and IOKit.

./autogen.shLDFLAGS="-framework CoreFoundation -framework IOKit" ./configure --disable-snmpmakemake install

./configure --help shows various options for build and install.

Buildable macOS systems

OSXcodePackage systemStatus
macOS 10.14.611.3HomebrewOK - Not checked automatically
macOS 10.1512.4HomebrewOK - Not checked automatically
macOS 1112.4HomebrewOK - Not checked automatically

Build and install on FreeBSD

Note that on FreeBSD, the usual 3rd party man directory is /usr/local/man. Configure defaults to using /usr/local/share/man. So, override it on the command line to avoid having man pages put in the wrong place.

./autogen.sh./configure --prefix=/usr/local --mandir=/usr/local/manmakemake install

Buildable versions

VersionArchStatus
11x86_64OK - Not checked automatically
12x86_64OK - Not checked automatically

Build and install on NetBSD

./autogen.sh./configuremakemake install

Buildable versions

VersionArchStatus
8.1amd64OK - Not checked automatically
8.0i386OK - Not checked automatically
7.2amd64OK - Not checked automatically

Contributing

Please readCONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

License

This project is licensed under the BSD License - see theLICENSE file for details


[8]ページ先頭

©2009-2025 Movatter.jp