fdisk分区、磁盘坏道检测

一、挂载问题的引入

我们大多数人用惯了windos系统,对linux系统中磁盘的管理就先入为主,不太好理解挂载这一动作。在linux系统中添加一块新磁盘后,要进行分区、格式化(分配文件系统)、挂载。当执行ll  /dev/sd* 时,可以看到相关的磁盘信息。大多数人会觉得硬盘添加,且分区、格式化了,可以用了。其实不然,还没有挂载好的硬盘就像新修的房子没有门一样,挂载就是将磁盘和某个文件夹捆绑在一起,做成一道磁盘的大门。

二、创建分区(MBR)

1.创建分区
# fdisk      /dev/sdb
n        //创建新分区
p        //主分区
1        //1号分区
回车    //起始扇区
+100M    //结束大小

e         //扩展分区

以上一路默认就行
w          //保存分区设置。
2.删除分区

# fdisk      /dev/sdb

d     //删除,会有相应选项

三、格式化

mkfs.ext4  /dev/sdb

四、挂载

1、手动挂载,重启失效

mount -t ext4  /dev/sdb1 /mnt/disk1

2、手动挂载,永久有效

vim /etc/fstab

/dev/sdb1     /mnt/disk1     ext4               defaults           0       0

/mnt/iso/rhel-server-6.4-x86_64-dvd.iso    /mnt/iso/ret6.4/     iso9660   defaults,loop 0 0

磁盘              挂载点       文件系统类型     默认选项 优先级 优先级

mount  -a (使永久挂载立即生效)

卸载一个正在使用的设备

fuser -km /mnt/hda2     #当设备繁忙时强制卸载

##延迟卸载
umount  -l 选择执行延迟卸载

查看当前系统mkfs命令支持的文件系统格式

sudo ls -l /usr/sbin/mkfs.*
-rwxr-xr-x. 1 root root 375240 8月   7 2017 /usr/sbin/mkfs.btrfs
-rwxr-xr-x. 1 root root  37080 10月 31 2018 /usr/sbin/mkfs.cramfs
-rwxr-xr-x. 4 root root  96384 10月 31 2018 /usr/sbin/mkfs.ext2
-rwxr-xr-x. 4 root root  96384 10月 31 2018 /usr/sbin/mkfs.ext3
-rwxr-xr-x. 4 root root  96384 10月 31 2018 /usr/sbin/mkfs.ext4
-rwxr-xr-x. 1 root root  28720 10月 31 2018 /usr/sbin/mkfs.fat
-rwxr-xr-x. 1 root root  37184 10月 31 2018 /usr/sbin/mkfs.minix
lrwxrwxrwx. 1 root root      8 10月 29 15:30 /usr/sbin/mkfs.msdos -> mkfs.fat
lrwxrwxrwx. 1 root root      8 10月 29 15:30 /usr/sbin/mkfs.vfat -> mkfs.fat
-rwxr-xr-x. 1 root root 368488 10月 31 2018 /usr/sbin/mkfs.xfs

挂载指定内存大小到  /run/shm下

/dev/shm 就是一个基于 tmpfs 的设备,在有些 Linux 发行版中 /dev/shm 是 /run/shm/ 目录的一个软链接。

tmpfs   /run/shm     tmpfs    defaults,noexec,nosuid,size=339G   0  0

4、自动挂载autofs

autofs自动挂载服务是一种Linux系统守护进程,当检测到用户视图访问一个尚未挂载的文件系统时,会自动挂载该文件系统。

/etc/fstab文件中的挂载,系统在每次开机时都会自动挂载,而autofs服务则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器硬件资源的开销。

yum -y install autofs

(1)在主配置文件里添加如下内容

vim /etc/auto.master
/media /etc/cdrom.misc

(2)在子配置文件中添加如下内容

子配置文件按照“挂载目录 挂载文件类型及权限 :设备名称”的格式进行填写。

vim /etc/cdrom.misc
cdrom -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom

(3)启动autofs服务,并加入开机启动项

systemctl start autofs
systemctl enable autofs

4、df  -hT查看挂载情况

5、用uuid挂载blkid 

6、“0 0 ” “0 1”的意思

