Table of Contents
In this article I will share the steps to create filesystem on a linux partition or a logical volume and mount it persistently or non-persistently in your Linux system.
On a UNIX system, everything is a file; if something is not a file, it is a process
This statement is true because there are special files that are more than just files (named pipes and sockets, for instance), but to keep things simple, saying that everything is a file is an acceptable generalization. A Linux system, just like UNIX, makes no difference between a file and a directory, since a directory is just a file containing names of other files. Programs, services, texts, images, and so forth, are all files. Input and output devices, and generally all devices, are considered to be files, according to the system.
In computing, a filesystem controls how data is stored and retrieved and helps organize the files on the storage media. Without a filesystem, information in storage would be one large block of data, and you couldn't tell where one piece of information stopped and the next began. A filesystem helps manage all of this by providing names to files that store data and maintaining a table of files and directories—along with their start/end location, total size, etc.—on disks within the filesystem.
Before we create filesystem we need a partition. For the sake of this article I have added a virtual disk to my vm and created a partition
/dev/sdb. You can verify the list of available partitions using below command
[root@node1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 30G 0 disk ├─sda1 8:1 0 512M 0 part /boot └─sda2 8:2 0 27.5G 0 part ├─centos-root 253:0 0 25.5G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 2G 0 disk └─sdb1 8:17 0 2G 0 part sr0 11:0 1 1024M 0 rom
You can also get the list of available disks and partitions using lsblk
[root@node1 ~]# cat /proc/partitions major minor #blocks name 11 0 1048575 sr0 8 0 31457280 sda 8 1 524288 sda1 8 2 28844032 sda2 8 16 2097152 sdb 8 17 2096128 sdb1 253 0 26738688 dm-0 253 1 2097152 dm-1 9 0 2094080 md0
Decide what kind of filesystem you want to create, such as ext4, XFS, or anything else. Here are a few options:
[root@node1 ~]# mkfs. mkfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
For this article I will use
mkfs.ext4 to create filesystem with ext4 type.
[root@node1 ~]# mkfs.ext4 /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 131072 inodes, 524032 blocks 26201 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=536870912 16 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
Mount a filesystem
After you create filesystem using mkfs, you must mount it in your operating system to be able to use it for storing data.
First, identify the UUID of your new filesystem. Issue the
blkid command to list all known block storage devices and look for
/dev/sdb1 in the output:
[root@node1 ~]# blkid /dev/sdb1 /dev/sdb1: UUID="dac636ff-cde2-4f26-8bfc-a2d7b7ab5aa4" TYPE="ext4"
Create a mount point for this newly created filesystem
[root@node1 ~]# mkdir /mount_point_for_sdb1
Next mount your partition
/dev/sdb1 on this mount point
[root@node1 ~]# mount -t ext4 /dev/sdb1 /mount_point_for_sdb1
df -h command shows which filesystem is mounted on which mount point.
[root@node1 ~]# df -h /mount_point_for_sdb1 Filesystem Size Used Avail Use% Mounted on /dev/sdb1 2.0G 6.0M 1.9G 1% /mount_point_for_sdb1
Substitute it with the
UUID identified in the
blkid command. Also, note that a new directory was created to mount
A problem with using the mount command directly on the command line (as in the previous step) is that the mount won't persist across reboots. To mount the filesystem persistently, edit the
/etc/fstab file to include your mount information:
UUID=dac636ff-cde2-4f26-8bfc-a2d7b7ab5aa4 /mount_point_for_sdb1 ext4 defaults 0 0
After you edit
/etc/fstab, you can umount
/mnt/mount_point_for_dev_sda1 and run the command
mount -a to mount everything listed in
[root@node1 ~]# umount /mount_point_for_sdb1/
Next check if
/dev/sdb1 is unmounted properly
[root@node1 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 25G 4.0G 20G 17% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 9.2M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 488M 198M 255M 44% /boot tmpfs 379M 12K 379M 1% /run/user/42 tmpfs 379M 0 379M 0% /run/user/0
mount -a to mount all the partitions declared in
[root@node1 ~]# mount -a
If everything went right, you can still list
df -h and see your filesystem mounted:
[root@node1 ~]# df -h /mount_point_for_sdb1/ Filesystem Size Used Avail Use% Mounted on /dev/sdb1 2.0G 6.0M 1.9G 1% /mount_point_for_sdb1
Lastly I hope the steps from the article to create filesystem and mount it persistently or non-persistently on Linux was helpful. So, let me know your suggestions and feedback using the comment section.