Linux 磁盘管理

一、磁盘基础

1、磁盘的物理结构

  1.  盘片:硬盘有多个盘片,每盘片有2面(正反两面)
  2. 磁头:每面一个磁头,并不是只有一个磁头,磁头也不会碰到盘面,磁头等于盘片数量

2、磁盘的数据结构

  • 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据(扇区越多容量越大) 存放数据的最小单位 512字节
  • 磁道:同一盘片不同半径的同心圆
  • 柱面:不同盘片相同半径构成的圆(柱面和磁道数量相同)

二、MBR与磁盘分区

 1、为什么要分区

  • 优化I/O性能   读写
  • 实现磁盘空间配额限制
  • 提高修复速度
  • 隔离系统和程序
  • 安装多个OS
  • 采用不同文件系统

1.分区的优点:

  • 便于管理
  • 优化读写性能

2.分区的缺点:

  • 一旦区分就无法修改大小
  • 只能使用连续的空间
  • 没有备份冗余功能

2、磁盘分区的结构

  • 硬盘中的主分区数目只有4个
  • 主分区和扩展分区的序号限制在1~4,其中1-3是主分区,4是扩展分区。
  • 扩展分区再分为逻辑分区。
  • 逻辑分区的序号将始终从5开始。

3、MBR分区(最多只能分4个区,只能对于小于2T的硬盘分区)

①MBR位于硬盘第一个物理扇区处

②MBR中包含硬盘的主引导程序和硬盘分区表

③分区表有4个分区记录区,每个分区记录区占16个字节

④MBR位于硬盘第一个物理扇区处

⑤MBR中包含硬盘的主引导程序和硬盘分区表

⑥分区表有4个分区记录区,每个分区记录区占16个字节

⑦扩展分区:是特殊的主分区。目的:是为了可分超过4个分区。

不可以直接使用,无论分多少多大,只显示1k,而且需要再次逻辑分区。

4、GPT分区(以分128个分区,对2T以上的硬盘分区) 

使用128位uid

5、文件系统

1.文件系统的组成

  • 内核中的模块:ext4、xfs、vfat
  • Linux虚拟文件系统:VFS
  • 用户空间的管理工具:mkfs.xfs、 mkfs.ext4、mkfs.vfat

2.XFS文件系统

  • 存放文件和目录数据的分区。
  • 高性能的日志型文件系统。
  • CentOS7系统中默认使用的文件系统(可进行数据恢复)。

3.SWAP,交换文件系统

  • SWAP,交互文件系统

4.Linux支持的其他文件系统类型

  • FAT16、FAT32、NTFS
  • EXT4、JFS

常见的硬件设备在/dev目录下

Linux 磁盘管理_第1张图片

 6、文件系统的修复

fsck.FS_TYPE
fsck -t FS_TYPE

-a 自动修复
-r 交互式修复错误

三、检测磁盘

1、使用badblocks检查坏道

Linux 磁盘管理_第2张图片

2、badblocks相关参数

格式:

badblocks [选项] 设备

参数说明

-b:指定每个块的大小(以字节为单位),默认为1024字节。
-c:指定每次检测的块数,默认为64个块。
-e:指定要跳过的块数,以块为单位。
-f:强制执行,即使文件系统标记为只读或有错误。
-n:进行非破坏性写入测试。
-o:将结果输出到指定文件中。
-p:指定写入和读取测试的次数。
-s:显示扫描进度的百分比。
-v:显示详细的扫描进度和结果。
-w:进行破坏性写入测试。

四、分区工具

lsblk 列出块设备
fdisk 管理MBR分区
gdisk 管理GPT分区
parted 高级分区操作,可以是交互或非交互方式
partprobe 重新设置内存中的内核分区表版本,适合于除了CentOS 6 以外的其它版本 5,7,8


parted 命令
注意:parted的操作都是实时生效的,小心使用
parted [选项]... [设备 [命令 [参数]...]...]
parted -l   列出所有硬盘分区信息

1、fdisk 

  • 查看或着管理磁盘分区(只能2T以下的硬盘) 

格式

格式:fdisk -l [磁盘设备]

选项 说明
m 打印出菜单
p 打印出当前分区表
n 新建一个分区
d 删除一个分区
t 改变分区的属性,系统ID
w 保存退出
q 不保存退出

2、blkid

  • 可以查看uuid和块设备属性信息

3、lsblk

  • lsblk以树形查看磁盘分区

Linux 磁盘管理_第3张图片

4、mkfs

创建文件系统(格式化)常用选项

Linux 磁盘管理_第4张图片

5、gdisk

  • 用于磁盘分区

  • 查看或着管理磁盘分区(只能2T以上的硬盘) 

6、df

查看磁盘的剩余空间和挂载情况

Linux 磁盘管理_第5张图片

 在Linux系统中建立的分区的缺点:

  • 一旦分区,无法修改大小
  • 只能使用连续的时间
  • 没有备份冗余功能

