Scope:

These instructions are intended for Linux systems without Logical Volume Manager (LVM). For that other type of system, check this documentation.

Resizing normal volumes in Linux is straightforward if partitions have already been set as members of groups controlled by Logical Volume Manager (LVM). However, many Linux instances are configured using automatic partitioning, whereby most volumes are set by the installation wizards. LVM configurations are typically out of scope of those installs. Hence, Linux Admins must spend much time practicing Linux file systems manipulations to gain valuable motor memory that would be very valuable during server-down midnight calls. This article is an example of those endeavors.

For the adventurous, follow this external instruction with a grain of salt http:// www.ivarch.com/blogs/oss/2007/01/resize-a-live-root-fs-a-howto.shtml). I’m more conservative when it comes to modifying root partitions. My preferred route has always been performing such task while root is NOT mounted to avoid open-file errors. In cloud and virtual machine services, one could simply remove the virtual disk of the target guest machine and reattach it to another Linux OS. In physical environments, it would be as simple as moving a physical disk from one server to the next. Better yet, I would advise in cloning a reference disk prior to performing shrinking or expanding storage procedures. Otherwise, one must take very good bread-crumb notes to revert failed attempts, should there be any.

Avast, prior to re-partitioning any device, one must note its start and ending sectors. A partition must be contiguous to avoid data loss. There are two popular tools available on most Linux flavors: Parted and Fdisk. Parted is convenient as it allows in-line calling of its methods to return values of private variables. Fdisk works via pure CLI, so it’s not convenient for scripting. In this example, I use parted for discovery and fdisk for partitioning to demonstrate usage of both utilities.

# Rescan disk 'device' that has been expanded in VMWare, Hyper-V, or KVM
deviceLetter=a
echo 1 > /sys/class/block/sd$deviceLetter/device/rescan
# View partitions (aka 'devices' - logical partitions of a device)
root@kimlinux:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0  55.3M  1 loop /snap/core18/1885
loop1    7:1    0  96.6M  1 loop /snap/core/9804
loop2    7:2    0  62.1M  1 loop /snap/gtk-common-themes/1506
loop3    7:3    0 161.4M  1 loop /snap/gnome-3-28-1804/128
loop4    7:4    0  29.9M  1 loop /snap/snapd/8790
loop5    7:5    0    39M  1 loop /snap/remmina/4309
loop6    7:6    0  39.6M  1 loop /snap/remmina/4324
loop7    7:7    0     4M  1 loop /snap/notepad-plus-plus/238
loop8    7:8    0 226.7M  1 loop /snap/wine-platform-runtime/145
loop9    7:9    0   215M  1 loop /snap/wine-platform-5-stable/5
sda      8:0    0  14.9G  0 disk 
sdb      8:16   0   477G  0 disk 
├─sdb1   8:17   0   300M  0 part /boot/efi
└─sdb2   8:18   0 476.7G  0 part /

root@kimlinux:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             16G     0   16G   0% /dev
tmpfs           3.2G  1.7M  3.2G   1% /run
/dev/sdb2       469G  9.8G  435G   3% /
tmpfs            16G  404M   16G   3% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs            16G     0   16G   0% /sys/fs/cgroup
/dev/loop1       97M   97M     0 100% /snap/core/9804
/dev/loop3      162M  162M     0 100% /snap/gnome-3-28-1804/128
/dev/loop2       63M   63M     0 100% /snap/gtk-common-themes/1506
/dev/loop4       30M   30M     0 100% /snap/snapd/8790
/dev/loop0       56M   56M     0 100% /snap/core18/1885
/dev/loop5       39M   39M     0 100% /snap/remmina/4309
/dev/loop6       40M   40M     0 100% /snap/remmina/4324
/dev/loop7      4.2M  4.2M     0 100% /snap/notepad-plus-plus/238
/dev/loop8      227M  227M     0 100% /snap/wine-platform-runtime/145
/dev/loop9      215M  215M     0 100% /snap/wine-platform-5-stable/5
/dev/sdb1       300M  7.8M  292M   3% /boot/efi
tmpfs            16G  8.0K   16G   1% /tmp
tmpfs           3.2G   12K  3.2G   1% /run/user/1000

