How to install xfs and create xfs file system on Debian/Ubuntu Linux

I recently switched to a Ubuntu/Debian Linux server from a CentOS/RHEL 7.x. How do I install xfs (mkfs.xfs command) on a Debian/Ubuntu Linux server? How do I create and manage file XFS file system on a Ubuntu or Debian Linux LTS server?

XFS was created at Silicon Graphics, Inc and currently supported by Red Hat. However, XFS is not the default file system for Debian or Ubuntu Linux based system. XFS feature includes scalable and high-performance design. This guide shows you how to install XFS and create an XFS file system on Debian or Ubuntu Linux based system using the command line.
Tutorial requirements
Operating system/appDebian/Ubuntu Linux
Root privileges required Yes
Difficulty Easy (rss)
Estimated completion time 10m
Table of contents

Install xfs on Debian Linux

Open the terminal app to update system and then install xfs packages:
$ sudo apt-get update
$ sudo apt-get upgrade

Use the apt command/apt-get command to install xfs:
$ sudo apt-get install xfsprogs
Sample outputs

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
Suggested packages:
  xfsdump acl attr quota
The following NEW packages will be installed:
  libreadline5 xfsprogs
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,029 kB of archives.
After this operation, 3,781 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 buster/main amd64 libreadline5 amd64 5.2+dfsg-3+b13 [120 kB]
Get:2 buster/main amd64 xfsprogs amd64 4.20.0-1 [909 kB]
Fetched 1,029 kB in 0s (5,183 kB/s)
Selecting previously unselected package libreadline5:amd64.
(Reading database ... 42720 files and directories currently installed.)
Preparing to unpack .../libreadline5_5.2+dfsg-3+b13_amd64.deb ...
Unpacking libreadline5:amd64 (5.2+dfsg-3+b13) ...
Selecting previously unselected package xfsprogs.
Preparing to unpack .../xfsprogs_4.20.0-1_amd64.deb ...
Unpacking xfsprogs (4.20.0-1) ...
Setting up libreadline5:amd64 (5.2+dfsg-3+b13) ...
Setting up xfsprogs (4.20.0-1) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for libc-bin (2.28-10) ...
Processing triggers for initramfs-tools (0.133+deb10u1) ...
update-initramfs: Generating /boot/initrd.img-4.19.0-9-amd64

Load xfs kernel module/driver

Now xfs related utilities are installed. However, it would be best if you loaded xfs Linux kernel driver/module too. In other words, type the following one time command:
$ sudo modprobe -v xfs
Sample outputs:

insmod /lib/modules/4.19.0-9-amd64/kernel/lib/libcrc32c.ko 
insmod /lib/modules/4.19.0-9-amd64/kernel/fs/xfs/xfs.ko 

Verify that xfs loaded either using the grep command or lsmod command:
$ grep xfs /proc/filesystems
$ lsmod | grep xfs
$ modinfo xfs

See Linux Add or Remove a Linux Kernel Modules / Drivers for more info.

How to list available disks on a Debian or Ubuntu Linux

You need to use the fdisk command and then press [enter] key:
sudo fdisk -l
My disks:

Disk /dev/xvda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x15e5590c

Device     Boot Start      End  Sectors Size Id Type
/dev/xvda1 *     2048 83886046 83883999  40G 83 Linux

Disk /dev/xvdf: 400 GiB, 429496729600 bytes, 838860800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

WARNING: Be careful with disks names. Verify twice before formatting or creating new partitions. A wrong SSD/HDD name would result in data loss, and your /dev/DISK names might be different.

How to create an xfs file system

The syntax is:
mkfs.xfs /dev/device
mkfs.xfs [options] /dev/device

This is optional but we can create partition using the fdisk command/cfdisk command/partx command/sfdisk command:
# fdisk /dev/sdb
# cfdisk /dev/sdb
I created a partition named /dev/sdb1. To create an XFS file system, use the mkfs.xfs /dev/sdb1 command:
# mkfs.xfs /dev/sdb1
Sample outputs:

Fig.01: mkfs.xfs in action

In this example, I am going to format the whole /dev/xvdf device:
$ sudo mkfs.xfs /dev/xvdf
meta-data=/dev/xvdf              isize=512    agcount=4, agsize=26214400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=104857600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=51200, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

How to mount an xfs file system on Debian / Ubuntu

Type the following mount command:
# mkdir /data
# mount /dev/sdb1 /data/
# df -T

Sample outputs:

Filesystem     Type     1K-blocks    Used Available Use% Mounted on
udev           devtmpfs   1885404       0   1885404   0% /dev
tmpfs          tmpfs       379308    6728    372580   2% /run
/dev/sda1      ext4      10188088 1086400   8561120  12% /
tmpfs          tmpfs      1896536       0   1896536   0% /dev/shm
tmpfs          tmpfs         5120       0      5120   0% /run/lock
tmpfs          tmpfs      1896536       0   1896536   0% /sys/fs/cgroup
/dev/sdb1      xfs      209611760  241952 209369808   1% /data

Update /etc/fstab file to automount newly created filesystem across the system reboots

To see /dev/sdb1 block device’s UUID (Universally Unique Identifier) run:
# blkid /dev/device
# blkid /dev/sdb1

Sample outputs:

/dev/sdb1: UUID="ea8b08a4-3e9f-4482-83e9-c5f03b9f05d6" TYPE="xfs" PARTUUID="43eccd3d-9d50-4c29-a815-9fcf2986b235"

Edit/updated /etc/fstab file using the following synta:
UUID={YOUR-UID} /data xfs defaults,errors=remount-ro 0 1
For example, the following will update /etc/fstab so that /dev/sda1 get mounted at boot time:

## type the following command as 
## root user 
echo 'UUID=ea8b08a4-3e9f-4482-83e9-c5f03b9f05d6 /data xfs defaults 1 1' >> /etc/fstab

We can append text to a file named /etc/fstab when using sudo command as follows:
$ echo 'UUID=d90e3189-12cd-4d16-8fe9-cf362b5f267d /backup xfs defaults 1 1' \
| sudo tee -a /etc/fstab

Mount new XFS filesystem and test it with the help of mount command and df command:
$ sudo mount -a
$ sudo df -T

How to check and repair an XFS file system

To repair an XFS file system, use xfs_repair command and the syntax is (do not run xfs_repair on a mounted filesystem):
# xfs_repair /dev/device
# umount /dev/sdb1
# xfs_repair /dev/sdb1

Sample outputs:

Phase 1 - find and verify superblock...
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan and clear agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
Phase 5 - rebuild AG headers and trees...
        - reset superblock...
Phase 6 - check inode connectivity...
        - resetting contents of realtime bitmap and summary inodes
        - traversing filesystem ...
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...


In this guide, we explained how to install xfs and create/format second hard disk with XFS on a Debian or Ubuntu Linux based servers or desktop system. For more info about above commands, read their respective man pages and see XFS wiki pages here:
$ man mkfs.xfs
$ man apt-get
$ man xfs_repair
$ man blkid
$ man fdisk

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 2 comments so far... add one

CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
2 comments… add one
  • David Ramirez Dec 11, 2020 @ 5:46

    Great tutorial, also can be applied to Raspbian on Raspberry Pi (as Debian derivative).

    • 🐧 Vivek Gite Dec 11, 2020 @ 9:29

      yes, as it is based upon Debian itself. Glad it helped ya!

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre> for code samples. Problem posting comment? Email me @