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属性表列出了制造商在硬盘中定义好的属性值,以及这些属性相关的故障阈值。这个表由驱动固件自动生成和更新。
- 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