关于linux:将现有EBS卷附加并挂载到EC2实例文件系统问题

Attaching and mounting existing EBS volume to EC2 instance filesystem issue

我的旧EC2实例存在一些未知问题,因此无法再使用它了。因此,我从旧卷的快照创建了一个新的EBS卷,并尝试将其附加并挂载到新实例。这是我所做的:

  • 从旧快照的快照创建了一个新卷。
  • 创建一个新的EC2实例并将卷附加为/dev/xvdf(或/dev/sdf)
  • SSH进入实例,并尝试使用以下方法挂载旧卷:

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

  • 输出为:

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

    现在,我知道我应该将文件系统指定为ext4,但是由于该卷包含许多重要数据,因此无法通过$ sudo mkfs -t ext4 /dev/xvdf对其进行格式化。不过,我知道没有其他方法可以同时保存数据和指定文件系统。我已经搜索了很多有关此信息,但现在我很茫然。

    顺便说一句,以"只读"方式挂载也令我感到担忧,但由于我根本无法挂载该卷,因此我尚未对其进行研究。

    提前致谢!

    编辑:

    当我执行sudo mount /dev/xvdf /vol -t ext4(不格式化)时,我得到:

    1
    2
    3
    4
    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

    dmesg | tail给我:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [ 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


    一线

    ??挂载分区(如果磁盘已分区):

    1
    sudo mount /dev/xvdf1 /vol -t ext4

    挂载磁盘(如果未分区):

    1
    sudo mount /dev/xvdf /vol -t ext4

    哪里:

    • /dev/xvdf更改为要安装的EBS Volume设备
    • /vol更改为您要挂载的文件夹。
    • ext4是要挂载的卷的文件系统类型

    常见错误:

    ??附加设备列表

    检查您的安装命令以获取正确的EBS卷设备名称和文件系统类型。以下将全部列出:

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

    如果您的EBS卷显示带有附加的partition,请安装partition;否则,请安装partition。不是磁盘。

    ??如果您的音量未列出

    如果未显示,则您没有在AWS Web-Console中Attach您的EBS卷

    ??重新启动时自动重新安装

    如果EC2实例重新启动,这些设备将再次卸载。

    使它们在启动时再次安装的一种方法是将卷添加到服务器的/etc/fstab文件中。

    ??警告:??
    如果损坏了/etc/fstab文件,它将使系统无法启动。阅读AWS的简短文章,以便您了解自己是否做对了。

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

    第一:
    使用上面的lsblk命令,找到卷的UUIDFSTYPE

    第二:
    保留原始fstab文件的副本。

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

    第三:
    sudo nano /etc/fstab中为该卷添加一行。

    fstab的字段是"制表符分隔的",并且每一行都有以下字段:

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

    这是一个帮助您的示例,我自己的fstab内容如下:

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

    就是这样,您完成了。通过运行以下命令检查工作中的错误:

    1
    sudo mount --all --verbose

    如果事情是??,您将看到类似这样的内容:

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


    我注意到由于某种原因该卷位于/dev/xvdf1而不是/dev/xvdf

    使用

    1
    sudo mount /dev/xvdf1 /vol -t ext4

    像魅力一样运作


    在添加新的16GB卷并将其附加到现有实例后,我也遇到了此问题。首先,您需要知道所拥有的磁盘

    1
      sudo fdisk -l

    您将获得一个输出,如下所示,该输出详细说明了有关磁盘(卷)的信息。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     Disk /dev/xvda: 12.9 GB, 12884901888 bytes
      255 heads, 63 sectors/track, 1566 cylinders, total 25165824 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
      Disk identifier: 0x00000000

    Device Boot      Start         End      Blocks   Id  System
    /dev/xvda1   *       16065    25157789    12570862+  83  Linux

     Disk /dev/xvdf: 17.2 GB, 17179869184 bytes
     255 heads, 63 sectors/track, 2088 cylinders, total 33554432 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
     Disk identifier: 0x00000000

     Disk /dev/xvdf doesn't contain a valid partition table

    如您所见,存在新添加的磁盘/ dev / xvdf。要使其可用,您需要在其上创建一个文件系统并将其挂载到挂载点。您可以使用以下命令来实现

    1
     sudo mkfs -t ext4 /dev/xvdf

    制作新的文件系统会清除卷中的所有内容,因此请在没有重要数据的情况下在新卷上执行此操作

    然后将其挂载在/ mnt文件夹下的目录中

    1
     sudo mount /dev/xvdf /mnt/dir/

    通过运行以下命令确认已将卷安装到实例

    1
      df -h

    这就是你应该拥有的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Filesystem      Size  Used Avail Use% Mounted on
     udev            486M   12K  486M   1% /dev
     tmpfs           100M  400K   99M   1% /run
     /dev/xvda1       12G  5.5G  5.7G  50% /
     none            4.0K     0  4.0K   0% /sys/fs/cgroup
     none            5.0M     0  5.0M   0% /run/lock
     none            497M     0  497M   0% /run/shm
     none            100M     0  100M   0% /run/user
     /dev/xvdf        16G   44M   15G   1% /mnt/ebs

    就是这样,您已将要使用的卷连接到现有实例。
    信用


    我遇到了这个问题,现在我明白了,

    1
    2
    3
    4
    5
    6
    [ec2-user@ip-172-31-63-130 ~]$ lsblk
    NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0   8G  0 disk
    └─xvda1 202:1    0   8G  0 part /
    xvdf    202:80   0   8G  0 disk
    └─xvdf1 202:81   0   8G  0 part

    您应该安装partition

    /dev/xvdf1 (which type is a partition)

    没有安装disk

    /dev/xvdf (which type is a disk)


    我有不同的问题,在这里,当我签入dmesg日志时,问题是现有根卷的UUID和另一个ec2的根卷的UUID相同。因此,要解决此问题,我将其安装在另一种Linux类型的ec2上。有效。


    您无需根据快照创建新创建的卷的文件系统,只需附加卷并将其安装到所需的文件夹中即可。我已将新卷附加到以前删除的卷的相同位置,并且工作正常。

    1
    2
    3
    4
    5
    [ec2-user@ip-x-x-x-x vol1]$ sudo lsblk
    NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0   8G  0 disk
    └─xvda1 202:1    0   8G  0 part /
    xvdb    202:16   0  10G  0 disk /home/ec2-user/vol1