AZURE云上 mkfs.ext4 /dev/sdc 导致宕机问题解决纪实

本文解决Azure虚拟机上因磁盘未正确分区导致的mkfs.ext4操作失败问题,通过fdisk进行磁盘分区并初始化,最终成功挂载磁盘并配置启动加载,为安装Oracle数据库做好准备。

1、mkfs.ext4后down机

Azure上新建的vm,准备安装oracle数据库,但是挂载的磁盘,初始化后,直接down机了,如下图,失去连接,xshell窗口直接断开退出了。看下面图片

021.png

 

尝试过一下办法:

 

(1)      azure管理界面,重启vm,再来一遍,还是down机。

(2)      删除这台vm,重建一台新的vm,还是一样只要执行mkfs.ext4 /dev/sdc直接down机。

(3)      在别的区建vm,不在东区建在北区建,还是一样。

 

 

2、问题分析

以前附加的磁盘,直接mkfs.ext4 /dev/sdc就可以了,现在为啥不行?去fdisk看磁盘信息:

(1)现在的fdisk –l中的/dev/sdc信息:

Disk /dev/sdc: 1098.4 GB, 1098437885952 bytes

255 heads, 63 sectors/track, 133544 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

 

(2)以前的fdisk –l中的/dev/sdc信息:

Disk /dev/sdd: 1073.7 GB, 1073741824000 bytes

255 heads, 63 sectors/track, 130541 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

 

看到多了“Disk identifier: 0x00000000”信息,正式因为多了这个Disk identifier,才能直接进行mkfs.ext4了。

 

经过google之后,发现Disk identifier需要先分好区才会有,所以新的/dev/sdc磁盘不能直接mkfs.ext4的原因是还没有分好区,要用fdisk分好区之后,再能进行初始化操作。

 

3、fdisk磁盘分区

用fdisk进行磁盘分区:

[root@pldb2 ~]# fdisk /dev/sdc

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel with disk identifier 0xd788cc0a.

Changes will remain in memory only, until you decide to write them.

After that, of course, the previous content won't be recoverable.

 

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

 

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

         switch off the mode (command 'c') and change display units to

         sectors (command 'u').

 

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-133544, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-133544, default 133544):

Using default value 133544

 

Command (m for help): m

Command action

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition

   l   list known partition types

   m   print this menu

   n   add a new partition

   o   create a new empty DOS partition table

   p   print the partition table

   q   quit without saving changes

   s   create a new empty Sun disklabel

   t   change a partition's system id

   u   change display/entry units

   v   verify the partition table

   w   write table to disk and exit

   x   extra functionality (experts only)

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

[root@pldb2 ~]#

 

 

再次查看,会有Disk identifier信息了,也有了新的分区/dev/sdc1,如下:

[root@pldb2 ~]# fdisk -l

 

Disk /dev/sda: 32.2 GB, 32212254720 bytes

255 heads, 63 sectors/track, 3916 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x000c23d3

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1        3789    30432256   83  Linux

/dev/sda2            3789        3917     1024000   82  Linux swap / Solaris

 

Disk /dev/sdb: 240.5 GB, 240518168576 bytes

255 heads, 63 sectors/track, 29241 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x40a7f99c

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1       29242   234879936   83  Linux

Disk /dev/sdc: 1098.4 GB, 1098437885952 bytes

255 heads, 63 sectors/track, 133544 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0xd788cc0a

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdc1               1      133544  1072692148+  83  Linux

 

 

 

 

4、mkfs.ext4进行分区初始化

# 使用 mkfs.ext4 命令格式化磁盘成格式化成ext4各式的文件系统。

[root@pldb2 ~]# mkfs.ext4 /dev/sdc1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

67043328 inodes, 268173037 blocks

13408651 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=4294967296

8184 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

         32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

         4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

         102400000, 214990848

 

Writing inode tables: done                           

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 27 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@pldb2 ~]#

 

 

如下图所示:

 

22.png

 

 

5、挂载磁盘添加启动加载

(1)开始挂载新的分区磁盘到/oracle

[root@pldb2 ~]# mkdir /oracle

[root@pldb2 ~]# mount /dev/sdc1 /oracle

[root@pldb2 ~]#

 

(2)开机启动挂载配置

[root@pldb2 ~]# vim /etc/fstab

You have new mail in /var/spool/mail/root

[root@pldb2 ~]# more /etc/fstab

 

#

# /etc/fstab

# Created by anaconda on Wed Jan 15 04:45:47 2014

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=6d089360-3e14-401d-91d0-378f3fd09332 /                       ext4    defaults        1 1

/dev/sdc1                /oracle                   ext4    defaults        1 2

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

[root@pldb2 ~]#

 

 

 

OK,磁盘已经准备好了,可以正常安装oracle数据库了。

<think>好的,用户现在在Ubuntu系统下已经成功使用mkfs.xfs格式化了/dev/vdb,并创建了挂载点/mnt/data,然后手动挂载了设备。现在他们希望配置开机自动挂载,需要指导如何操作。 首先,我需要回忆Linux中开机自动挂载的方法。通常是通过编辑/etc/fstab文件来实现的。用户可能对fstab的格式不太熟悉,需要详细说明每一步骤。 接下来,要考虑如何获取/dev/vdb的正确文件系统类型和UUID。虽然用户已经格式化为XFS,但建议使用UUID而不是设备名,因为设备名可能会变化。使用blkid命令可以获取UUID。 然后,需要指导用户备份当前的fstab文件,这是一个重要的安全步骤,防止配置错误导致系统无法启动。需要提醒用户小心操作。 接下来是编辑fstab文件,添加新的挂载项。需要解释每一列的含义,比如UUID、挂载点、文件系统类型、挂载选项、dump和fsck顺序。特别是XFS文件系统的fsck处理,可能需要说明用0即可。 然后,用户添加完配置后,需要测试配置是否正确。使用mount -a命令来重新挂载所有fstab中的条目,如果没有报错,说明配置正确。如果有错误,需要及时处理,否则可能导致系统启动问题。 另外,可能需要注意用户的权限问题,是否需要使用sudo来执行这些命令。同时,提醒用户如果遇到问题,如何恢复,比如进入救援模式或者使用Live CD修改fstab。 可能还需要提到,如果用户使用的是服务器,比如AWS或Azure,可能需要额外的步骤,比如确保实例重启后存储卷仍然正确附加。不过用户的问题中没有提到环境,可能暂时不需要涉及。 最后,总结步骤,确保用户能够一步步跟随操作,避免遗漏关键点。同时,强调备份的重要性,以及测试的必要性,防止配置错误影响系统启动。</think>--- ### **Ubuntu 配置开机自动挂载步骤** 要在 Ubuntu 系统中实现 `/dev/vdb` 开机自动挂载到 `/mnt/data`,需通过修改 **`/etc/fstab`** 文件完成。以下是详细操作流程: --- ### **1. 确认文件系统信息** 首先验证 `/dev/vdb` 的文件系统类型和 UUID(建议优先使用 UUID,避免设备名变化导致挂载失败): ```bash sudo blkid /dev/vdb ``` 输出示例: ```bash /dev/vdb: UUID="a1b2c3d4-5678-90ef" TYPE="xfs" ``` 记录 **`UUID`** 和 **`TYPE`** 值(此处为 `xfs`)。 --- ### **2. 备份当前 fstab 文件** 为防止配置错误,务必先备份: ```bash sudo cp /etc/fstab /etc/fstab.bak ``` --- ### **3. 编辑 `/etc/fstab` 文件** 使用 `nano` 或 `vim` 编辑文件: ```bash sudo nano /etc/fstab ``` 在文件末尾添加一行挂载配置: ```bash UUID=a1b2c3d4-5678-90ef /mnt/data xfs defaults 0 0 ``` #### **参数解释**: | 字段 | 说明 | |---------------|----------------------------------------------------------------------| | `UUID=...` | 设备的唯一标识符(替换为实际值) | | `/mnt/data` | 挂载点目录 | | `xfs` | 文件系统类型(与 `blkid` 输出的 `TYPE` 一致) | | `defaults` | 挂载选项(默认包含读写、执行权限等) | | `0` | 不启用 `dump` 备份工具 | | `0` | 禁用 `fsck` 启动检查(XFS 文件系统通常无需启动检查) | --- ### **4. 测试 fstab 配置** 为避免系统启动失败,需验证配置是否正确: ```bash sudo mount -a ``` - **无报错**:表示配置成功。 - **报错**:立即修正 `/etc/fstab`,否则重启后可能无法进入系统! --- ### **5. 验证挂载结果** 检查设备是否已挂载: ```bash df -hT | grep /mnt/data ``` 输出示例: ```bash /dev/vdb xfs 50G 1.2G 49G 3% /mnt/data ``` --- ### **6. 可选:挂载点权限配置** 若需自定义目录权限,可修改挂载点属性: ```bash sudo chmod 755 /mnt/data # 设置目录权限 sudo chown user:group /mnt/data # 设置所有者和组(替换 user:group) ``` --- ### **操作流程图** ```plaintext 1. 获取 UUID → blkid /dev/vdb 2. 备份 fstab → cp /etc/fstab /etc/fstab.bak 3. 编辑 fstab → 添加 UUID、挂载点、文件系统类型 4. 测试配置 → mount -a 5. 验证结果 → df -hT ``` --- ### **注意事项** 1. **强制使用 UUID**: - 设备名(如 `/dev/vdb`)可能因硬件变动(如插拔磁盘)发生变化,而 UUID 是固定且唯一的。 2. **XFS 文件系统特性**: - XFS 不支持 `fsck` 检查,因此 `fstab` 最后一列应设为 `0`。 3. **服务器场景**: - 若在 AWS/Azure平台中,需确保实例重启后存储卷仍正确附加,否则需调整服务配置。 --- ### **故障排查** - **系统启动失败**: 若因 `/etc/fstab` 错误导致无法启动,可进入 **Recovery Mode** 或使用 **Live CD** 修复文件。 - **挂载失败常见原因**: - 挂载点目录未创建 → 执行 `mkdir -p /mnt/data` - UUID 输入错误 → 重新核对 `blkid` 输出 - 文件系统损坏 → 使用 `xfs_repair /dev/vdb` 修复 通过上述步骤,即可实现 `/dev/vdb` 的持久化挂载。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值