# reboot now
# Attach disk to another Linux machine
# Discovery

#Using Parted:
lubuntu@lubuntu:~$ sudo parted /dev/sdb 'unit s print'
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sdb: 1000215216s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start    End          Size        File system  Name  Flags
 1      4096s    618495s      614400s     fat32              boot, esp
 2      618496s  1000206899s  999588404s  ext4
 
# Using Fdisk:
lubuntu@lubuntu:~$ sudo fdisk /dev/sdb

Welcome to fdisk (util-linux 2.34).                                          
Changes will remain in memory only, until you decide to write them.          
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdb: 476.96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Samsung SSD 850 
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: gpt
Disk identifier: 1D8CE9C6-B07F-3D46-8FA3-3ABC71E0985C

Device      Start        End   Sectors   Size Type
/dev/sdb1    4096     618495    614400   300M EFI System
/dev/sdb2  618496 1000206899 999588404 476.7G Linux filesystem

# Input the target partition manually
partition=/dev/sdb2
newsizeMb=471040

# Discover the start and end blocks automatically
device=$(lsblk -no pkname $partition)
partitionName=$([[ $partition =~ ([a-zA-Z0-9]+)$ ]] && echo ${BASH_REMATCH[1]})
sysblockDevice=/sys/block/$device
sysblockPath=/sys/block/$device/$partitionName
start=$(cat $sysblockPath/start)
size=$(cat $sysblockPath/size)
end=$(expr $size + $start - 1)
sectorSize=$(cat $sysblockDevice/queue/hw_sector_size)
newSize=$((1024 * 1024 / $sectorSize * $newsizeMb)) # 1024^2/sectorSize * MB
newEnd=$(expr $newSize + $start - 1)
partitionNumber=$(cat $sysblockPath/partition)

# My old script that doesn't work anymore due to this.
# Error: The resize command has been removed in parted 3.0
#if [ "$newEnd" -gt "$end" ] then
#	sudo parted -s $partition unit s resize $partitionNumber $start $newEnd
#fi

Resizing Linux Partitions – The Tried And True Method

# Resizing file system on root partition
lubuntu@lubuntu:~$ sudo resize2fs /dev/sdb2 400G
resize2fs 1.45.5 (07-Jan-2020)
Resizing the filesystem on /dev/sdb2 to 104857600 (4k) blocks.
The filesystem on /dev/sdb2 is now 104857600 (4k) blocks long.
# Note the output of the above command: 104857600 blocks x 4k per block = 419430400k <= this is the value needed for the next step

# Get the last sector of disk
ubuntu@lubuntu:~$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 476.96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Samsung SSD 850 
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: gpt
Disk identifier: 1D8CE9C6-B07F-3D46-8FA3-3ABC71E0985C
Device      Start        End   Sectors   Size Type
/dev/sdb1    4096     618495    614400   300M EFI System
/dev/sdb2  618496 1000206899 999588404 476.7G Linux filesystem

# Retry partitioning using size value calculated previously, NOT sector counts
lubuntu@lubuntu:~$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.34).                                                                                   
Changes will remain in memory only, until you decide to write them.                                                   
Be careful before using the write command.
Command (m for help): d
Partition number (1,2, default 2):  
Partition 2 has been deleted.
Command (m for help): n
Partition number (2-128, default 2): 
First sector (618496-1000215182, default 618496): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (618496-1000215182, default 1000215182): +419430400k
Created a new partition 2 of type 'Linux filesystem' and of size 400 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: n
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