第五个字段表示“指定分区是否被 dump 备份”,0 代表不备份,1 代表备份,2 代表不定期备份。

第六个字段表示“指定分区是否被 fsck 检测”,0 代表不检测,其他数字代表检测的优先级,1 的优先级比 2 高。所以先检测 1 的分区,再检测 2 的分区。一般分区的优先级是 1,其他分区的优先级是 2。

fsck(file system check)用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。

7、defaults,noatime,nodiratime

默认的方式下linux会把文件访问的时间atime做记录,文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳,比如:文件创建时间、最近一次修改时间和最近一次访问时间;这在绝大部分的场合都是没有必要的。
因为系统运行的时候要访问大量文件,如果能减少一些动作(比如减少时间戳的记录次数等)将会显著提高磁盘 IO 的效率、提升文件系统的性能。
如果遇到机器IO负载高或是CPU WAIT高的情况,可以尝试使用noatime和nodiratime禁止记录最近一次访问时间戳。

五、磁盘相关常用操作

1、查看设备文件(b)

#ll /dev/sd*

brw-rw---- 1 root disk 8, 0 Dec 27 23:01 /dev/sda

brw-rw---- 1 root disk 8, 16 Dec 27 23:01 /dev/sdb

2、查看磁盘是否格式化

法一:fdisk -l

法二:lsblk -pf

 ⚡ root@zjz  ~  lsblk -pf
NAME                    FSTYPE      LABEL                UUID                                   MOUNTPOINT
/dev/sda
├─/dev/sda1             vfat                             9433-38A9                              /boot/efi
├─/dev/sda2             xfs                              7d27d1b9-a8df-42df-8da0-f5469863569e   /boot
└─/dev/sda3             LVM2_member                      VlEjRN-Woeq-WBx4-aWoC-i911-cS1j-bmi6wB
  ├─/dev/mapper/rl-root xfs                              b6b16201-06d0-4240-a33d-ab4d99e04578   /
  └─/dev/mapper/rl-swap swap                             b7912c70-099e-4dcd-9cb9-487c3892a949   [SWAP]
/dev/sr0                iso9660     Rocky-8-6-x86_64-dvd 2022-05-15-21-06-32-00

3、blkid 查看磁盘的uuid

blkid  /dev/sda2
/dev/sda2: UUID="7d27d1b9-a8df-42df-8da0-f5469863569e" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="a776a277-683b-4aae-9502-8f743eb45d96"

4、赋予磁盘新的uuid

# uuidgen 7e931a41-fef8-4440-af03-22e0a580ae32 为块设备设置新的UUID: # tune2fs /dev/vde1 -U 7e931a41-fef8-4440-af03-22e0a580ae32 tune2fs 1.42.9 (28-Dec-2013)

5、硬盘自动分区,格式化,开机自动挂载到 /data

disk=/dev/sdc;\ bash -c "fdisk ${disk}<<End n p 1 wq End" ;\ mkfs.ext4 ${disk}1 ;\ blkid | grep ${disk}1 | cut -d ' ' -f 2 >>/etc/fstab ;\ sed -i '$ s/$/ \/data ext4 defaults 0 0/' /etc/fstab ;\ mkdir /data ;\ mount -a ;\ df -h

六、挂载移动硬盘

1. 下载ntfs-3g

ntfs-3g下载地址:http://www.linuxfromscratch.org/blfs/view/svn/postlfs/ntfs-3g.html

2. 上传到centos中,并且解压

tar -zxvf ntfs-3g_ntfsprogs-2017.3.23.tgz

3. 进入ntfs-3g_ntfprogs-2014.2.25目录,然后执行安装

./configure make && make install

4、挂载

mount -t ntfs-3g <NTFS Partition> <Mount Point> <NTFS Partition> <Mount Point> ntfs-3g silent,umask=0,locale=zh_CN.utf8 0 0

5、判断磁盘是hdd还是ssd

