linux - 将现有 EBS 卷附加和挂载到 EC2 实例文件系统问题

标签 linux ubuntu amazon-web-services amazon-ec2 amazon-ebs

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

  1. 从旧卷的快照创建了一个新卷。
  2. 创建了一个新的 EC2 实例并将卷作为 /dev/xvdf(或 /dev/sdf)附加到它
  3. 通过 SSH 连接到实例并尝试使用以下命令挂载旧卷:

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

输出是:

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 (无格式),我会得到:

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 |尾部给我:

[ 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

顺便说一句,'mounting read-only' 消息也让我担心,但我还没有研究它,因为我根本无法安装卷。

提前致谢!

最佳答案

一个类轮


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

sudo mount /dev/xvdf1 /vol -t ext4

挂载磁盘(如果没有分区):

sudo mount /dev/xvdf /vol -t ext4

地点:

  • /dev/xvdf 改为 EBS Volume device 正在挂载
  • /vol 更改为您要挂载到的文件夹
  • ext4 是要挂载的卷的文件系统类型

常见错误方法:


✳️ 附加设备列表

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

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

如果您的 EBS 卷显示带有附加的 partition,请挂载 partition;不是磁盘。


✳️ 如果您的音量未列出

如果未显示,则说明您没有在 AWS 网络控制台中附加您的 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 文件的副本。

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

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

fstab 的字段是“制表符分隔”的,每一行都有以下字段:

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

这里举个例子来帮助你,我自己的fstab如下:

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

就是这样,你完成了。通过运行检查工作中的错误:

sudo mount --all --verbose

如果是 👍,你会看到类似的东西:

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

关于linux - 将现有 EBS 卷附加和挂载到 EC2 实例文件系统问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792272/

相关文章:

c++ - 如何检查大型 C++ Linux 应用程序中的内存泄漏?

mysql - 将 mysql 数据库从 linux 移动到 windows

linux - lsof 可以显示 alpine linux 上的开放端口吗?

带有 Upstart 和系统日志的 Ubuntu docker 容器

html - Linux busybox shell脚本html格式化

linux - 如何在启动 Linux 脚本时按名称设置多个变量输入

linux - 可移植的 bourne shell 脚本,无需使用 bash、ksh、zsh 等现代 shell 的功能

javascript - Node.js 脚本工作一次,然后失败

amazon-web-services - 增加 EC2 磁盘存储而不丢失任何数据

python - 如何使用 GET 请求将参数传递给 AWS Lambda 函数?