# Check partition
lubuntu@lubuntu:~$ sudo e2fsck -f /dev/sdb2
e2fsck 1.45.5 (07-Jan-2020)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb2: 317354/26214400 files (0.6% non-contiguous), 4472439/104857600 blocks

Resizing a partition – Example of what NOT To Do!

lubuntu@lubuntu:$ sudo fdisk /dev/sdb

Welcome to fdisk (util-linux 2.34).                                                                      
Changes will remain in memory only, until you decide to write them.                                      
Be careful before using the write command.

Command (m for help): p
Disk /dev/sdb: 476.96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Samsung SSD 850 
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: gpt
Disk identifier: 1D8CE9C6-B07F-3D46-8FA3-3ABC71E0985C

Device      Start        End   Sectors   Size Type
/dev/sdb1    4096     618495    614400   300M EFI System
/dev/sdb2  618496 1000206899 999588404 476.7G Linux filesystem

Command (m for help): d
Partition number (1,2, default 2): 

Partition 2 has been deleted.

Command (m for help): n
Partition number (2-128, default 2): 
First sector (618496-1000215182, default 618496): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (618496-1000215182, default 1000215182): 965308415

Created a new partition 2 of type 'Linux filesystem' and of size 460 GiB.
Partition #2 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: n

Command (m for help): n
Partition number (3-128, default 3): 
First sector (965308416-1000215182, default 965308416): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (965308416-1000215182, default 1000215182): 

Created a new partition 3 of type 'Linux filesystem' and of size 16.7 GiB.

Command (m for help): t
Partition number (1-3, default 3): 
Partition type (type L to list all types): 31

Changed type of partition 'Linux filesystem' to 'Linux LVM'.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

# Check disk health

lubuntu@lubuntu:/$ sudo e2fsck /dev/sdb
e2fsck 1.45.5 (07-Jan-2020)
ext2fs_open2: Bad magic number in super-block
e2fsck: Superblock invalid, trying backup blocks...
e2fsck: Bad magic number in super-block while trying to open /dev/sdb

The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem.  If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>
 or
    e2fsck -b 32768 <device>

Found a gpt partition table in /dev/sdb


# Format the newly created partition and assign it to an LVM volume
lubuntu@lubuntu:/$ testDisk2=/dev/sdb3
lubuntu@lubuntu:/$ sudo pvcreate $testDisk2
  Physical volume "/dev/sdb3" successfully created.
lubuntu@lubuntu:/$ sudo pvscan -v
  PV /dev/sda                       lvm2 [14.91 GiB]
  PV /dev/sdb3                      lvm2 [16.64 GiB]
  Total: 2 [<31.56 GiB] / in use: 0 [0   ] / in no VG: 2 [<31.56 GiB]
lubuntu@lubuntu:/$ sudo vgcreate volumegroup1 /dev/sda /dev/sdb3
  Volume group "volumegroup1" successfully created

# View the results of the re-partitioned disk
root@lubuntu:~# sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.34).                                                                      
Changes will remain in memory only, until you decide to write them.                                      
Be careful before using the write command.

Command (m for help): p
Disk /dev/sdb: 476.96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Samsung SSD 850 
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: gpt
Disk identifier: 1D8CE9C6-B07F-3D46-8FA3-3ABC71E0985C

Device         Start        End   Sectors  Size Type
/dev/sdb1       4096     618495    614400  300M EFI System
/dev/sdb2     618496  965308415 964689920  460G Linux filesystem
/dev/sdb3  965308416 1000215182  34906767 16.7G Linux LVM

