Linux File System
Nov 02, 2014
Linux File System
Partitions & the fdisk command
• fdisk is an interactive utility to manipulate disk partitions.
• Use fdisk –l to review the disks and partitions on the system.
• Use fdisk and the disk special device file in order to create new partitions.Example:# fdisk /dev/hda
Partitions & the fdisk command
• The fdisk command supports many types of partitions.
• Alternative:– Gnu parted – create, copy and manipulate
partitions.– Sfdisk
Supported Local File Systems
• Linux Supports vast amount of local, disk based, file systems. For example:– Ext 2 – previous native Linux file system.
– Ext 3 – Current native Linux file system.
– Vfat – DOS 32 file system.
– ISO9660 – CDROM Image file system.
Ext 3 File System
• Ext 3 is the default FS in many Linux distributions.
• Ext 3 is a journal FS, thus improves data integrity and system availability (fast fsck).
• Ext 3 is an improvement of Ext 2, so transfer to Ext 3 is considerably easy.
• Ext 3 FS is part of Linux Kernel since version 2.4.16.
Super
Block
Ext 3 File System Structure
GroupDisctipto
rs
BlockBitma
p
InodeBitma
p
InodeTable Data Data Data
Block Group
Same for all block groups
Ext 3 File System Structure
• Ext 3 FS is divided to block groups in order to reduce seek time and preserve data integrity (reduce fragments).
• Each block group contains the following:– Super Block – the super block contains
data about the status of the current FS.There are several instances of the Super Block on the FS. Each instance is stored at an offset of 1024 Bytes from the previous one.
Ext 3 File System StructureThe Super Block contains the following data:Number of Inodes on the FS and the number of free Inodes.Number of data blocks on the FS and the number of
free data blocks.Time and mounting point of the last system mount.Flags indicating the state of the FS.Number of times the FS was mounted.Time the FS was last checked.Maximum time permissible between checks.Magic number indicating an Ext 3 FS.
Ext 3 File System Structure
– Group Discriptors – Contain information about the block group. Such as:
The address of the block containing the block bitmap of the group.
The address of the block containing the inode bitmap of the group.
The address of the block containing the indoe table of the group.
Ext 3 File System Structure Count of free blocks in the group. Count of free indoes in the group.
• Block bitmap indicates which blocks in the group have been allocated.
• Inode bitmap indicates which Inodes in the group have been allocated.
• Inode table is an array of Inodes for that particular group.
Creating Ext 3 File System
• Use mkfs command to create Ext 3 FS.• Example:# mkfs -t ext3 -b 2048 -j -L local /dev/hdb1
• -t - FS type (default Ext 2)• -b - Block Size (Default 1024)• -j - Journaled• -L - volume label
The dumpe2fs Command
• Use the dumpe2fs command in order to view the properties of the Ext2/Ext3 file system.
• The dumpe2fs command prints the super block and blocks group information for the file system present on device.
Converting Ext 2 to Ext 3
• Use tune2fs to convert exsisting Ext 2 FS to Ext 3 FS.
• Example:# tune2fs -j -L local /dev/hdb1
• -j - Add journal to the FS
• -L - Volume Label
Using the fsck Command
• File system status must be clean in order to be
mounted and made available on the system.
• The fsck command is used to check the
consistancy of the file system, and optionally,
repair it.
Using the fsck Command• Usage:fsck [-fp] [-b superblock ] device
• -f – Force FS check. When the superblock indicates the FS state is clean, fsck exits automatically. Use this option to force fsck check.
• -p – Fix file system inconsistancies automatically (rather then interactivly asking for intervention).
• Device – Logical device name or volume label.
Using the fsck Command# fsck -f /dev/hda1fsck 1.32 (09-Nov-2002)e2fsck 1.32 (09-Nov-2002)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/boot: 35/26520 files (2.9% non-contiguous), 12575/105808 blocks
Restoring Damaged Superblock
• Use fsck with -b superblock option to restore damaged superblocks from backup.
• If the superblock of the FS is damaged, there could be no access to data on the FS.
• Ext 3 keeps backups of the Superblock.
• Use mkfs with the -n option to find out the location of the superblock backup.
# mkfs -t ext3 -n /dev/hda1
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
...
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Superblock Back up Locations
Restoring Damaged Superblock
Restoring Damaged Superblock
# fsck -b 8193 /dev/hda1fsck 1.32 (09-Nov-2002)e2fsck 1.32 (09-Nov-2002)/boot was not cleanly unmounted, check forced.Pass 1: Checking inodes, blocks, and sizes...Pass 5: Checking group summary information /boot: ***** FILE SYSTEM WAS MODIFIED *****/boot: 35/26520 files (2.9% non-contiguous), 12575/105808 blocks
• Use the information gained by the mkfs command to salvage the FS superblock:
Mounting File Systems
• In order to make the file system available for use, the file system must be mounted.
• Use a directory as a mount point, to connect the file system about to be mounted to the file system tree, starting from root (/).
• Each directory can be used to mount one file system at a time.
• A directory that is being used can not serve as a mount point.
Mouting File Systems
/
usr
home
etc
local
hda1
bin
sbin
lib
hdb1
bin
sbin
The Mount Command
• Use the mount command in order to make FS available.
• Syntax:mount -t type -o options
logical_device mount_point
• Example:
# mount -t ext3 -o noatime
/dev/hdb1 /usr/local
The Mount Command
• -t – file system type. Local file systems could be: Ext 2 (default) Ext 3 msdos – FAT 16 FS vfat – FAT 32 FS ntfs - Windows NT
The Mount Command
• -o – Mount option. Options could be: ro – read only. rw – read and write. suid/nosuid – allow/deny suid bit to take effect. exec/noexec – permit/deny the execution
of binaries. noatime – do not update file access time
(makes FS much faster).
The Mount Command
• logical_device – this could be either a logical
device name like: dev/hdb1
or, a volume label like: LABEL=local
• mount_point – A directory that would serve as the
mount point for the file system.
The /etc/fstab File
• The /etc/fstab file is used to mount FS
automatically at boot time or to make the
mounting of frequently mounted FS easier.
• The /etc/fstab is created during system
installation and should be edited manually to
include filesystems needed to be available when
system starts.
The /etc/fstab File
LABEL=/ / ext3 defaults 1 1LABEL=/boot /boot ext3 defaults 1 2none /dev/pts devpts gid=5,mode=620 0 0none /proc proc defaults 0 0/dev/hda3 swap swap defaults 0 0
/etc/fstab file structure
The /etc/fstab File
• Device to Mount – Logical device name or Volume
Label of the device to be mounted.
• Mount Point – The directory to be the mount point
of the file system.
• File System Type – The type of te file system to be
mounted.
The /etc/fstab File
• Mount Options – options should be used while working with the file system (defaults = rw, suid, exec, auto, nouser, async).
• FS Backup – is used by the dump tool to decide which FS needs to be backed up. Accepted values are 0 for no backup, or 1 indicating this file system needs to be backed up.
The /etc/fstab File• FS Check Pass – the order by which file systems
needs to be checked before being mounted. Acceptable values are 1 to 9.– File systems are being checked according to the order
starting with 1 ending with 9. File systems with FS check pass 1 are being checked
one after the other, while file systems with FS check pass 2 and up are being checked in parallel.
The /etc/fstab File
fsck will try and correct any error it encountered which does not require changes to the file system.
If the error requires changes to the file system, the system drops to single user mode and fsck must be run manually.
The /etc/fstab File and mount
• Upon writing an incomplete mount command, mount will try and get the missing information from /etc/fstab
• Use the mount -a command to mount all local file
systems listed in /etc/fstab (excpet those
indicating noauto in the mount options).
/etc/mtab File
• The /etc/mtab file contains information about all mounted file systems.
• The /etc/mtab file is dynamically changed by the system and should not be edited manually.
/etc/mtab File
# cat /etc/mtab
/dev/hda2 / ext3 rw 0 0
none /proc proc rw 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hda1 /boot ext3 rw 0 0
none /dev/shm tmpfs rw 0 0
Example of/etc/mtab file:
The umount Command
• Use the umount command to make file systems unavailable.
• Command usage: umount dir | device
• Use either mount point or logical device name to
make a file system unavailable.
The umount Command• File systems could not be made unavailable if
resources on that file system is being used.
# cd /boot
# umount /boot
umount: /boot: device is busy
• Use fuser -v -m logical_device to check
which processes are using the file system.
The umount Command
#fuser -v -m /dev/hda1
USER PID ACCESS COMMAND
/dev/hda1 root 2471 f.... vi
• Example:
The umount Command
# fuser -k -m /dev/hda1
/dev/hda1: 2471
• Use fuser -k -m device to kill processes
making use of the file system.