扫盘
1.扫描磁盘
当我们添加一块磁盘后,操作系统可能没有识别到该磁盘,即lsblk下没有该磁盘的信息。
只要是该盘走的是SCSI协议,即SATA硬盘,SAS硬盘等等,都可以使用这个命令来识别。
echo "- - -" | tee /sys/class/scsi_host/host*/scan
还有一种场景就是在救援模式(Rescue Mode)下,LVM分区不能像普通的ext4、xfs分区那样直接mount,需要先将它“激活”
vgchange -ay vg_name
挂载
2.磁盘挂载
挂载一般分为临时挂载和永久挂载,看具体的用途和需求,例如临时挂载上去备份文件就只临时挂载即可mount -t可指定文件系统类型,
例如xfs、ext4、nfs、ntfs-3g(windows),永久挂载就是将磁盘信息写入 /etc/fstab,并使用mount -a去自动挂载(验证)
/etc/fstab下的格式 /dev/sda /mnt xfs defaults 0 0 设备路径、挂载点、文件系统类型、挂载参数、dump 备份、fsck 检查,需一一对应 官方一点的: [设备] [挂载点] [文件系统类型] [挂载参数(options)] [dump备份] [fsck开机自检]
设备这里,一般地,设备路径容易发生变化,所以这里写uuid是最稳妥的,磁盘的uuid可以使用”blkid“去获取,复制下来。
文件格式类型一般就是xfs、ext4,挂载的如果是iso文件的话,需要写 iso9660
挂载参数,这里比较常见的就是defaults,大多数场景下写这个也没问题,差不多就是一个默认的组合包。 一般还可以在defaults后面补加其他参数或者替换掉,比如defaults,noatime,nodiratime,commit=600,errors=remount-ro 其他参数 nofail :用于挂载一些非内部存储的盘的时候可以用,它的作用就是开始检查fstab的时候,即使这行,这块盘找不到、 挂载不上等等情况,直接忽略,跳过。一般就是比如nfs挂载的,比如网络出问题了,客户机重启如果还是defaults参数, 那么这行就出问题,系统就会进入紧急模式(Emergency Mode) noatime & nodiratime :这两一般可以用在一起,ssd固态建议使用,简而言之,就是优化性能,减少i/o写入,可以 延长ssd固态的寿命,比如咱们跑pcdn的时候,挂载参数有这两。 官方解释是 noatime:彻底禁止系统更新文件的访问时间, nodiratime:禁止更新目录的访问时间。 errors=remount-ro :当文件系统底层出现错误时,立刻把它重新挂载为只读(Read-Only)模式。这个东西 相当于保留案发现场,比如发生了磁盘硬件类错误,坏道、坏块等等,这个时候不让写了,只读,那么系统 还是活的,咱们就有机会备份数据,及时止损。 fstab参数里面,那个dump备份基本不用了,一般都是"0",需要注意的是第二个 fsck开机,这个和fsck命令 有关系,这里的参数就是看用不用fsck fsck检查参数: 0 :不检查,即跳过检查,开机直接挂载,不管有没有报错,例如I/O错误什么的也要挂载上去 1 :要检查,且优先级最高,一般用于根目录,系统fsck根目录,根目录没问题后,才能继续启动 2 :要检查,次优先级,一般用于独立根目录的,比如/home,等根目录检查或者跳过后,再检查这些标记为2的 commit :这个不太懂,默认的是5s,我看跑pcdn调优的用到的,大概意思就是参数越低,数据安全性越高 但是IO压力也就越大。参数给600。就是10分钟写一次盘,把内存里的缓存的数据和日志同步到硬盘里面,这个 在正规的生产环境中不建议调整,默认的就行。 这里涉及到一个叫“脏页(Dirty Pages)”,咱们写操作的时候数据不是直接落入磁盘的,一般会先写到内存 里面,咱们平时free看内存的时候,会发现有一个buffer/cache的东西,cache这里面就存着脏页。linux写入 有一个机制叫“page cache页面缓存”,而commit就差不多是一个时间参数,到时候了就是让一个文件系统日志线程, 比如ext4的jbd2去内存的cache将脏页,刷写(flush)到硬盘,变成clean pages,这个就是落盘。 Linux 会把这些要写入的数据,先存放到内存的 Cache(页面缓存,Page Cache) 里。 此时,这部分在内存中已经被修改、但还没来得及写到物理硬盘上的数据,就被打上了一个特殊的标记,叫做 脏页 (Dirty Page)。
3.移除文件系统签名
当我们要去做LVM的时候,如果磁盘本身就带文件系统签名,例如已经是xfs格式的磁盘了,做物理卷pv的时候就会出问题,设备就会冲突。
比如我先将一块磁盘做了pv之后,又使用mkfs.xfs文件系统格式化掉之后,引发冲突,导致pvdisplay无法查到我的pv,就是因为磁盘
同时存在 LVM 元数据和文件系统签名。
wipefs -a /dev/sdx
这个命令也可以直接用来消除分区
查盘
4.查看磁盘
fdisk -l & lsblk #两者都可以查看可挂载的磁盘 blkid #获取uuid,获取文件格式类型等 df -h #查看已挂载的磁盘、文件系统、磁盘使用情况 df -hi #查看indoe使用率
LVM类
5.LVM
PV-VG-LV
#创建物理卷pv pvcreate /dev/sdx #查看物理卷 pvs/pvdisplay #创建卷组,名称为vg_name,将/dev/sdx这个pv加入vg vgcreate vg_name /dev/sdx #查看卷组 vgs/vgdisplay #创建lv lvcreate -l 100%free -n lv_name vg_name lvcreate -L +10G -n lv_name vg_name #格式化磁盘 mkfs.xfs /dev/vg_name/lv_name #格式化磁盘(lv的路径) mkfs.ext4 /dev/vg_name/lv_name
##逻辑卷扩容
新添加一块磁盘,做成pv。
pvcreate /dev/sdb

