将现有 EBS 卷附加和安装到 EC2 实例文件系统问题
Attaching and mounting existing EBS volume to EC2 instance filesystem issue
我的旧 EC2 实例有一些未知问题,因此我无法再通过 ssh 进入它。因此,我试图从旧卷的快照创建一个新的 EBS 卷并将其装载到新实例中。这正是我所做的:
- 从旧卷的快照创建了一个新卷。
- 创建了一个新的 EC2 实例并将卷附加到它作为
/dev/xvdf
(或 /dev/sdf
)
通过 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 | tail
给我:
[ 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 卷 设备 正在安装
/vol
已更改为您要装载到的 文件夹。
ext4
是正在安装的卷的 文件系统类型
常见错误方法:
✳️ 附加设备列表
检查您的挂载命令以获得正确 EBS 卷设备名称和文件系统类型。以下将全部列出:
sudo lsblk --output NAME,TYPE,SIZE,FSTYPE,MOUNTPOINT,UUID,LABEL
如果您的 EBS 卷显示有附加的 partition
,请挂载 partition
;不是磁盘。
✳️ 如果您的音量未列出
如果没有显示,则表明您没有Attach
您在 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
命令,找到您的卷的 UUID
& FSTYPE
.
第二:
保留原始 fstab
文件的副本。
sudo cp /etc/fstab /etc/fstab.original
第三:
在 sudo nano /etc/fstab
中为音量添加一行。
fstab
的字段为'tab-separated',每行有以下字段:
<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
我注意到出于某种原因,卷位于 /dev/xvdf1
,而不是 /dev/xvdf
。
使用
sudo mount /dev/xvdf1 /vol -t ext4
工作得很好
我在添加新的 16GB 卷并将其附加到现有实例后也遇到了这个问题。首先你需要知道你有哪些磁盘
运行
sudo fdisk -l
您将得到如下所示的输出,详细说明有关您的磁盘(卷)的信息
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。要使其可用,您需要在其上创建文件系统并将其挂载到挂载点。您可以使用以下命令实现此目的
sudo mkfs -t ext4 /dev/xvdf
创建新文件系统会清除卷中的所有内容,因此请在没有重要数据的新卷上执行此操作
然后挂载到/mnt文件夹下的目录
sudo mount /dev/xvdf /mnt/dir/
通过运行
确认您已经将卷挂载到实例
df -h
这是你应该拥有的
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
就是这样,您已经有了附加到现有实例的卷。
credit
我遇到了这个问题,现在搞定了,
[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)
您不需要从 snapshot.simply 附加卷并将卷挂载到您想要的文件夹中来创建新创建的卷的文件系统。我已将新卷附加到先前删除的卷的相同位置并且工作正常。
[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
我有不同的问题,当我检查 dmesg 日志时,问题是现有根卷的 UUID 与另一个 ec2 的根卷的 UUID 相同。所以为了解决这个问题,我将它安装在另一种 Linux 类型的 ec2 上。有效。
我通常坚持在创建 ext4 FS 时预定义 UUID,我在用户数据上添加脚本并启动实例,工作正常,没有任何问题:
Ex 脚本:
#!/bin/bash
# Create the directory to be mounted
sudo mkdir -p /data
# Create file system with pre-defined & Label (edit the device name as needed)
sudo mkfs -U aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa -L DATA -t ext4 /dev/nvme1n1
# Mount
sudo mount /dev/nvme1n1 /data -t ext4
# Update the fstab to persist after reboot
sudo su -c "echo 'UUID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa /data ext4 defaults,discard,nofail 0 0' >> /etc/fstab"
对我来说,有一些神秘的文件导致了这个问题。
对我来说,我必须使用以下命令清除目录。
sudo mkfs -t ext3 /dev/sdf
警告:这可能会删除您保存的文件。因此,您可以 运行 ls
确保您不会丢失重要的已保存文件
命令
下的第一个 运行
lsblk /dev/xvdf
输出如下所示
名称MAJ:MIN RM 大小 RO 类型安装点
xvdf 202:80 0 10G 0 磁盘
├─xvdf1 202:81 0 1M 0 part
└─xvdf2 202:82 0 10G 0 部分
然后,检查大小,然后安装那个。
以上情况,如下挂载
挂载/dev/xvdf2 /文件夹名
对我来说,挂载卷时出现重复的 UUID 错误,所以我使用了“-o nouuid”选项。
例如mount -o nouuid /dev/xvdf1 /mnt
我从系统日志中找到了线索,在CentOs上,/var/log/messages发现了错误:
内核:XFS (xvdf1):文件系统具有重复的 UUID f41e390f-835b-4223-a9bb-9b45984ddf8d - 无法挂载
我的旧 EC2 实例有一些未知问题,因此我无法再通过 ssh 进入它。因此,我试图从旧卷的快照创建一个新的 EBS 卷并将其装载到新实例中。这正是我所做的:
- 从旧卷的快照创建了一个新卷。
- 创建了一个新的 EC2 实例并将卷附加到它作为
/dev/xvdf
(或/dev/sdf
) 通过 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 | tail
给我:
[ 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 卷 设备 正在安装/vol
已更改为您要装载到的 文件夹。ext4
是正在安装的卷的 文件系统类型
常见错误方法:
✳️ 附加设备列表
检查您的挂载命令以获得正确 EBS 卷设备名称和文件系统类型。以下将全部列出:
sudo lsblk --output NAME,TYPE,SIZE,FSTYPE,MOUNTPOINT,UUID,LABEL
如果您的 EBS 卷显示有附加的 partition
,请挂载 partition
;不是磁盘。
✳️ 如果您的音量未列出
如果没有显示,则表明您没有Attach
您在 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
命令,找到您的卷的 UUID
& FSTYPE
.
第二:
保留原始 fstab
文件的副本。
sudo cp /etc/fstab /etc/fstab.original
第三:
在 sudo nano /etc/fstab
中为音量添加一行。
fstab
的字段为'tab-separated',每行有以下字段:
<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
我注意到出于某种原因,卷位于 /dev/xvdf1
,而不是 /dev/xvdf
。
使用
sudo mount /dev/xvdf1 /vol -t ext4
工作得很好
我在添加新的 16GB 卷并将其附加到现有实例后也遇到了这个问题。首先你需要知道你有哪些磁盘 运行
sudo fdisk -l
您将得到如下所示的输出,详细说明有关您的磁盘(卷)的信息
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。要使其可用,您需要在其上创建文件系统并将其挂载到挂载点。您可以使用以下命令实现此目的
sudo mkfs -t ext4 /dev/xvdf
创建新文件系统会清除卷中的所有内容,因此请在没有重要数据的新卷上执行此操作
然后挂载到/mnt文件夹下的目录
sudo mount /dev/xvdf /mnt/dir/
通过运行
确认您已经将卷挂载到实例 df -h
这是你应该拥有的
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
就是这样,您已经有了附加到现有实例的卷。 credit
我遇到了这个问题,现在搞定了,
[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)
您不需要从 snapshot.simply 附加卷并将卷挂载到您想要的文件夹中来创建新创建的卷的文件系统。我已将新卷附加到先前删除的卷的相同位置并且工作正常。
[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
我有不同的问题,当我检查 dmesg 日志时,问题是现有根卷的 UUID 与另一个 ec2 的根卷的 UUID 相同。所以为了解决这个问题,我将它安装在另一种 Linux 类型的 ec2 上。有效。
我通常坚持在创建 ext4 FS 时预定义 UUID,我在用户数据上添加脚本并启动实例,工作正常,没有任何问题:
Ex 脚本:
#!/bin/bash
# Create the directory to be mounted
sudo mkdir -p /data
# Create file system with pre-defined & Label (edit the device name as needed)
sudo mkfs -U aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa -L DATA -t ext4 /dev/nvme1n1
# Mount
sudo mount /dev/nvme1n1 /data -t ext4
# Update the fstab to persist after reboot
sudo su -c "echo 'UUID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa /data ext4 defaults,discard,nofail 0 0' >> /etc/fstab"
对我来说,有一些神秘的文件导致了这个问题。
对我来说,我必须使用以下命令清除目录。
sudo mkfs -t ext3 /dev/sdf
警告:这可能会删除您保存的文件。因此,您可以 运行 ls
确保您不会丢失重要的已保存文件
命令
下的第一个 运行lsblk /dev/xvdf
输出如下所示
名称MAJ:MIN RM 大小 RO 类型安装点
xvdf 202:80 0 10G 0 磁盘
├─xvdf1 202:81 0 1M 0 part
└─xvdf2 202:82 0 10G 0 部分
然后,检查大小,然后安装那个。 以上情况,如下挂载
挂载/dev/xvdf2 /文件夹名
对我来说,挂载卷时出现重复的 UUID 错误,所以我使用了“-o nouuid”选项。
例如mount -o nouuid /dev/xvdf1 /mnt
我从系统日志中找到了线索,在CentOs上,/var/log/messages发现了错误: 内核:XFS (xvdf1):文件系统具有重复的 UUID f41e390f-835b-4223-a9bb-9b45984ddf8d - 无法挂载