1、cat /sys/block/*/queue/rotational的返回值(其中*为你的硬盘设备名称,例如sda等等),如果返回1 则表示磁盘可旋转,那么就是HDD了;

2、lsblk 进行判断,参数-d表示显示设备名称,参数-o表示仅显示特定的列。

lsblk -o NAME,TYPE,ROTA

查看输出中的 ROTA 列。如果值为 1,则表示磁盘是 HDD;如果值为 0,则表示磁盘是 SSD。

七、判断磁盘是否坏道

1、 badblocks

命令用于检查磁盘装置中损坏的区块。

执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。

参数说明

  • -b<区块大小> 指定磁盘的区块大小,单位为字节。
  • -o<输出文件> 将检查的结果写入指定的输出文件。
  • -s 在检查时显示进度。
  • -v 执行时显示详细的信息。
  • -w 在检查时,执行写入测试。
  • [磁盘装置] 指定要检查的磁盘装置。
  • [磁盘区块数] 指定磁盘装置的区块总数。
  • [启始区块] 指定要从哪个区块开始检查。

通过命令扫描硬盘。

# badblocks -s -v /dev/sda2

Checking blocks 0 to 30681000
Checking for bad blocks (read-only test): 306809600674112/ 306810000000
30680964
30680965
30680966
30680967
30680968
30680969
30680970
30680971
30680972
30680973
...
done
Pass completed, 37 bad blocks found.其中,“37 bad blocks found”表示硬盘存在37个坏块。

2、smartmontools

它通过使用自我监控(Self-Monitoring)、分析(Analysis)和报告(Reporting)三种技术(缩写为S.M.A.R.T或SMART)来管理和监控存储硬件。

如今大部分的ATA/SATA、SCSI/SAS和固态硬盘都搭载内置的SMART系统。SMART的目的是监控硬盘的可靠性、预测磁盘故障和执行各种类型的磁盘自检。

smartmontools由smartctl和smartd两部分工具程序组成,它们一起为Linux平台提供对磁盘退化和故障的高级警告。

安装

# aptitude install smartmontools 

# yum install smartmontools

显示出某个指定硬盘的信息(比如设备模式、S/N、固件版本、大小、ATA版本/修订号、SMART功能的可用性和状态),在运行smartctl命令时添加"--info"选项

smartctl --info /dev/sda
smartctl 7.1 2020-04-05 r5049 [x86_64-linux-5.4.197-1.el8.elrepo.x86_64] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               QEMU
Product:              QEMU HARDDISK
Revision:             2.5+
Compliance:           SPC-3
User Capacity:        214,748,364,800 bytes [214 GB]
Logical block size:   512 bytes
LU is thin provisioned, LBPRZ=0
Device type:          disk
Local Time is:        Wed Apr 19 04:51:38 2023 EDT
SMART support is:     Unavailable - device lacks SMART capability.

检测某个硬盘的健康状况

 smartctl -s on -a /dev/sda

在这个命令中,"-s on"标志开启指定设备上的SMART功能。如果/dev/sda上已开启SMART支持,那就省略它。

硬盘的SMART信息包含很多部分。其中,"READ SMART DATA"部分显示出硬盘的整体健康状况。

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment rest result: PASSED

这个测试的结果是PASSED或FAILED。后者表示即将出现硬件故障,所以需要开始备份这块磁盘上的重要数据!

下一个需要关注的地方是SMART属性表,如下所示

基本上,SMART属性表列出了制造商在硬盘中定义好的属性值,以及这些属性相关的故障阈值。这个表由驱动固件自动生成和更新。

  • ID:属性ID,通常是一个1到255之间的十进制或十六进制的数字。
  • ATTRIBUTE_NAME:硬盘制造商定义的属性名。
  • FLAG:属性操作标志(可以忽略)。
  • VALUE:这是表格中最重要的信息之一,代表给定属性的标准化值,在1到253之间。253意味着最好情况,1意味着最坏情况。取决于属性和制造商,初始化VALUE可以被设置成100或200.
  • WORST:所记录的最小VALUE。
  • THRESH:在报告硬盘FAILED状态前,WORST可以允许的最小值。
  • TYPE:属性的类型(Pre-fail或Oldage)。Pre-fail类型的属性可被看成一个关键属性,表示参与磁盘的整体SMART健康评估(PASSED/FAILED)。如果任何Pre-fail类型的属性故障,那么可视为磁盘将要发生故障。另一方面,Oldage类型的属性可被看成一个非关键的属性(如正常的磁盘磨损),表示不会使磁盘本身发生故障。
  • UPDATED:表示属性的更新频率。Offline代表磁盘上执行离线测试的时间。
  • WHEN_FAILED:如果VALUE小于等于THRESH,会被设置成“FAILING_NOW”;如果WORST小于等于THRESH会被设置成“In_the_past”;如果都不是,会被设置成“-”。在“FAILING_NOW”情况下,需要尽快备份重要文件,特别是属性是Pre-fail类型时。“In_the_past”代表属性已经故障了,但在运行测试的时候没问题。“-”代表这个属性从没故障过。
  • RAW_VALUE:制造商定义的原始值,从VALUE派生。

配置Smartctl和Smartd实现实时监控

首先,编辑smartctl的配置文件(/etc/default/smartmontools)以便在系统启动时启动smartd,并以秒为单位指定间隔时间(如7200 = 2小时)。

start_smartd=yes
smartd_opts="--interval=7200"

下一步,编辑smartd的配置文件(/etc/smartd.conf),添加以下行内容。

/dev/sda -m myemail@mydomain.com -M test
  • -m :指定发送测试报告到某个电子邮件地址。这里可以是系统用户比如root,或者如果服务器已经配置成发送电子邮件到系统外部,则是类似于myemail@mydomain.com的邮件地址。
  • -M :指定发送邮件报告的期望类型。
    • once:为检测到的每种磁盘问题只发送一封警告邮件。
    • daily:为检测到的每种磁盘问题每隔一天发送一封额外的警告提醒邮件。
    • diminishing:为检测到的每种问题发送一封额外的警告提醒邮件,开始是每隔一天,然后每隔两天,每隔四天,以此类推。每个间隔是前一次间隔的2倍。
    • test:只要smartd一启动,立即发送一封测试邮件。
    • exec PATH:取代默认的邮件命令,运行PATH路径下的可执行文件。PATH必须指向一个可执行的二进制文件或脚本。当检测到一个问题时,可以指定执行一个期望的动作(闪烁控制台、关闭系统等等)。

保存改动并重启smartd。

如果实际上检测到了错误,那么错误会出现在“下列警告/错误由smartd守护进程写入日志”这一行的下面。

最后,可以使用“-s”标志和形如“T/MM/DD/d/HH”的正则表达式按照想要的调度方案执行测试,其中:

正则表达式中的T代表测试的类型:

  • L:长测试
  • S:短测试
  • C:传输测试(仅限ATA)
  • O:离线测试(仅限ATA)

其它的字符代表测试执行的日期和时间:

  • MM是一年中的月份。
  • DD是一月中的天份。
  • HH是一天中的小时。
  • d是一个星期中的某天(从1=周一到7=周日)。
  • MM、DD和HH使用两位十进制数字表示。

在上述表达中的小圆点表示所有可能的值。形如'(A|B|C)'在圆括号里的表达式表示三个可能值A、B和C中的任意一个。形如[1-5]在方括号中的表达式表示1到5的范围(包含5).

例如,想要在每个工作日的下午一点为所有的磁盘执行一次长测试,在/etc/smartd.conf中添加如下行内容。确保编辑完重启smartd。

DEVICESCAN -s (L/../../[1-5]/13) 

八、 查看硬盘信息

hdparm(英文全称:hard disk parameters)命令,主要用来查看硬盘的相关信息或对硬盘进行测速、优化、修改硬盘相关参数设定。它提供了一个命令行的接口用于读取和设置IDE或SCSI硬盘参数。

1、显示硬盘的相关设置

# hdparm /dev/vda
/dev/vda:
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
 readonly      =  0 (off)
 readahead     = 8192 (on)
 geometry      = 104025/16/63, sectors = 104857600, start = 0

2、评估硬盘的读取效率

# hdparm -t /dev/vda
/dev/vda:
 Timing buffered disk reads: 290 MB in  3.15 seconds =  92.08 MB/sec

  

 

 

 

 

 

 

https://www.strives.cn/?p=70&from=groupmessage

 

posted @ 2019-07-29 13:37  凡人半睁眼  阅读(6389)  评论(0编辑  收藏  举报