Skip to main content

The Ext2 File System

  • The initially developed file system was Minix which uses a partition of 64MB and the filenames of no more than 14 characters.
  • After that, A file system called ext was developed which uses a partition size of 2GB and filenames of 255 characters but it was slow compared with Minix.
  • Later the file system for Xia was developed with a partition size of 2GB and 248 characters in filename comparatively faster that Ext file system
  • Finally, Ext2 file system was developed with a faster operation.

Structure of ext2 File system

The ext2 file system was influenced by the BSD Fast File System (BSD FFS). Thus a partition is divided into a number of block groups, corresponding to the cylinder groups in FFS, with each block group holding a copy of the superblock and inode blocks and data blocks. The objective for developing the block groups is that

  • The data block should be close to the inodes
  • File inodes close to their directory inodes

clip_image001

Superblock

  • Defined as the structure ext2_super_block.
  • Contains control information on the file system, such as the number of inodes and blocks
  • It is made upto a size of 1024 bytes

Block group descriptors

  • It is following the superblock
  • Provides information about the block groups. Each block group is described by a 32byte descriptor.
  • Contains the block numbers in the inode bitmap, block bitmap and inode table, the number of free inodes and blocks and the number of directories in the block group.

Inode Table

  • It lists consecutive blocks, inodes of 128bytes in size
  • Also contains information about the entries of Access control List (ACL), time when the file was deleted, information specific to the Operating system in use.

Block Allocation in the Ext2 file system

  • The main problem in all file systems is the fragmentation of files, ie. Scattering of files into small pieces as a result of the constant deleting and creating of new files. This problem is solved by the defragmentation of files.
  • Target oriented allocation
    • New data blocks are always searched for near a target block. If this block is free, it is allocated. Otherwise a free block is sought within 32 blocks of the target block and if found, is allocated.
    • If this fails, the block allocation routine tries to find a free block which is atleast in the same block group as target block.

Comments

Popular posts from this blog

Installing ns3 in Ubuntu 22.04 | Complete Instructions

In this post, we are going to see how to install ns-3.36.1 in Ubuntu 22.04. You can follow the video for complete details Tools used in this simulation: NS3 version ns-3.36.1  OS Used: Ubuntu 22.04 LTS Installation of NS3 (ns-3.36.1) There are some changes in the ns3 installation procedure and the dependencies. So open a terminal and issue the following commands Step 1:  Prerequisites $ sudo apt update In the following packages, all the required dependencies are taken care and you can install all these packages for the complete use of ns3. $ sudo apt install g++ python3 python3-dev pkg-config sqlite3 cmake python3-setuptools git qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar gsl-bin libgsl-dev libgslcblas0 wireshark tcpdump sqlite sqlite3 libsqlite3-dev  libxml2 libxml2-dev libc6-dev libc6-dev-i386 libc...

Installation of NS2 (ns-2.35) in Ubuntu 20.04

Installation of NS2 (ns-2.35) in Ubuntu 20.04 LTS Step 1: Install the basic libraries like      $] sudo apt install build-essential autoconf automake libxmu-dev Step 2: install gcc-4.8 and g++-4.8 open the file using sudo mode $] sudo nano /etc/apt/sources.list Include the following line deb http://in.archive.ubuntu.com/ubuntu bionic main universe $] sudo apt update $] sudo apt install gcc-4.8 g++-4.8 Step 3:  Unzip the ns2 packages to home folder $] tar zxvf ns-allinone-2.35.tar.gz $] cd ns-allinone-2.35/ns-2.35 Modify the following make files. ~ns-2.35/Makefile.in Change @CC@ to gcc-4.8 change @CXX@ to g++-4.8 ~nam-1.15/Makefile.in ~xgraph-12.2/Makefile.in ~otcl-1.14/Makefile.in Change in all places  @CC@ to gcc-4.8 @CPP@ or @CXX@ to g++-4.8 open the file: ~ns-2.35/linkstate/ls.h Change at the Line no 137  void eraseAll() { erase(baseMap::begin(), baseMap::end()); } to This void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); } All changes ...

Installation of NS2 in Ubuntu 22.04 | NS2 Tutorial 2

NS-2.35 installation in Ubuntu 22.04 This post shows how to install ns-2.35 in Ubuntu 22.04 Operating System Since ns-2.35 is too old, it needs the following packages gcc-4.8 g++-4.8 gawk and some more libraries Follow the video for more instructions So, here are the steps to install this software: To download and extract the ns2 software Download the software from the following link http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.35/ns-allinone-2.35.tar.gz/download Extract it to home folder and in my case its /home/pradeepkumar (I recommend to install it under your home folder) $ tar zxvf ns-allinone-2.35.tar.gz or Right click over the file and click extract here and select the home folder. $ sudo apt update $ sudo apt install build-essential autoconf automake libxmu-dev gawk To install gcc-4.8 and g++-4.8 $ sudo gedit /etc/apt/sources.list make an entry in the above file deb http://in.archive.ubuntu.com/ubuntu/ bionic main universe $ sudo apt update Since, it...