将其加入现有的vg
vgextend vg_name /dev/sdb

#注意,如果报错Couldn’t create temporary archive name,建议排查一下原数据存储路径上的存储使用情况,比如想给根目录扩容,
但是根目录Use%达到100%等就会提示这个错误,当然还有其他原因,例如权限、卷组本身状态有异常等等。
LVM 操作需要在 /etc/lvm/archive/和 /etc/lvm/backup/ 目录生成临时元数据文件,若根分区空间满,会导致无法创建临时文件
vg成功添加后,可以查看vgs,里面有个VFree参数,这个就是目前vg的剩余可使用容量,可以扩容到一个lv里
lvextend -L +50G -n /dev/rhel/root
#当lvextend本身操作成功的时候,去查看df -h显示容量还是没有变化,这是因为lvextend仅只是扩容lv底层逻辑卷,还需要同步到
上层的文件系统这个操作
#xfs xfs_growfs /dev/rhel/root #ext4 resize2fs /dev/rhel/root
修复
#修复场景
如果要进入光盘救援模式,挂载原根目录的时候可能会用到,原磁盘分区是LVM做的。
#扫描vg vgscan #激活 vgchange -a y vgname

这个会激活该卷组下所有的逻辑卷,所以就不用再去做lvchange -ay
然后再去挂载,chroot进入。
mount /dev/vg_name/lv_name /mnt/sysroot
#chroot进入故障的文件系统
chroot /mnt/sysroot
#挂载映射 mount –bind
如果故障系统里面有文件、目录缺失,然后在修复过程中需要用到,可以使用mount –bind临时映射过去,一般都是系统目录,
/dev/,/proc,/sys啥的。
但是需要退回到救援交互界面,exit退出(如果已经chroot进去了)
假设/proc没有,将光盘下的/proc映射到故障系统里。
如果故障系统/proc被删除或者没有,还需要创建一下目录,毕竟要挂载点
mount –bind /proc /mnt/sysroot/proc
#文件系统修复
都需要先umount取消挂载才能操作! #针对xfs文件类型 xfs_repair /dev/sdx #针对ext4,ext3等 fsck /dev/sdx 常用参数: -y:对所有修复,自动回答yes -f:强制检查 修复后可以查看下 /挂载点/lost+found这个目录是否存在和是否有文件
#硬件层
smartctl 这里要看一下是虚拟磁盘还是物理磁盘,虚拟机的可以不用查了! 如果没有这个命令就安装一下,它是在smartmontools这个软件包里 yum install -y smartmontools apt install -y smartmontools 常用命令: smartctl -H /dev/sdx</strong>

显示“PASSED”的一般都没问题,显示“FAILED”的就要注意了,赶紧备份数据、换盘
smartctl -A /dev/sdx

看对应的数值 Reallocated_Sector_Ct------5 Current_Pending_Sector---197 UDMA_CRC_Error_Count-----199 一般是固定的,不一样就AI一下问下,主要还是看盘出问题没有
注释:后期会继续更新