Mais conteúdo relacionado
Semelhante a Linux File System (20)
Mais de Anil Kumar Pugalia (20)
Linux File System
- 2. What to Expect?
W's of a File System
Three Levels of File System
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 2
All Rights Reserved.
- 3. What is a File System?
Mechanism of Organizing our Data
Labelling by Names, Easy Access, ...
Algorithm to Achieve the Desired
Organization
Ability to Store, Retrieve, Search, Sort, ...
Data Structures to Achieve the Desired
Performance
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 3
All Rights Reserved.
- 4. Why we need a File System?
Preserve Data for Later
Access
Update
Discard
Tag Data for
Categorizing
Easy & Fast Lookup
Fast & Reliable Data Management by
Optimized Operations
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 4
All Rights Reserved.
- 5. File System Decoded
Three things at three levels
Hardware Space – The Physical Organization of Data
on the Storage Devices
Kernel Space – Drivers to decode & access the data
from the Physical Organization
User Space – All what you see from / - The User View
Which ever it be, it basically does
Organize our data
For easy access by tagging
For fast maintenance by optimizing
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 5
All Rights Reserved.
- 6. Hardware Space File System
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 6
All Rights Reserved.
- 7. The Hard Disk
Tracks
Sectors
Disk or
Platter
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 7
All Rights Reserved.
- 8. The Hard Disk
Spindle
Heads
. .
Cylinder . .
. .
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 8
All Rights Reserved.
- 9. Understanding a Hard Disk
Example (Hard Disk)
Heads (or Platters): 0 – 9
Tracks (or Cylinders): 0 – 24
Sectors: 1 – 64
Size of the Hard Disk
10 x 25 x 64 x 512 bytes = 8000KiB
Device independent numbering
(h, t, s) → 64 * (10 * t + h) + s → (1 - 16000)
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 9
All Rights Reserved.
- 10. Partitioning a Hard Disk
First Sector – Master Boot Record (MBR)
Contains Boot Info
Contains Physical Partition Table
Maximum Physical Partitions: 4
At max 1 as Extended Partition
Rest as Primary Partition
Extended could be further partitioned into
Logical Partitions
In each partition
First Sector – Boot Record (BR)
Remaining for File System / Format
Extended Partition BR contains the Logical Partition Table
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 10
All Rights Reserved.
- 11. Placement of a Hardware FS
Each Partition contains a File System
Raw (no FS)
Organized
Organized one is initialized by the corresponding
Formating
“Partition Type is to OS”
W95*, DOS*, BSD*, Solaris*, Linux, ...
“Format Type is to File System”
ext2, ext3, vfat, ntfs, jffs2, …
Particular Partition Types support only Particular File
System Types
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 11
All Rights Reserved.
- 12. Design a FS
Let's Take 1 Partition
With 16 blocks of 2 sectors each
Size = 16 x 2 x 512 bytes = 16KB
Given 3 data pieces
Source Code – 2.5KB
Image – 8KB
Document – 2KB
Place optimally for further operations
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 12
All Rights Reserved.
- 13. Kernel Space File System
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 13
All Rights Reserved.
- 14. Kernel Space File System
Has 2 Roles to Play
Decode the Hardware FS Layout to access data (by
implementing your logic in s/w)
Interface that with the User Space FS to give you a
unified view, as you all see at /
First part: ext2, ext3, vfat, ntfs, jffs2, …
Also called the File System modules
Second part: VFS
Kernel provides VFS to achieve the virtual user view
So, FS module should actually interact with VFS
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 14
All Rights Reserved.
- 15. Linux specific File Systems
Initial Linux: Minix FS
As Linux matured: Extended (ext) FS
1994: Second Extended (ext2) FS
Latest: Third Extended (ext3) FS
Features Introduced:
Access Control Lists (ACL)
Block Fragmentation
Logical Deletion
Journaling
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 15
All Rights Reserved.
- 16. Linux FS Data Structures
Super block – Stores filesystem meta data
Inode – Stores file meta data
Directory Entry – Stores file name & inode
number
Inode & Data block Bitmap – Bitmap for
tracking usage status of the various
blocks
Group Entry – Stores information of
groups of Data Storage
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 16
All Rights Reserved.
- 17. Linux FS Transitions
Choosing Optimal Block Size (from 1KiB to
4KiB), depending on the expected average file
length
Choosing Number of Inodes
Partition Groups: Each group includes Data
Blocks and Inodes stored in adjacent tracks
Preallocating Disk Data Blocks to Regular Files
Fast Symbolic Links
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 17
All Rights Reserved.
- 18. File System related Commands
File and Inode information – stat
Hardlinks and Softlinks – ln & ln -s
Mounting filesystem – mount & umount
Creating special files – mknod, mkfifo
Permission related – chmod
Ownership related – chown, chgrp
Timestamp related – touch
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 18
All Rights Reserved.
- 20. ext2/ext3: Disk Data Structure
Boot
Block group 0 ... Block group n
block
Super Group Data block Inode Inode
Data blocks
block Descriptors Bitmap Bitmap Table
1 block n blocks 1 block 1 block n blocks n blocks
Superblock and Group Descriptors are
duplicated in each Block Group
Superblock and Group Descriptors in
Block Group 0 are used by the kernel
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 20
All Rights Reserved.
- 21. ext2/ext3: Superblock
unsigned long s_frag_size; /* Size of a fragment in bytes */
unsigned long s_frags_per_block; /* Number of fragments per block */
unsigned long s_inodes_per_block; /* Number of inodes per block */
unsigned long s_frags_per_group; /* Number of fragments in a group */
unsigned long s_blocks_per_group; /* Number of blocks in a group */
unsigned long s_inodes_per_group; /* Number of inodes in a group */
unsigned long s_itb_per_group; /* Number of inode table blocks per group */
unsigned long s_gdb_count; /* Number of group descriptor blocks */
unsigned long s_desc_per_block; /* Number of group descriptors per block */
unsigned long s_groups_count; /* Number of groups in the fs */
...
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 21
All Rights Reserved.
- 22. ext2/ext3: Group Descriptor
__le32 bg_block_bitmap; /* Blocks bitmap block number */
__le32 bg_inode_bitmap; /* Inodes bitmap block number */
__le32 bg_inode_table; /* Inodes table first block number */
__le16 bg_free_blocks_count; /* Free blocks in the group */
__le16 bg_free_inodes_count; /* Free inodes in the group */
__le16 bg_used_dirs_count; /* Directories in the group */
__le16 bg_pad; /* Alignment to word */
__le32 bg_reserved[3]; /* Nulls to pad out 24 bytes */
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 22
All Rights Reserved.
- 23. ext2/ext3: Inode Entry
Inode Table consists of Inode Entries. An Inode Entry is as follows
__le16 i_mode; /* File type & access rights */
__le16 i_uid; /* Low 16 bits of owner uid */
__le32 i_size; /* File size in bytes */
__le32 i_atime; /* Last file access time */
__le32 i_ctime; /* File creation time */
__le32 i_mtime; /* Last file contents modification time */
__le32 i_dtime; /* File deletion time */
__le16 i_gid; /* Low 16 bits of group id */
__le16 i_links_count; /* Hard links counter */
__le32 i_blocks; /* Number of data blocks of the file */
__le32 i_flags; /* File flags */
union osd1; /* OS specific information */
__le32 i_block[12 + 3]; /* Pointers to data blocks */
...
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 23
All Rights Reserved.
- 24. ext2/ext3: File Types
File Types supported
File Type Value Description
0 Unknown
1 Regular
2 Directory
3 Character Device
4 Block Device
5 Named Pipe
6 Socket
7 Symbolic Link
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 24
All Rights Reserved.
- 25. ext2/ext3: Directory Entry
Directory is a File, with Data Blocks
containing Directory Entries
A Directory Entry is as follows
__le32 inode; /* Inode number */
__le16 rec_len; /* Directory entry length */
__u8 name_len; /* Name length */
__u8 file_type; /* File type */
char name[255]; /* File name */
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 25
All Rights Reserved.
- 27. VFS Specifics
Inherited from the Linux specific FS
Promoted to a super set of various FS
Provides a unified view to the User
Default values for various attributes
owner, group, permissions, …
File Types
Same seven types as in ext2/ext3
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 27
All Rights Reserved.
- 28. Virtual File System Interactions
User Space File System View @ /
VFS
.... ext2 .... vfat ....
Partition 0 Partition 1 ... Partition N ...
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 28
All Rights Reserved.
- 29. Virtual File System Internals
d
r
Super Block
Directory Entry Table
Inode Table
> FS Meta Data
> Root Inode Number
> File Name
> Inode Number
> File Meta Data
> File Data Block Nos
Data Block
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 29
All Rights Reserved.
- 30. Recall: User Space File System
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 30
All Rights Reserved.
- 31. / & the System Directories
/bin, /sbin - system binaries/applications
/var - logs, mails
/proc, /sys - “virtual” windows into the kernel
/etc - configuration files
/lib - shared system libraries
/dev - device files
/boot - Linux kernel and boot related binary files
/opt - for third-party packages
/root, /home - home directory for super user & other users
/usr - user space related files and dirs (binaries, libraries, ...)
/tmp - scratch pad
/mnt - mount points
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 31
All Rights Reserved.
- 32. What all have we learnt?
W's of a File System
Three Levels of File System
Hardware Space
Kernel Space
User Space
© 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 32
All Rights Reserved.