簡體   English   中英

將現有 EBS 卷附加和掛載到 EC2 實例文件系統問題

[英]Attaching and mounting existing EBS volume to EC2 instance filesystem issue

我的舊 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 | tail 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 Volume設備
  • /vol更改為您要掛載到的文件夾
  • ext4是正在掛載的卷的文件系統類型

常見錯誤如何:


✳️ 附加設備列表

檢查您的 mount 命令以獲取正確的 EBS 卷設備名稱文件系統類型 以下將全部列出:

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

如果您的 EBS 卷顯示帶有附加partition ,請掛載該partition 不是磁盤。


✳️ 如果您的音量未列出

如果它沒有顯示,您沒有在 AWS Web 控制台中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文件的副本。

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

在添加新的 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

就是這樣,您將在那里使用的卷附加到您的現有實例。 信用

我注意到由於某種原因該卷位於/dev/xvdf1 ,而不是/dev/xvdf

使用

sudo mount /dev/xvdf1 /vol -t ext4

像魅力一樣工作

遇到了這個問題,現在搞定了

[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(分區類型)

不掛載disk

/dev/xvdf(磁盤類型)

我有不同的問題,在這里當我檢查 dmesg 日志時,問題是現有根卷的 UUID 和另一個 ec2 的根卷的 UUID 相同。 所以為了解決這個問題,我將它安裝在另一種 Linux 類型的 ec2 上。 有效。

對我來說,安裝卷時出現重復的 UUID 錯誤,所以我使用了“-o nouuid”選項。

例如 mount -o nouuid /dev/xvdf1 /mnt

我從系統日志中找到了線索,在 CentOs 上,/var/log/messages 並發現了錯誤:內核:XFS (xvdf1): Filesystem has duplicate UUID f41e390f-835b-4223-a9bb-9b45984ddf8d - can't mount

首先運行以下命令

lsblk /dev/xvdf

輸出將如下所示

名稱 MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

xvdf 202:80 0 10G 0 磁盤

├─xvdf1 202:81 0 1M 0 部分

└─xvdf2 202:82 0 10G 0 部分

然后,檢查尺寸,然后安裝它。 在上述情況下,像下面這樣安裝它

掛載 /dev/xvdf2 /文件夾名

您不需要從快照創建新創建的卷的文件系統。只需附加卷並將卷掛載到您想要的文件夾。 我已將新卷附加到先前刪除卷的同一位置,並且工作正常。

[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

我通常通過在創建 ext4 FS 時預先定義 UUID 來堅持,我在用戶數據上添加一個腳本並啟動實例,工作得很好,沒有任何問題:

前腳本:

#!/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 -f”命令檢查文件系統類型,在我的例子中是“XFS”

#lsblk -f
NAME    FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
xvda
├─xvda1
├─xvda2 vfat   FAT16 EFI   31C3-C85B                              17.1M    14% /boot/efi
└─xvda3 xfs          ROOT  6f6ccaeb-068f-4eb7-9228-afeb8e4d25df    7.6G    24% /
xvdf
├─xvdf1
├─xvdf2 vfat   FAT16 EFI   31C3-C85B
└─xvdf3 xfs          ROOT  6f6ccaeb-068f-4eb7-9228-afeb8e4d25df    5.4G    46% /mnt/da

根據文件系統類型修改您的命令。

mount -t xfs -o nouuid /dev/xvdf3 /mnt/data/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM