故障处理
分类:电脑系统

1.使用parted工具读取磁盘分区表信息

# 我在阿里云控制台扩展的分区大小为1024GB

parted /dev/vdb

扩展原有磁盘

情景:磁盘扩容(不是新增一块硬盘)后,系统未能马上利用。

[root@aliyunsrv ~]# e2fsck -f /dev/vdb1 
e2fsck 1.41.12 (17-May-2010)
e2fsck: Superblock invalid, trying backup blocks...
e2fsck: Bad magic number in super-block while trying to open /dev/vdb1

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

主分区与扩展分区,MBR与GPT

硬盘的第一个扇区(第0扇区)用来存放主引导记录(MBR),也称MBR扇区。一个扇区是512字节,因此MBR扇区的大小也是512字节,其具体数据结构是:446个字节的引导代码、64个字节的分区表及2个字节的签名值"55AA"。由于MBR的分区表只有64个字节,一个分区需要16Bytes空间来存储相关信息,所以分区表只能存储4个分区记录。

主分区(注意扩展分区也是一个主分区)的最大个数是四,当创建四个主分区时,就无法再创建扩展分区。

为了突破四个主分区的限制,更好规划磁盘空间大小,Linux系统引入了扩展分区的概念(类似把主分区进行细分,衍生出二级分区表)。管理员可以把其中一个主分区设置为扩展分区(注意只能够使用一个扩展分区)来进行扩充。扩展分区无法直接使用,必须细分成逻辑分区才可以用来存储数据。

MBR分区格式的最大分区为2TB,GPT分区没有2TB的限制,理论上最大分区为18EB。如果要创建大于2TB的GPT分区,就不能使用MBR 格式的分区表,需要使用linux 下的Parted分区工具。

4.重新创建新的分区表

这里需要注意的是parted工具里END的值,由于磁盘的扇区数量不容易确定,可以使用容量来替代

[root@aliyunsrv ~]# parted /dev/vdb
GNU Parted 2.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 1100GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  537GB  537GB  primary  ext4          # 重新打开后发现分区表的显示格式有变化,但并不影响,同时也可以看出来是以前的分区表(未扩容前)

(parted) rm 1                            # 删除旧的分区表
(parted) p                                                  
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 1100GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End  Size  Type  File system  Flags

(parted) unit s
(parted) mkpart primary ext4 2048 1099GB            # 创建新的分区表,注意要使用前文获取的扇区起始位置2048
(parted) p                                                                
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2147483648s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End          Size         Type     File system  Flags
 1      2048s  2146484223s  2146482176s  primary  ext4   # 新的分区表

(parted) q
Information: You may need to update /etc/fstab.                           

此时新的分区表就创建成功了,需要注意:是使用的parted工具创建的分区表!!!

如果想使用fdisk进行分区,可以在fdisk中使用2048起始扇区进行测试,注意数据备份!!!

[root@aliyunsrv ~]# e2fsck -f /dev/vdb1 
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vdb1: 237246/32768000 files (75.3% non-contiguous), 112383325/131071744 blocks

可以正常执行检查文件系统的操作

[root@aliyunsrv ~]# resize2fs /dev/vdb1 
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vdb1 to 268310272 (4k) blocks.
The filesystem on /dev/vdb1 is now 268310272 blocks long.

可以正常执行确认变更文件系统大小的操作,执行完即可挂在使用

最后使用工具检查分区表状态,供参考

[root@aliyunsrv ~]# parted /dev/vdb     
GNU Parted 2.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 1100GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1099GB  1099GB  primary  ext4

fdisk工具查看的信息

[root@aliyunsrv ~]# fdisk -l

Disk /dev/vda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 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: 0x00078f9c

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        6527    52426752   83  Linux

Disk /dev/vdb: 1099.5 GB, 1099511627776 bytes
255 heads, 63 sectors/track, 133674 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: 0x000ead8a

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1      133613  1073241088   83  Linux

附上提供帮助老铁的文章链接:

完毕,呵呵呵呵

逻辑卷缩容

Step 1 卸载lv分区
umount /root/aze

Step 2 检查磁盘错误
e2fsck -f /dev/vgaze/lvaze

Step 3 重设文件系统大小
resize2fs /dev/vgaze/lvaze 200M

Step 4 缩减lv大小
lvreduce -L 200M /dev/vgaze/lvazelvresize -L 10G /dev/vgaze/lvazelvresize -L -30g /dev/vgaze/lvaze

Step 5 挂载分区
mount /root/aze

由此其实可以推测出阿里云的磁盘扩容最近可能出问题了,之前分区我写的必定是1,但是扩容后就变了,这个应该是导致这个问题的原因

逻辑卷扩缩容

2.删除旧的错误分区表

# 在parted交互式分区工具中执行

(parted) rm 1

注意:分区表用parted工具删除后无法直接使用fdisk进行分区

逻辑卷扩容

Step 1 新增硬盘创建物理卷(先fdisk)
pvcreate /dev/sdc1

Step 2 物理卷加入卷组
vgextend /dev/vgaze /dev/sdb1

