linuxubuntuamazon-web-servicesamazon-ec2amazon-ebs

Attaching and mounting existing EBS volume to EC2 instance filesystem issue


I had some unknown issue with my old EC2 instance so that I can't ssh into it anymore. Therefore I'm attempting to create a new EBS volume from a snapshot of the old volume and mount it into the new instance. Here is exactly what I did:

  1. Created a new volume from snapshot of the old one.
  2. Created a new EC2 instance and attached the volume to it as /dev/xvdf (or /dev/sdf)
  3. SSHed into the instance and attempted to mount the old volume with:

$ sudo mkdir -m 000 /vol $ sudo mount /dev/xvdf /vol

And the output was:

mount: block device /dev/xvdf is write-protected, mounting read-only
mount: you must specify the filesystem type

I know I should specify the filesytem as ext4 but the volume contains a lot of important data, so I cannot afford to format it with $ sudo mkfs -t ext4 /dev/xvdf. If I try sudo mount /dev/xvdf /vol -t ext4 (no formatting) I get:

mount: wrong fs type, bad option, bad superblock on /dev/xvdf,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

And dmesg | tail gives me:

[ 1433.217915] EXT4-fs (xvdf): VFS: Can't find ext4 filesystem
[ 1433.222107] FAT-fs (xvdf): bogus number of reserved sectors
[ 1433.226127] FAT-fs (xvdf): Can't find a valid FAT filesystem
[ 1433.260752] EXT4-fs (xvdf): VFS: Can't find ext4 filesystem
[ 1433.265563] EXT4-fs (xvdf): VFS: Can't find ext4 filesystem
[ 1433.270477] EXT4-fs (xvdf): VFS: Can't find ext4 filesystem
[ 1433.274549] FAT-fs (xvdf): bogus number of reserved sectors
[ 1433.277632] FAT-fs (xvdf): Can't find a valid FAT filesystem
[ 1433.306549] ISOFS: Unable to identify CD-ROM format.
[ 2373.694570] EXT4-fs (xvdf): VFS: Can't find ext4 filesystem

By the way, the 'mounting read-only' message also worries me but I haven't look into it yet since I can't mount the volume at all.


Solution

  • The One Liner


    🥇 Mount the partition (if disk is partitioned):

    sudo mount /dev/xvdf1 /vol -t ext4
    

    Mount the disk (if not partitioned):

    sudo mount /dev/xvdf /vol -t ext4
    

    where:


    Common Mistakes How To:


    ✳️ Attached Devices List

    Check your mount command for the correct EBS Volume device name and filesystem type. The following will list them all:

    sudo lsblk --output NAME,TYPE,SIZE,FSTYPE,MOUNTPOINT,UUID,LABEL
    

    If your EBS Volume displays with an attached partition, mount the partition; not the disk.


    ✳️ If your volume isn't listed

    If it doesn't show, you didn't Attach your EBS Volume in AWS web-console


    ✳️ Auto Remounting on Reboot

    These devices become unmounted again if the EC2 Instance ever reboots.

    A way to make them mount again upon startup is to add the volume to the server's /etc/fstab file.

    🔥 Caution:🔥
    If you corrupt the /etc/fstab file, it will make your system unbootable. Read AWS's short article so you know to check that you did it correctly.

    https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html#ebs-mount-after-reboot

    First:
    With the lsblk command above, find your volume's UUID & FSTYPE.

    Second:
    Keep a copy of your original fstab file.

    sudo cp /etc/fstab /etc/fstab.original
    

    Third:
    Add a line for the volume in sudo nano /etc/fstab.

    The fields of fstab are 'tab-separated' and each line has the following fields:

    <UUID>  <MOUNTPOINT>    <FSTYPE>    defaults,discard,nofail 0   0
    

    Here's an example to help you, my own fstab reads as follows:

    LABEL=cloudimg-rootfs   /   ext4    defaults,discard,nofail 0   0
    UUID=e4a4b1df-cf4a-469b-af45-89beceea5df7   /var/www-data   ext4    defaults,discard,nofail 0   0
    

    That's it, you're done. Check for errors in your work by running:

    sudo mount --all --verbose
    

    You will see something like this if things are 👍:

    /                   : ignored
    /var/www-data       : already mounted