Full list of disk formatting options:

  1 EFI System                     C12A7328-F81F-11D2-BA4B-00A0C93EC93B
  2 MBR partition scheme           024DEE41-33E7-11D3-9D69-0008C781F39F
  3 Intel Fast Flash               D3BFE2DE-3DAF-11DF-BA40-E3A556D89593
  4 BIOS boot                      21686148-6449-6E6F-744E-656564454649
  5 Sony boot partition            F4019732-066E-4E12-8273-346C5641494F
  6 Lenovo boot partition          BFBFAFE7-A34F-448A-9A5B-6213EB736C22
  7 PowerPC PReP boot              9E1A2D38-C612-4316-AA26-8B49521E5A8B
  8 ONIE boot                      7412F7D5-A156-4B13-81DC-867174929325
  9 ONIE config                    D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149
 10 Microsoft reserved             E3C9E316-0B5C-4DB8-817D-F92DF00215AE
 11 Microsoft basic data           EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
 12 Microsoft LDM metadata         5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
 13 Microsoft LDM data             AF9B60A0-1431-4F62-BC68-3311714A69AD
 14 Windows recovery environment   DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
 15 IBM General Parallel Fs        37AFFC90-EF7D-4E96-91C3-2D7AE055B174
 16 Microsoft Storage Spaces       E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D
 17 HP-UX data                     75894C1E-3AEB-11D3-B7C1-7B03A0000000
 18 HP-UX service                  E2A1E728-32E3-11D6-A682-7B03A0000000
 19 Linux swap                     0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
 20 Linux filesystem               0FC63DAF-8483-4772-8E79-3D69D8477DE4
 21 Linux server data              3B8F8425-20E0-4F3B-907F-1A25A76F98E8
 22 Linux root (x86)               44479540-F297-41B2-9AF7-D131D5F0458A
 23 Linux root (ARM)               69DAD710-2CE4-4E3C-B16C-21A1D49ABED3
 24 Linux root (x86-64)            4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
 25 Linux root (ARM-64)            B921B045-1DF0-41C3-AF44-4C6F280D3FAE
 26 Linux root  (IA-64)             993D8D3D-F80E-4225-855A-9DAF8ED7EA97
 27 Linux reserved                 8DA63339-0007-60C0-C436-083AC8230908
 28 Linux home                     933AC7E1-2EB4-4F13-B844-0E14E2AEF915
 29 Linux RAID                     A19D880F-05FC-4D3B-A006-743F0F84911E
 30 Linux extended boot            BC13C2FF-59E6-4262-A352-B275FD6F7172
 31 Linux LVM                      E6D6D379-F507-44C2-A23C-238F2A3DF928
 32 FreeBSD data                   516E7CB4-6ECF-11D6-8FF8-00022D09712B
 33 FreeBSD boot                   83BD6B9D-7F41-11DC-BE0B-001560B84F0F
 34 FreeBSD swap                   516E7CB5-6ECF-11D6-8FF8-00022D09712B
 35 FreeBSD UFS                    516E7CB6-6ECF-11D6-8FF8-00022D09712B
 36 FreeBSD ZFS                    516E7CBA-6ECF-11D6-8FF8-00022D09712B
 37 FreeBSD Vinum                  516E7CB8-6ECF-11D6-8FF8-00022D09712B
 38 Apple HFS/HFS+                 48465300-0000-11AA-AA11-00306543ECAC
 39 Apple UFS                      55465300-0000-11AA-AA11-00306543ECAC
 40 Apple RAID                     52414944-0000-11AA-AA11-00306543ECAC
 41 Apple RAID offline             52414944-5F4F-11AA-AA11-00306543ECAC
 42 Apple boot                     426F6F74-0000-11AA-AA11-00306543ECAC
 43 Apple label                    4C616265-6C00-11AA-AA11-00306543ECAC
 44 Apple TV recovery              5265636F-7665-11AA-AA11-00306543ECAC
 45 Apple Core storage             53746F72-6167-11AA-AA11-00306543ECAC
 46 Solaris boot                   6A82CB45-1DD2-11B2-99A6-080020736631
 46 Solaris boot                   6A82CB45-1DD2-11B2-99A6-080020736631
 46 Solaris boot                   6A82CB45-1DD2-11B2-99A6-080020736631
 47 Solaris root                   6A85CF4D-1DD2-11B2-99A6-080020736631
 48 Solaris /usr & Apple ZFS       6A898CC3-1DD2-11B2-99A6-080020736631
 49 Solaris swap                   6A87C46F-1DD2-11B2-99A6-080020736631
 50 Solaris backup                 6A8B642B-1DD2-11B2-99A6-080020736631
 51 Solaris /var                   6A8EF2E9-1DD2-11B2-99A6-080020736631
 52 Solaris /home                  6A90BA39-1DD2-11B2-99A6-080020736631
 53 Solaris alternate sector       6A9283A5-1DD2-11B2-99A6-080020736631
 54 Solaris reserved 1             6A945A3B-1DD2-11B2-99A6-080020736631
 55 Solaris reserved 2             6A9630D1-1DD2-11B2-99A6-080020736631
 56 Solaris reserved 3             6A980767-1DD2-11B2-99A6-080020736631
 57 Solaris reserved 4             6A96237F-1DD2-11B2-99A6-080020736631
 58 Solaris reserved 5             6A8D2AC7-1DD2-11B2-99A6-080020736631
 59 NetBSD swap                    49F48D32-B10E-11DC-B99B-0019D1879648
 60 NetBSD FFS                     49F48D5A-B10E-11DC-B99B-0019D1879648
 61 NetBSD LFS                     49F48D82-B10E-11DC-B99B-0019D1879648
 62 NetBSD concatenated            2DB519C4-B10E-11DC-B99B-0019D1879648
 63 NetBSD encrypted               2DB519EC-B10E-11DC-B99B-0019D1879648
 64 NetBSD RAID                    49F48DAA-B10E-11DC-B99B-0019D1879648
 65 ChromeOS kernel                FE3A2A5D-4F32-41A7-B725-ACCC3285A309
 66 ChromeOS root fs               3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC
 67 ChromeOS reserved              2E0A753D-9E48-43B0-8337-B15192CB1B5E
 68 MidnightBSD data               85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7
 69 MidnightBSD boot               85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7
 70 MidnightBSD swap               85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7
 71 MidnightBSD UFS                0394EF8B-237E-11E1-B4B3-E89A8F7FC3A7
 72 MidnightBSD ZFS                85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7
 73 MidnightBSD Vinum              85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7
 74 Ceph Journal                   45B0969E-9B03-4F30-B4C6-B4B80CEFF106
 75 Ceph Encrypted Journal         45B0969E-9B03-4F30-B4C6-5EC00CEFF106
 76 Ceph OSD                       4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D
 77 Ceph crypt OSD                 4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D
 78 Ceph disk in creation          89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE
 79 Ceph crypt disk in creation    89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE
 80 VMware VMFS                    AA31E02A-400F-11DB-9590-000C2911D1B8
 81 VMware Diagnostic              9D275380-40AD-11DB-BF97-000C2911D1B8
 82 VMware Virtual SAN             381CFCCC-7288-11E0-92EE-000C2911D0B2
 83 VMware Virsto                  77719A0C-A4A0-11E3-A47E-000C29745A24
 84 VMware Reserved                9198EFFC-31C0-11DB-8F78-000C2911D1B8
 85 OpenBSD data                   824CC7A0-36A8-11E3-890A-952519AD3F61
 86 QNX6 file system               CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1
 87 Plan 9 partition               C91818F9-8025-47AF-89D2-F030D7000C2C
 88 HiFive Unleashed FSBL          5B193300-FC78-40CD-8002-E86C45580B47

