Differences between version 3 and revision by previous author of HowToLinuxXFSHOWTO.
Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History
Newer page: | version 3 | Last edited on Tuesday, October 26, 2004 10:25:43 am | by AristotlePagaltzis | Revert |
Older page: | version 1 | Last edited on Friday, June 7, 2002 1:07:01 am | by perry | Revert |
@@ -1,729 +1 @@
-Linux + XFS HOWTO
-!!!Linux + XFS HOWTO
-!!Linux on Steroids
-!Russel Ingram
-
- ringram@gargoylecc.com
-
-
-
-__Revision History__Revision v1.12002-05-12Revised by: riUpdated sgi cvs info to match current state; made various changes/clarifications based on reader feedbackRevision v1.022001-10-08Revised by: riAdded some note, blockquote and ulink tags.
-Corrected error in command section of "Finishing Up".
-Changed note about e2fsprogs-devel to refer to libuuid.Revision v1.012001-10-04Revised by: riCorrected error in "Finishing up" section; various formatting changes
-
-
-
-
-
- This document describes how to build a Linux system that runs
-on top of the SGI XFS journaling filesystem.
-
-
-
-
-
-
-----; __Table of Contents__; 1. Introduction: ; 1.1. Introduction to XFS for Linux; 1.2. Foreword, Feedback, 8 Credits; 1.3. Copyright 8 Disclaimer; 2. Preparation for XFS Installation: ; 2.1. Downloading the Linux 2.4.x-XFS Kernel Source; 2.2. XFS Support as Modules or Compiled Into the Kernel?; 3. Kernel Configuration and Installation: ; 3.1. Configuring your kernel for XFS support; 3.2. Building the kernel and modules; 3.3. Installing the new kernel and modules; 3.4. Add a new entry to your lilo configuration and re-install lilo; 3.5. Build and install the XFS utilities; 3.6. Boot the new kernel; 4. Filesystem Migration: ; 4.1. Migrating the / filesystem; 4.2. Finishing up
-!!!1. Introduction
-!!1.1. Introduction to XFS for Linux
-
-This document describes how to build a Linux system that runs
-on top of the SGI XFS journaling filesystem. From the XFS FAQ: "XFS
-is a journalling filesystem developed by SGI and used in SGI's IRIX
-operating system. It is now also available under GPL for linux. It
-is extremely scalable, using btrees extensively to support large
-sparse files, and extremely large directories. The journalling capability
-means no more waiting for fsck's or worrying about meta-data corruption."
-Essentialy XFS is the filesystem SGI designed for its highend server
-systems, hence the subtitle of this document, "Linux on Steroids".
-:-)
-
-
-----
-!!1.2. Foreword, Feedback, 8 Credits
-
-As a fairly new member of the Irix System Administrator community
-I have fallen in love with the robustness of the filesystem that
-has been developed to support Irix (XFS of course). So, needless
-to say I've been following the porting effort to Linux for quite
-some time and have dreamed of being able to run my Linux systems
-on top of an all XFS filesystem since the beginning. The project
-has come to a point (actually nearly a year ago at the time of this
-writing) that this could actually be a reallity. However, as is
-the case with a great deal of programming/porting projects, the documentation
-for such task is not always as readily available or easy to follow
-as one might hope. This document is an attempt to remedy that situation.
-
-
-
-
-The information contained in this document is based on messages
-from Jason Walker and Russell Cattelan taken from the XFS development
-mailing list, information gathered from various places on the SGI
-Open Source Development web site, and from my own experiences setting
-up such a system.
-
-
-
-
-Please feel free to email me at `ringram@gargoylecc.comb if you
-have any corrections or if any imformation/URLs/etc. is missing.
-The more feedback I get on this HOWTO the more helpful it will be
-for all.
-
-
-
-
-The latest version of this document can be found at
-Gargoyle Computer Consulting
-.
-
-
-----
-!!1.3. Copyright 8 Disclaimer
-
-This document is copyright(c) 2001 Russel Ingram and it is a
-FREE document. You may redistribute it under terms of the GNU General
-Public License.
-
-
-
-
-The information contained in this document is, to the best of
-Russel's knowledge, correct. However, the XFS Linux port is written
-by humans and thus, there is the chance that mistakes, bugs, etc.
-might happen from time to time.
-
-
-
-
-No person, group, or other body is responsible for any damage
-on your computer(s) and any other losses by using the information
-in this document. i.e.
-
-
-
-
-
-
-
-
-
- ''THE AUTHOR IS NOT RESPONSIBLE FOR ANY DAMAGES INCURRED DUE TO
-ACTIONS TAKEN BASED ON THE INFORMATION IN THIS DOCUMENT.
-''
-
-
-----
-!!!2. Preparation for XFS Installation
-!!2.1. Downloading the Linux 2.4.x-XFS Kernel Source
-
-Currently the only place to get the source code for the XFS enabled
-Linux kernel is straight from SGI's Open Source Development site
-via CVS.
-
-
-
-
-
-
-
-__Note__
-
-two distinct trees are available:
-
-
-
-
-
-*
-
-linux-2.5-xfs: development tree
-
-
-*
-*
-
-linux-2.4-xfs: stable bug fix only tree
-
-
-*
-
-
-
-
- My experience has been with the 2.4 tree, but I imagine everything
-will work the same with the development tree. Both trees are kept
-in sync with their respective mainline kernel tree at least to the
-point of major release numbers.
-
-
-
-
-Here are the steps to download the kernel source tree:
-
-
-
-
-A. Normally the linux kernel source is installed in the /usr/src
-directory, so you should start off by switching to that directory.
-
-
-
-
-
-$ cd /usr/src
-
-
-
-
-
-B. Next, you should set the CVSROOT environment variable so that
-it points to the proper cvs server.
-
-
-
-
-
-
-
-*
-
-If you are running sh, bash, ksh, etc...:
-
-$ export CVSROOT=':pserver:cvs@oss.sgi.com:/cvs'
-
-
-
-
-*
-*
-
-If you are running csh or tcsh:
-
-$ setenv CVSROOT :pserver:cvs@oss.sgi.com:/cvs
-
-
-
-
-*
-
-If you plan on updating your kernel often (to keep up with the
-latest changes) you might want to put this in your login script.
-
-
-
-
-C. Then log in to the cvs server.
-
-
-
-
-
-$ cvs login (the password is "cvs")
-
-
-
-
-
-This needs to be done only ONCE, not everytime you access CVS.
-
-
-
-
-D. Now grab linux-2.4-xfs. The first time you will want to do
-something like:
-
-
-
-
-
-$ cvs -z3 co linux-2.4-xfs
-
-
-
-
-
-After you have checked the code out, you can use:
-
-
-
-
-
-$ cvs -z3 update linux-2.4-xfs
-
-
-
-
-
-to update your copy to the latest version from the CVS server.
-
-
-----
-!!2.2. XFS Support as Modules or Compiled Into the Kernel?
-
-The option to build XFS support for the Linux kernel as modules
-is available and will work (or so I am told) with the help of an
-initial RAM disk and a couple of additions to the lilo configuration.
-I have not tried this (yet), so I will not include documentation
-on how this is done other than just to qoute from a message to the
-development mailing list from Russell Cattelan:
-
-
-
-
-
-Actually running xfs as a module isn't very hard. in the
-directory cmd/xfs/misc there is a modified mkinitrd the will always
-generate a ram disk with pagebuf xfs_support and xfs.
-
-
-
-
-Once that is done just add the initrd line in lilo.conf AND
-
-
-
-
-
-append = "ramdisk_size=25000"
-
-
-
-
-
-The default size is 4096 which isn't nearly large enough to hold
-xfs.
-
-
-
-
-This is from my laptop.
-
-
-
-
-
-punch
[[12:57am
]-=bmount
-/dev/ide/host0/bus0/target0/lun0/part8 on / type xfs (rw,noatime)
-none on /proc type proc (rw)
-/dev/ide/host0/bus0/target0/lun0/part6 on /boot type ext2 (rw,noatime)
-none on /dev/pts type devpts (rw,mode=0620)
-/dev/ide/host0/bus0/target0/lun0/part1 on /mnt/windows type vfat (rw,nosuid,nodev,umask=)
-/dev/ide/host0/bus0/target0/lun0/part9 on /blam type xfs (rw)
-punch[[12:57am]-=blsmod
-Module Size Used by
-autofs 13180 1 (autoclean)
-usb-uhci 24918 0 (unused)
-usbcore 35339 0 [[usb-uhci]
-3c59x 25149 1 (autoclean)
-maestro 29757 0 (unused)
-soundcore 6085 2 [[maestro]
-vfat 13075 1 (autoclean)
-fat 37733 0 (autoclean) [[vfat]
-xfs 447888 2
-xfs_support 13954 0 [[xfs]
-pagebuf 39935 2 [[xfs]
-image=/boot/vmlinuz-2.4.-XFS-test13-pre4
-label=t13p4
-root=/dev/hda8
-initrd=/boot/initrd-2.4.-XFS-test13p4.img
-append="ramdisk_size=25000"
-read-only
-
-
-
- -- Russell Cattelan
-
-
-It seems to me that compiling the support into the kernel would
-be much simpler, so that is how I am doing it at this point. I will
-try it as a module at a later time and add more detailed instructions
-then. If anyone has time to document this method before I get around
-to it please email it to me and I will include it with credit given
-where credit is due. :-)
-
-
-----
-!!!3. Kernel Configuration and Installation
-!!3.1. Configuring your kernel for XFS support
-
-
-
-
-__Note__
-
- If you have never configured and compiled a new linux kernel
-you might consider reading the Linux Kernel HOWTO before doing this
-step. It can be found at the
- Linux Documentation Project (LDP)
-
-or one of its mirrors.
-
-
-
-
-After having downloaded the cvs source tree the actual kernel
-source will be in /usr/src/linux-2.4-xfs(-beta)/linux, so you should
-switch to that directory before running the make config command of
-your choice. The main things that must be included in your kernel
-to provide XFS support are "Page Buffer support" and (duh)
-"SGI XFS filesystem support." Both options are available
-in the "File systems" section of the kernel configuration.
-You will need to have "Prompt for development and/or incomplete
-code/drivers" selected under "Code maturity level options"
-for those options to be available to you. Optionally, you may also
-want to select "Enable XFS Debug mode" and "Enable
-XFS Vnode Tracing" under "SGI XFS filesystem support."
-These options may slow your XFS implementation some, but may be useful
-in tracing the cause of a crash if a crash occurs.
-
-
-----
-!!3.2. Building the kernel and modules
-
-As with any kernel build, the following commands must be run
-to actually build the new kernel:
-
-
-
-
-
-$ make dep
-$ make bzImage
-$ make modules
-
-
-
-----
-!!3.3. Installing the new kernel and modules
-
-Again this is standard for any kernel installation:
-
-
-
-
-
-$ make modules_install
-$ cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.-XFS
-
-
-
-----
-!!3.4. Add a new entry to your lilo configuration and re-install lilo
-
-
-$ vi /etc/lilo.conf
-
-
-
-
-
-Add a new image section to your lilo.conf file similar to the
-following:
-
-
-
-
-
-image=/boot/vmlinuz-2.4.-XFS label=xfs read-only root=/dev/hda2
-
-
-
-
-
-The "root=" line should match the "root="
-line from the existing image sections in your lilo.conf file. Don't
-forget to run lilo when you're through editing lilo.conf to make
-the changes effective.
-
-
-----
-!!3.5. Build and install the XFS utilities
-
-There are a number of tools that come with the XFS filesystem that allow
-you to build and manage your XFS filesystems that must be built as well.
-These tools are in the /usr/src/linux-2.4-xfs(-beta)/cmd/xfsprogs directory.
-
-
-
-
-
-
-
-__Note__
-
-These tools rely on the /usr/lib/libuuid.a shared library. If you
-do not have this library installed you will need it in order for
-the XFS utilities to compile. You can find the rpm package for
-your version of Linux from Rpmfind.net by searching for "/usr/lib/libuuid.a." The debian package that contains libuuid is uuid-dev. There will no doubt be other distributions that package this library in another place. A good way to find the correct package on those distributions is to search on the Google Linux search engine.
-
-
-
-
-Change to that directory:
-
-
-
-
-
-$ cd ../cmd/xfsprogs
-
-
-
-
-
-Build and install the xfs utilities:
-
-
-
-
-
-$ make install
-
-
-
-----
-!!3.6. Boot the new kernel
-
-
-$ reboot
-
-
-
-
-
-
-
-
-__Note__
-
- Unless you changed the default label to boot in your lilo.conf
-file you will need to enter "xfs" at the "LILO Boot:"
-prompt in order to boot the new kernel image.
-
-
-----
-!!!4. Filesystem Migration
-
-The final part of this whole process is probably actually the
-trickiest and most dangerous as far as the possibility of losing
-your data goes. I strongly suggest that you make a complete backup
-of the system (or at least all important data) before attempting
-the migration to XFS. This part is also the most difficult to explain
-as there are probably hundreds of ways you can do this based on
-the set up of your existing filesystem. I will give you the basic
-commands for creating the new filesystems, try to give some pointers
-on how to go about shuffling filesystems, and in general just relay
-to you the way I went about migrating my own filesystems.
-
-
-----
-!!4.1. Migrating the / filesystem
-
-Probably the trickiest part of creating a fully XFS system is
-migrating the / filesystem since that is the system that supports
-the entire rest of the system and it cannot actually be unmounted
-while the system is running. If you have extra partitions that
-can be mounted as / then you will be able to do it something like
-this(I am using /dev/hda4 as the spare partition and /dev/hda2 as
-/ for this example):
-
-
-
-
-
-$ mkfs -t ext2 /dev/hda4
-$ mkdir /mnt/temp
-$ mount -t ext2 /dev/hda4 /mnt/temp
-$ cd /
-$ tar lcf - .|(cd /mnt/temp; tar xpvf - )
-
-
-
-
-
-Notice I have used tar
here to copy the files from the / fs to
-the spare partition. Alternatively you could use cp -dpR, but if
-you use tar like I've shown here with the -l flag it will copy only
-files from within the / fs (i.e. if you have another partition mounted
-as /usr it won't copy those).
-
-
-
-
-The next step will be to change all references to /dev/hda2 to
-/dev/hda4 in /etc/fstab and in /etc/lilo.conf and run lilo. You'll
-then need to reboot the system again.
-
-
-
-
-After rebooting the system /dev/hda4 will be mounted as / and
-your original / filesystem (/dev/hda2) will not be mounted. You
-can now create the new XFS filesystem on /dev/hda2.
-
-
-
-
-
-$ mkfs -t xfs /dev/hda2
-
-
-
-
-
-Then mount the new xfs fs:
-
-
-
-
-
-$ mount -t xfs /dev/hda2 /mnt/temp
-
-
-
-
-
-And copy the original / fs back to its original home:
-
-
-
-
-
-$ cd /
-$ tar lcf - .|(cd /mnt/temp; tar xpvf -)
-
-
-
-
-
-Once again you will need to change all instances of /dev/hda4
-in /etc/fstab and /etc/lilo.conf and run lilo. You will also need
-to change the filesystem type for / in /etc/fstab. It should now
-look something like this:
-
-
-
-
-
-/dev/hda2 / xfs defaults 1 1
-
-
-
-
-
-
-
-
-__Note__
-
- On some linux distributions the options given to the out-of-box
-fstab may be more in depth than just "defaults." For
-instance, on Debian systems they use "defaults,errors=remount-ro."
-The mount options are different for every filesystem with the exception
-of the keyword "defaults." Unless you know the specific
-XFS mount options you want you should stick with just the defaults
-option. In the Debian example given, the errors option is not available
-with XFS and will cause your filesystem not to mount.
-
-
-
-
- Additionally, filesystem labels are becoming more popular so you may see an
-entry in your fstab that looks something like this:
-
-LABEL=/ / ext2 defaults 1 1
-
-The easiest way to avoid problems is to simply replace the referenced label
-with the proper device file name (i.e. if /dev/hda1 is labeled / replace "LABEL=/"
-with "/dev/hda1").
-
-
-
-
-Now reboot the system with the new xfs / filesystem.
-
-
-
-
-Of course there are a lot of other ways to accomplish the root
-filesystem migration and if you think you have a good one I would
-definitely like to hear it and will put it in this doc if it seems
-like a simpler way than what is here. I, myself, didn't have a
-spare partition to work with but had a CD burner so I burnt a cd
-of my root filesystem to mount as root while I created the new xfs
-/. In all cases, however, the basic commands for creating and mounting
-the new filesystem will be the same.
-
-
-----
-!!4.2. Finishing up
-
-The last of the process is fairly simple and essentially the
-same process of swapping around partitions while making new filesystems
-as was done for /. I recommend that you do the rest of this process
-with the system in single user mode so you can unmount everything
-other than / and do all of the swapping without having to reboot
-a million times. You can boot to single user mode by either issueing
-a runlevel change command to the init process like so:
-
-
-
-
-
-$ telinit 1
-
-
-
-
-
-or by rebooting and asking for single user mode at the Lilo prompt:
-
-
-
-
-
-LILO Boot: xfs single
-
-
-
-
-
-This will boot the system and drop you into a root shell with
-no outside connections or virtual terminals so there is no chance
-of any of the filesystems being in use by other users or processes
-(causing them to be busy so you can't unmount them). Now you can
-mount the spare partition, as before, copy one of the remaining filesystems
-to be migrated onto it (you will probably have to remove the existing
-contents leftover from /), unmount the old filesystem, create the
-xfs filesystem on it, remount it as xfs, and copy the old filesystem
-back onto it. Lets say you have a /dev/hda3 partition mounted as
-/usr. The process would go something like this:
-
-
-
-
-
-$ mount -t ext2 /dev/hda4 /mnt/temp
-$ cd /usr
-$ tar lcf - .|(cd /mnt/temp; tar xpvf - )
-$ cd /mnt/temp
-$ umount /usr
-$ mkfs -t xfs /dev/hda3
-$ mount -t xfs /dev/hda3 /usr
-$ tar lcf - .|(cd /usr; tar xpvf - )
-
-
-
-
-
-Don't forget to change the filesystem type in /etc/fstab for
-/usr to xfs.
-
-
-
-
-That's all there is to it
. The rest of the filesystems to be
-migrated will work the same way, then you can reboot to full miltiuser
-mode and you've got your "Linux on Steroids!"
+Describe
[HowToLinuxXFSHOWTO
] here.