硬盘类型和磁盘管理
硬盘结构
/dev/sd* SAS STAT SCSI IDE USB
/dev/nvme0n* NVME协议硬盘
/dev/xvd* 虚拟硬盘
/dev/vd* 虚拟硬盘
head 磁头
track 磁道 磁道=柱面数
sector 扇区 512bytes
cylinder 柱面
分区
如果硬盘不分区直接格式化,则不显示他的磁盘类型
MBR BIOS 分区不超过2T 3个主分区+N个逻辑分区
0磁道0扇区:512字节bytes
446字节:boot loader启动相关
64字节:分区表,其中每16字节标识一个分区
2字节:55AA,标识位
##############################################################################
GPT UEFI 分区不超过8Z 支持128分区
自然备份分区表 首尾各一份
##############################################################################
parted 可以用非交互式的
parted -s /dev/sdb mklabel gpt/msdos
parted -s /dev/sdb mkpart primary 2048s 5G 给一个5G的主分区
parted -s /dev/sdb rm 1
格式化
mkfs.ext4
e2fsck -f 强制修复
resize2fs
#
mkfs.xfs
xfs_ncheck /dev/nvme0n1p1; echo $? 检测
xfs_repair -f 修复
xfs_repair -n 检查
xfs_growfs /dev/nvme0n1p1
查看block信息#tune2fs -l /dev/nvme0n1p2
查看block组#dumpe2fs /dev/nvme0n1p2
#同一个device可以挂载多个目录
#查看谁在使用目录
[root@rocky ~]# fuser -uv /mnt
USER PID ACCESS COMMAND
/mnt: root kernel mount /mnt
root 1575 ..c.. bash
踢出所有使用mnt的用户 fuser -km /mnt
永久挂载和swap
dd 做系统盘 dd if=/mnt/CentOS-7-x86_64-DVD-1511.iso of=/media
df -i inodes节点
通过本身磁盘剩余空间扩容 扩展swap
1)创建大的swap文件
dd if=/dev/zero of=/home/swap bs=1024 count=20971520
2)格式化swap空间
/sbin/mkswap /home/swap
3)关闭旧swap
swapoff /dev/mapper/vg_swap
4)开启新swap
/sbin/swapon /home/swap
5)开机挂载 vi /etc/fstab
/home/swap swap swap defaults 0 0
[root@rocky udev]# cat /proc/sys/vm/swappiness 内存剩余30%使用 swap
30
[root@rocky udev]# echo 10 > /proc/sys/vm/swappiness 设置swap使用条件,内存剩余10%
RAID
raid0 条带卷 strip 以chunk为单位相互存放 1块硬盘以上
raid1 镜像卷 mirror
raid 5 奇偶校验 3,3+
raid 6 双份校验位,算法复杂 4,4+
raid 50 3,6,8,9,10
JBOD 多块硬盘组合到一起用,按顺序使用
LVM
LVM 支持磁盘快照
磁盘/分区 --->PV物理卷--->VG卷组--->LV逻辑卷--->格式化--->挂载
pvcreate /dev/sdc1 创建pv
vgcreate lvm_vg00 /dev/sdc1 创建vg
lvcreate -L 1024M -n lvm_lv00 lvm_vg00 创建lv
mkfs.ext4 /dev/lvm_vg00/lvm_lv00 格式化
mount /dev/lvm_vg00/lvm_lv00 /mnt 挂载
--------------------------------------------------------------------------------
pvcreate /dev/sdd1 创建pv
vgextend lvm_vg00 /dev/sdd1 扩展vg
lvextend -L +2G /dev/lvm_vg00/lvm_lv00 扩展lv
###这样写不需要在执行以下resize2fs和xfs_growfs了lvextend -r -L +2G /dev/lvm_vg00/lvm_lv00
resize2fs /dev/mapper/vg00-lv00 加载扩展的空间 xfs格式 xfs_growfs /dev/mapper/vg00-lv00
--------------------------------------------------------------------------------
ext 顺序 umount 卸载目录 e2fsck -f /dev/mapper/vg00-lv00 检查磁盘 resize2fs /dev/mapper/vg00-lv00 5G 调整为5G空间 lvresize -L 5G /dev/mapper/vg00-lv00 调整lv为5G空间 e2fsck -f /dev/mapper/vg00-lv00 再次检测磁盘 mount 挂载
xfs不支持缩小。需要格式化 顺序 umount 卸载目录 lvreduce -L 2G /dev/mapper/vg00-lv00 变成2G 调整为2G空间 mkfs.xfs -f /dev/mapper/vg00-lv00 格式化硬盘 xfs_growfs /dev/mapper/vg00-lv00 检查分区 mount重新挂载
lvreduce -L -6G /dev/vg00/lv00 减少6G lv
lvreduce -L 2G /dev/mapper/vg00-lv00 变成2G
vgreduce vg00 /dev/sdd1 减少vg
pvremove /dev/sdd1 减少pv
pvmove /dev/sdc 源数据 用来迁移数据
查看系统中的lvm ls /dev/逻辑卷名字
############2021.11.3##########################################################
快照snapshot
将快照的权限设置为只读
设置生存周期 (指定容量500M)设置快照时候,如果实时数据超过500M 就取消快照,也可以规定范围是等于lvm大小
lvcreate -s -p r -L 容量 -n 快照名称 逻辑卷名称
-s:snapshot 快照 -p r 只读权限
lvcreate -s -p r -L 100M -n lvdate /dev/mapper/vg00-lv00
lvconvert --merge /dev/mapper/vg00-lv00 #恢复快照
[root@qwe ~]# lvscan
ACTIVE Original '/dev/vg00/lv00' [5.00 GiB] inherit
ACTIVE Snapshot '/dev/vg00/lvdate' [100.00 MiB] inherit
查看快照直接mount 挂载就行 mount /dev/vg00/lvdate /mnt
注:XFS需要取消UUID挂载 mount -o rw.nouuid /dev/vg00/lvdate /mnt
备份快照[root@qwe media]# tar zcvf /media/backup/`date +%F`.tar.gz /snapshot/
删除快照 umount /dev/vg00/lvdate [root@qwe media]# lvremove /dev/vg00/lvdate
检测命令
指令:e2fsck. 需要umount partition
使用方式 : e2fsck [-pacnydfvFV] [-b superblock] [-B blocksize] [-l|-L bad_blocks_file] [-C fd] device
参数 :
device : 预备检查的硬碟 partition,例如:/dev/sda1
-a : 对 partition 做检查,若有问题便自动修复,等同 -p 的功能
-b : 设定存放 superblock 的位置
-B : 设定单位 block 的大小
-c : 检查该partition 是否有坏轨
-C file : 将检查的结果存到 file 中以便查看
-d : 列印 e2fsck 的 debug 结果
-f : 强制检查
-F : 在开始检查前,将device 的 buffer cache 清空,避免有错误发生
-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
-L bad_blocks_file : 设定坏轨的block资料存到 bad_blocks_file 里面,若无该档则自动产生
-n : 将档案系统以[唯读]方式开启
-p : 对 partition 做检查,若有问题便自动修复
-v : 详细显示模式
-V : 显示出目前 e2fsck 的版本
-y : 预先设定所有检查时的问题均回答[是]
fsck 命令 需要umount partition
filesys : device 名称(eg./dev/sda1),mount 点 (eg. / 或 /usr)
-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
-s : 依序一个一个地执行 fsck 的指令来检查
-A : 对/etc/fstab 中所有列出来的 partition 做检查
-C : 显示完整的检查进度
-d : 列印 e2fsck 的 debug 结果
-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
-R : 同时有 -A 条件时,省略 / 不检查
-V : 详细显示模式
-y : 预先设定所有检查时的问题均回答[是]
-a : 如果检查有错则自动修复
-r : 如果检查有错则由使用者回答是否修复
dumpe2fs -b. /dev/sd*