Although the instructions above are effective to the extent of showing us what NOT to do. As expected, the subject Linux machine would not boot after the procedure due to block errors. Fortunately, the following shall be an illustration of how to fix such a problem – I hope this info would save some Admin who’s having a bad day.

# checkdisk found errors
lubuntu@lubuntu:~$ sudo e2fsck -f /dev/sdb2
e2fsck 1.45.5 (07-Jan-2020)
The filesystem size (according to the superblock) is 124948550 blocks
The physical size of the device is 120586240 blocks
Either the superblock or the partition table is likely to be corrupt!

# Look for backups of superblock
lubuntu@lubuntu:~$ sudo mke2fs -n /dev/sdb2
mke2fs 1.45.5 (07-Jan-2020)                                                                                           
/dev/sdb2 contains a ext4 file system                                                                                 
        last mounted on / on Mon Aug 24 04:57:14 2020                                                                 
Proceed anyway? (y,N) y                                                                                               
Creating filesystem with 120586240 4k blocks and 30146560 inodes                                                      
Filesystem UUID: 46176ecb-6490-43e8-9ae5-c79f4b2e2f04                                                                 
Superblock backups stored on blocks:                                                                                  
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,                                       
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,                                           
        102400000

# Attempted to restore superblock from one of the locations        
sudo e2fsck -b 78675968 /dev/sdb2
Error writing block 120586454 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Error writing block 120586453 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Error writing block 120586449 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Error writing block 120586452 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Error reading block 120586456 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
/dev/sdb2: e2fsck canceled.
/dev/sdb2: ***** FILE SYSTEM WAS MODIFIED *****