五、挂载与解挂载

1、挂载规则

  • 一个挂载点同一时间只能挂载一个设备
  • 一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
  • 一个设备可以同时挂载到多个挂载点
  • 通常挂载点一般是已存在空的目录

临时挂载

[root@localhost ~]#mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]#df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  4.2G   46G    9% /
devtmpfs                 1.5G     0  1.5G    0% /dev
tmpfs                    1.5G     0  1.5G    0% /dev/shm
tmpfs                    1.5G   12M  1.5G    1% /run
tmpfs                    1.5G     0  1.5G    0% /sys/fs/cgroup
/dev/sda1                2.0G  157M  1.9G    8% /boot
tmpfs                    296M  4.0K  296M    1% /run/user/42
tmpfs                    296M   28K  296M    1% /run/user/0
/dev/sr0                 4.2G  4.2G     0  100% /mnt

####重新挂载
root@localhost data]#mount -o ro /dev/sdc1 /mnt/
[root@localhost data]#mount
/dev/sdc1 on /mnt type xfs (ro,relatime,seclabel,attr2,inode64,noquota)

#如果有人在使用  挂载文件夹 无法先解挂载再 去挂载
[root@localhost data]#mount -o remount,ro /mnt/

[root@localhost data]#fuser -v /mnt/
                     用户     进程号 权限   命令
/mnt:                root     kernel mount /mnt
                     root      20480 ..c.. bash
[root@localhost data]#fuser -km /mnt/
/mnt:                20480c

2、mount

格式:mount [ -t 类型] 存储设备 挂载点目录

[root@localhost ~]#mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载

3、umount

卸载已挂载的文件系统

格式:

umount  存储设备位置

umount  挂载点目录

4、永久挂载

方法一:在**/etc/fstab**文件中,每一行记录对应一个分区或设备的挂载配置信息,这些信息从左到右包括六个字段使用空格或制表符分隔。

/dev/sdb2   /mnt   xfs   defaults 0 0

但是这种不稳定,前面的sdb1没了,那sdb2就会成为sdb1.

方法二:需要 将文件写入 /etc/fstab
UUID 可以确保唯一

[root@localhost ~]#blkid 
/dev/sda1: UUID="8ed41bec-1329-4607-9b42-6f7b4b60816c" TYPE="xfs" 
/dev/sda2: UUID="G15aII-0Yle-SYk6-q1mJ-bsHn-HZfu-GeC1Zv" TYPE="LVM2_member" 
/dev/sdb1: UUID="tGm7NP-Ys8i-pm4d-1t0P-Bwdg-g5ua-TkFBN2" TYPE="LVM2_member" 
/dev/sr0: UUID="2018-05-03-20-55-23-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="d2fd2b9d-612e-4e17-ab97-dc611c730a96" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="492e835a-762f-475b-a66c-ce4a341b1174" TYPE="swap" 
/dev/mapper/zhangsan-cxk: UUID="8f7991cf-2c7c-4239-a74e-e57c6153f392" TYPE="xfs" 
[root@localhost ~]#

[root@localhost opt]# vim /etc/fstab 
在/etc/fstab 文件中,每一行记录对应一个分区或设备的挂载配置信息,这些信息从左到右包括六个字段(使用空格或制表符分隔),各部分的含义如下所述。
/dev/sdb1    /mnt                       xfs     defaults        0 0

第 1 字段:设备名或设备卷标名。
第 2 字段:文件系统的挂载点目录的位置。
第 3 字段:文件系统类型,如 XFS、Swap 等。
第 4 字段:挂载参数,即mount 命令“-o”选项后可使用的参数。例如,defaults、rw、ro、noexec 分别表示默认参数、可写、只读、禁用执行程序。
第 5 字段:表示文件系统是否需要 dump 备份(dump 是一个备份工具)。一般设为 1时表示需要,设为 0 时将被 dump 忽略
第 6 字段:该数字决定在系统启动时进行磁盘检查的顺序。0 表示不进行检查,1 表示优先检查,2 表示其次检查。根分区应设为 1,其他分区设为 2。
通过在/etc/fstab 文件中添加相应的挂载配置,可以实现开机后自动挂载指定的分区。例如,执行以下操作将添加自动挂载分区/dev/sdb1的配置记录。

# /etc/fstab
# Created by anaconda on Fri Aug  6 20:57:12 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=e9364e9b-a85b-49d7-9652-3a56202e14c8 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
UUID=2a1e1ac7-7462-4fc3-b644-43813660276f /sdb1      xfs        defaults   0 0
~

:wq

[root@localhost ~]#mount -a   刷新,为了查看有没有报错
uuid写错了 可以直接等待进入系统后,出现ctrl+D 报错, 输入root密码,后修改  /etc/fstab.

你可能感兴趣的:(Linux基础篇,linux,运维,服务器)