Step 3 卸载
umount /dev/vgaze/lvaze

Step 4 扩展lv
lvextend -L +1024M /dev/vgaze/lvazelvresize -L 40G /dev/vgaze/lvazelvresize -L +20G /dev/vgaze/lvaze

Step 5 检查磁盘错误,等待时间较长可以考虑跳过(挂载状态无法检查)
e2fsck -f /dev/vgaze/lvaze

Step 6 重设文件系统大小
resize2fs /dev/vgaze/lvaze

Step 7 挂载
mount -t ext2 /dev/vgaze/lvaze /root/aze

[root@aliyunsrv ~]# fdisk -l

Disk /dev/vda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 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: 0x00078f9c

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        6527    52426752   83  Linux

Disk /dev/vdb: 536.9 GB, 536870912000 bytes
2 heads, 10 sectors/track, 52428800 cylinders
Units = cylinders of 20 * 512 = 10240 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x63c3e6e0

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1             103    52428800   524286976   83  Linux        # 分区起始位置在103,很重要,需要确定

/etc/fstab内容介绍

/etc/fstab文件内容有6列:
<file system> <dir> <type> <options> <dump> <pass>

/dev/vgaze/lvaze /root/aze ext3 defaults 0 2

第一列<file system>:磁盘/LV的路径或UUID
第二列<dir>:挂载点目录
威尼斯手机娱乐官网 ,第三列<type>:磁盘文件系统的格式
第四列<options>:文件系统参数,defaults,等于rw, suid, dev, exec, auto, nouser, async。
第五列<dump>:dump utility根据此值决定是否备份,如果值为0,dump忽略此文件系统,如果是1,dump会对此系统作一个备份。大部分用户没有安装dump,所以这个值应该写为0。
第六列:是否用fsck检验文件系统完整性,值可以是0,1和2。 值为0,则不会被fsck utility检查。值为1,拥有fsck检查的最高优先级,root文件系统应该拥有最高的优先权。其它文件系统,如果想用fsck检查,则值为2。

提阿里云工单得到的结果是用testdisk进行数据恢复,显然这个不是我要的方法,这个只是分区表损坏,数据并没有丢,处理好分区表即可。

不使用LVM

  • Step 1 分区fdisk
  • Step 2 创建文件系统mkfs
  • Step 3 挂载mount
  • Step 4 更新/etc/fstab

在网上找到的其他老铁的解决思路尝试可以解决,现在重新整理下供大家参考

新建

Step 1 物理分区fdisk
使用fdisk命令创建新分区,并使用fdisk的t命令修改分区类型为8e(lvm类型)。默认分区id都是83,即linux文件类型,文件类型ID为82,则为交换分区swap。

fdisk -l
fdisk /dev/sdb //分区后重启linux(或执行partprobe,不需重启即可通知内核)。

fdisk /dev/sdb
Command (m for help): n # 输入n新建一个分区
Command action
e extended
p primary partition (1-4)
p # 输入p新建一个主分区
Partition number (1-4): 1 # 分区号
First cylinder (1-1044, default 1): 直接回车,使用默认的起始柱面
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +32G # 大小,如果直接回车,使用默认截止柱面,那对于这块硬盘,只建立一个分区,大小是整个磁盘。
Command (m for help): t # 改变类型
Selected partition 1
Hex code (type L to list codes): 8e # LVM 的分区代码;默认分区id都是83,即linux文件类型;文件类型ID为82,则为交换分区swap。
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w # 输入w, 保存分区表并退出

或者上面不执行,直接使用整块盘,后续/dev/sdb1替换为/dev/sdb。

Step 2 创建PV pvcreate
物理磁盘被格式化为PV,空间被划分为一个个PE,每个默认大小是4MB。

pvcreate /dev/sdb1

提示没有此命令,则需要按照最后的指导安装lvm。

Step 3 新建vgcreate
新建

vgcreate vgaze /dev/sdb1 /dev/sdb2  //新建卷组,dev下会多处一个名为vgaze的目录。

Step 4 新建lvcreate
LV实际由LE组成,LE与PE一一对应,LV大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘。
新建

lvcreate -n lvaze  -L 256M vgaze //在卷组vgaze中建立名为lvaze的逻辑卷,目录vgaze中会多一个名为lvaze的符号链接。
lvdisplay

Step 5 创建文件系统

mkfs -t ext3 /dev/vgaze/lvaze //在lv上创建文件系统

Step 6 挂载

mkdir /root/aze //创建挂载点
mount  /dev/vgaze/lvaze /root/aze //挂载文件系统

Step 7 更新/etc/fstab
内核启动过程会读取/etc/fstab配置文件来自动挂载磁盘,把LVM创建的逻辑卷挂载信息写入这个文件,就不需要在开机后手动挂载。

# 执行vi /etc/fstab命令,在最后追加一行。
/dev/vgaze/lvaze    /root/aze    ext3    defaults    0    2
执行:wq!保存退出

测试开机自动挂载

mount -a
df -h

本文由威尼斯手机娱乐官网发布于电脑系统,转载请注明出处:故障处理

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文