# Reverted changes to disk
lubuntu@lubuntu:~$ sudo fdisk /dev/sdb2
Welcome to fdisk (util-linux 2.34).                                                                                                                                                          
Changes will remain in memory only, until you decide to write them.                                                                                                                          
Be careful before using the write command.
The old ext4 signature will be removed by a write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xb911f923.
Command (m for help): p
Disk /dev/sdb2: 460 GiB, 493921239552 bytes, 964689921 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: 0xb911f923
Command (m for help): quit
lubuntu@lubuntu:~$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.34).                                                                                                                                                          
Changes will remain in memory only, until you decide to write them.                                                                                                                          
Be careful before using the write command.
Command (m for help): p
Disk /dev/sdb: 476.96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Samsung SSD 850 
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: gpt
Disk identifier: 1D8CE9C6-B07F-3D46-8FA3-3ABC71E0985C
Device      Start       End   Sectors  Size Type
/dev/sdb1    4096    618495    614400  300M EFI System
/dev/sdb2  618496 965308416 964689921  460G Linux filesystem
Command (m for help): d
Partition number (1,2, default 2): 
Partition 2 has been deleted.
Command (m for help): n
Partition number (2-128, default 2): 
First sector (618496-1000215182, default 618496): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (618496-1000215182, default 1000215182): 1000206899
Created a new partition 2 of type 'Linux filesystem' and of size 476.7 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: n
Command (m for help): p
Disk /dev/sdb: 476.96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Samsung SSD 850 
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: gpt
Disk identifier: 1D8CE9C6-B07F-3D46-8FA3-3ABC71E0985C

Device      Start        End   Sectors   Size Type
/dev/sdb1    4096     618495    614400   300M EFI System
/dev/sdb2  618496 1000206899 999588404 476.7G Linux filesystem

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

# Retry fixing disk
lubuntu@lubuntu:~$ sudo e2fsck -f /dev/sdb2
e2fsck 1.45.5 (07-Jan-2020)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  +(4096000--4097084) +(7962624--7963708) +(11239424--11240508) +(20480000--20481084) +(23887872--23888956) +(71663616--71664700) +(78675968--78677052) +(102400000--102401084)
Fix<y>? yes
Free blocks count wrong for group #0 (23453, counted=10578).
Fix<y>? yes
Free blocks count wrong for group #1 (31683, counted=19341).
### omitted for brevity ###
Directories count wrong for group #3792 (0, counted=621).
Fix<y>? yes
Free inodes count wrong (31244277, counted=30926934).
Fix<y>? yes
Padding at end of inode bitmap is not set. Fix<y>? yes
/dev/sdb2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb2: 317354/31244288 files (0.4% non-contiguous), 4788118/124948550 blocks