记录磁盘挂载的坑和parted工具使用

世上本没有坑,掉进去的人多了,也就有了坑。

Posted by zhangshun on June 27, 2019

前言

由于公司业务数据增长,需要给5台服务器新加磁盘,其中有几台服务器重启后连不上并且数据也对不上,真相竟是……

操作过程

由于机房托管在idc机房,跟机房人员约定下午1点开始操作,操作时一切正常,直到机器重启后,发现之前使用的磁盘与挂载的目录不匹配,比如说:重启前为 /dev/sdb1————»/data、/dev/sdc1————»/log,重启后在data、log目录下面的数据都错乱了

原因:在/etc/fstab里记录了,设备文件与目录的映射关系

1
2
/dev/sdb1	/data	ext4	defaults	0 0
/dev/sdc1	/log	ext4	defaults	0 0

当机器新增磁盘时,会打乱设备文件,可能之前的/dev/sdb就变成了/dev/sdc或者变为其他的设备文件,挂载后的目录是乱的,所以显示的数据是错乱的

在/etc/fstab中,不能写设备文件,一定要写设备的uuid,防止新增磁盘后设备文件错乱

在/etc/fstab中,不能写设备文件,一定要写设备的uuid,防止新增磁盘后设备文件错乱

在/etc/fstab中,不能写设备文件,一定要写设备的uuid,防止新增磁盘后设备文件错乱

Tips

lsblk命令:显示当前块设备

1
2
3
4
5
6
7
8
9
10
11
12
13
root@localhost:/home/zhangshun# lsblk 
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   1.7T  0 disk 
└─sda1   8:1    0   1.7T  0 part /data1
sdb      8:16   0 278.9G  0 disk 
├─sdb1   8:17   0   953M  0 part /boot
├─sdb2   8:18   0  59.6G  0 part [SWAP]
└─sdb3   8:19   0 218.3G  0 part /
sdc      8:32   0   1.1T  0 disk 
└─sdc1   8:33   0   1.1T  0 part /data
sdd      8:48   0   1.1T  0 disk 
└─sdd1   8:49   0   1.1T  0 part /log
sr0     11:0    1  1024M  0 rom

blkid命令:显示块设备的uuid等信息

1
2
3
4
5
6
7
root@localhost:/home/zhangshun# blkid 
/dev/sda1: UUID="13a8072b-749f-4f7b-9aed-c666d134296e" TYPE="ext4" PARTUUID="3e21f350-01"
/dev/sdb1: UUID="7436a2fa-eac4-4e80-aeae-fedacfe94ca9" TYPE="ext4" PARTUUID="000172ce-01"
/dev/sdb2: UUID="b1f75951-1904-456f-a44a-06e14d72d7c4" TYPE="swap" PARTUUID="000172ce-02"
/dev/sdb3: UUID="39c50f70-6228-4ba9-b04f-322ac746773d" TYPE="ext4" PARTUUID="000172ce-03"
/dev/sdc1: UUID="b180efc0-cbbc-43b4-b465-c9f7c534b25f" TYPE="ext4" PARTUUID="e44b8cb7-01"
/dev/sdd1: UUID="52397887-c350-4463-b9d0-34861ad6969f" TYPE="ext4" PARTUUID="1c087b62-01"

parted工具使用


之前操作磁盘一般都低于2T,所以parted使用的不多,每次用都要现搜资料,这次记录一下,方便以后使用
parted命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,用于操作大于2T的磁盘,与fdisk不同,它支持调整分区的大小。
作为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型,但是,它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区。

1
2
3
4
5
6
7
    用法:parted [选项]... [设备 [命令 [参数]...]...]
        parted /dev/sdb mklabel gpt|msdos  创建/dev/sdb磁盘类型为gpt|msdos(2T以上建议用gpt)
        parted /dev/sdb print  显示、dev/sdb磁盘类型
        parted /dev/sdb mkpart primary 1 200 (默认M)  创建/dev/sdb设备的主分区为从1-200M
        parted /dev/sdb mkpart primary 1000 2000 (默认为M)创建主分区大小从1000M到2000M区间     
        parted /dev/sdb rm 1 删除sdb的第一个分区   
        parted -l 列出磁盘的信息