Linux系统管理体系-磁盘管理体系

1、磁盘分区

1)预备姿势

MBR:每一块硬盘上存放磁盘引导程序,引导程序在磁盘开头部分,用于引导系统启动。我们一般不用太关注我们安装系统的时候自动安装。

位置:磁盘分区表,磁盘的开始部分:0磁头,0磁道,1扇区(512字节)

这512字节存放:

  • 引导程序446字节(MBR)
  • 磁盘分区表(64字节)4个分区表
  • 结束标记 55AA,2字节

分区表64字节,每个分区占用16字节,最多只有4个分区

  • 这4个分区叫做主分区。

    • 如果只划分1分区使用所有空间,将无法继续划分分区。
    • 如果划分了4个分区,但是磁盘空间还有剩余,剩余空间将无法继续使用。
  • 扩展分区是用于解决主分区数量主分区只能有4个问题,扩展分区无法直接使用,需要在扩展分区下面创建逻辑分区,存放数据

  • 逻辑分区在扩展分区中,用于存放数据

这些分区概念,分区使用MBR形式,主分区+扩展分区最多4个(扩展分区只能1个),扩展分区用于创建逻辑分区。 未来使用基本就是创建主分区就够了,安装系统的时候自动创建主分区,创建扩展分区,创建逻辑分区即可。

2)磁盘及分区命名

磁盘文件或分区文件放在/dev/下面

磁盘命名

bash 复制代码
#磁盘接口
sas/sata/scsi接口的硬盘,硬盘名字是以sd开头的
虚拟机(kvm)/公有云的硬盘,硬盘名字是以vd开头的
#第几块磁盘:通过字母表示,从字母a开始一次类推
/dev/sda
​
#云服务硬盘
/dev/vda

分区命名

复制代码
分区命名是根据分区类型进行命名的
如果是主分区或者扩展分区则分区号从1-4范围
如果是逻辑分区,逻辑分区的分区号从5开始。
bash 复制代码
#案例一 硬盘及分区命名
第2块SATA硬盘的第1个主分区/dev/sdb1
第3块SAS硬盘的第2个逻辑分区/dev/sdc6
第5块公有云的云盘的第3个主分区 /dev/vde3

2、磁盘分区实战

1)概述

一块硬盘成长史三部曲

  • 打隔断:分区操作
  • 装修,格式化:创建文件系统
  • 添加钥匙🔑:挂载(命令,配置文件)

查看服务器下硬盘

复制代码
fdisk -l

2)磁盘分区

创建一个分区使用硬盘所有容量,就按照默认即可!

案例一 给硬盘sdb创建一个20MB的分区

sh 复制代码
#1、操作硬盘
fdisk /dev/sdb
#2、对硬盘进行增删改查
p print 输出磁盘分区信息
n new 创建分区
d delete 删除分区
w writeq 保存并退出 
q quit退出不保存
#3、创建20MB分区
命令(输入 m 获取帮助):n
​
Partition type: p   #提示选择类型
p primary (0 primary,0 extended,4 free)
e extended  #拓展分区
​
Select (default p): 回车即可   #输入p或回车默认使用主分区
Using default response p
分区号(1-4,默认 1): 回车即可     #分区号回车使用默认的1号
起始扇区(2048-208895,默认为 2048): 回车即可 #回车,使用默认的起点
将使用默认值 2048
Last 扇区,+扇区 or +size{k,M,G}(2048-208895,默认为 208895):+20M    #+20M分区20MB分区 1 已设置为 Linux 类型,大小设为 20 MiB
​
#4.通过p查看
命令(输入 m 获取帮助): p
磁盘 /dev/sdb:1073 MB,1073741824字节,2097152 个扇区
Units =扇区 of 1 *512 = 512 bytes
扇区大小(逻辑/物理):512 字节 /512 字书
I/0 大小(最小/最佳):512 字节 /512 字节
磁盘标签类型:dos
磁盘标识符:0x2af54b05
设备 Boot  Start END blocks Id System
/dev/sdb1 2048 43007 20480 83 Linux
#这里有sdb1即可
​
#5.通过w保存退出
​
#6.查看/dev/sdb*
​
sh 复制代码
[root@nanjing ~]# fdisk /dev/vda
欢迎使用 fdisk (util-linux 2.23.2)。
​
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

不按w,就不会保存

小tip:如果在创建主分区后,在创建一个扩展分区。所有剩下的容量都会给扩展分区。

3)格式化(创建文件系统)

创建 make 文件系统 filesystem,表示给磁盘分区进行装修,给磁盘分区创建规则,一定量的inode,block。 mkfs(make filesystem)创建文件系统(格式化)

mkfs 磁盘或分区

mkfs.xfs /dev/sdb1

  • xfs是文件系统类型,Centos7默认的文件系统类型
  • mkfs.ext4 文件系统类型,用于Centos 6.x或公有云使用

如果出现上述情况,说明硬盘已经有文件系统。-f可以强制格式化。慎用!!!

4)临时挂载

Linux中的设备,需要通过挂载命令,给设备指定入口(已经存在的空目录),否则将无法使用

通过mount命令指定 设备,指定入口(目录)mount 设备 目录

入口:挂载点,一般是个空目录就行,/mnt linux临时挂载点!

卸载

复制代码
umount + 挂载点

5)永久挂载

我们在Linux下面的操作一般都分为临时和永久,对于挂载来说,我们希望永久生效(临时+永久)。

实现永久挂载的方案:

  • 方案1 使用rc.local ,把挂载命令:mount /dev/sdb1 /data/写入到/etc/rc.local,注意命令最好写为绝对路径
  • 方案2 专业的开机自动挂载的配置文件/etc/fstab,根据配置文件的要求把mount命令改为配置文件形式即可
第1列 第2列 第3列 第4列 第5列 第6列
设备名字/dev/sdb1或UUID形式 挂载点 文件类型:xfs,ext4,swap 一般是defaults,挂载选项 是否备份 是否检查
设备名字:/dev/sda UUID:UUID="......" /data/ xfs defaults 0 0

6)挂载光盘

sh 复制代码
mount /dev/cdrom /mnt/
ls -l /mnt/Packages/*.rpm | wc -l

3、mbr vs gpt

分区表 特点 对应命令
mbr 支持2tb以内的硬盘,大于2tb则只识别2tb.区别主分区,扩展分区,逻辑分区 fdisk/parted
gpt 支持大容量硬盘,主分区无限使用(100多个). gdisk/parted

parted命令也可以创建分区,而且实时生效与fdisk对比!

sh 复制代码
#案例一 创建gpt格式的分区大小10MB(/dev/sdc)

查看硬盘分区信息
parted /dev/sdb print

编辑/dev/sdc
parted /dev/sdc

创建分区表gpt格式
mktable gpt 或者mklabel gpt -样#注意mbr叫做msdos类型

创建分区10mb
primary 0 10
primary 10 20

删除分区
rm 1

退出编辑
q 或quit

4、创建swap

  • swap交换分区:内存不足的时候临时充当内存,swap占用的磁盘空间
  • 所以未来应用建议:如果内存充足并且服务对性能要求较高,可以关闭swap,

联想:小米手机的虚拟内存

案例一 服务器运行java程序,大量占用内存,以至于开始占用swap如何解决?

  • 第一步保证网站正常,增加swap空间
  • 联合开发一起排查

1.创建指定大小的文件1g的文件

2.把文件转换为swap.

3.激活这个swap,把它加入到linux中

4.记得配置永久挂载

sh 复制代码
#1、创建指定大小的文件
dd if=/dev/zero of=/tmp/1g bs=1M count=1000
if ==== input file 输入文件/dev/zero,不断输出空
of ==== ouput file 输出文件
bs ==== block size 每次读取多少
count ==== 读取次数

#2、把文件转换为swap(格式化)
mkswap /tmp/1g

------------------------------------------------------------
[root@nanjing tmp]# file 1g
1g: data
[root@nanjing tmp]# mkswap /tmp/1g
正在设置交换空间版本 1,大小 = 1023996 KiB
无标签,UUID=072c7640-ecc7-4d61-ac16-ac5e099d9bbc
[root@nanjing tmp]# file 1g 
1g: Linux/i386 swap file (new style), version 1 (4K pages), size 255999 pages, no label, UUID=072c7640-ecc7-4d61-ac16-ac5e099d9bbc
------------------------------------------------------------

#3、激活这个swap,把他加入linux中
swapon /tmp/1g

------------------------------------------------------------
[root@nanjing tmp]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.6G        627M        132M        596K        2.9G        2.7G
Swap:            0B          0B          0B
[root@nanjing tmp]# swapon /tmp/1g
swapon: /tmp/1g:不安全的权限 0644,建议使用 0600。
[root@nanjing tmp]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.6G        629M        130M        596K        2.9G        2.7G
Swap:          999M          0B        999M
[root@nanjing tmp]# swapoff /tmp/1g
#关闭swap
------------------------------------------------------------

#4、配置永久挂载

#方案一: swapon /tmp/1g 写入到rc.local
#方案二: 写入/etc/fstab
/tmp/1g swap swap defaults 0 0

5、企业分区方案

  1. 公有云
  2. 物理机/虚拟机(私有云)

服务器存放的数据,不重要

分区 作用与大小
/boot/ 引导分区 引导系统启动与存放引导文件,存放系统内核镜像,推荐1G即可
swap 根据实际内存配置,大于8G,swap配置8G即可 低于实际内存低于8G,1.5倍或2倍,最大8G. 补充:公有云可以不配置,如果是java建议配置一些
/根分区 所有剩余空间给根

服务器存放重要的数据

分区 作用与大小
/boot/ 引导分区 引导系统启动与存放引导文件,存放系统内核镜像,推荐1G即可
swap 根据实际内存配置,大于8G,swap配置8G即可 低于实际内存低于8G,1.5倍或2倍,最大8G. 补充:公有云可以不配置,如果是java建议配置一些
/根分区 给40G-208G,主要安装一些软件.重要数据单独存放
/data/ 剩余所有空间

不知道是否重要

分区 作用与大小
/boot/ 引导分区 引导系统启动与存放引导文件,存放系统内核镜像,推荐1G即可
swap 根据实际内存配置,大于8G,swap配置8G即可 低于实际内存低于8G,1.5倍或2倍,最大8G. 补充:公有云可以不配置,如果是java建议配置一些
/根分区 给40G-208G,主要安装一些软件.重要数据单独存放
/data/ 未来谁使用谁划分

6、重装系统保留数据

如果机器玩崩溃了,重装系统,我们又想保留数据,需要怎么操作?

1、通过U盘启动

2、保持原服务器的部分分区(保留/boot和/data,/和/swap删除并新建)

3、df -h查看磁盘分区,发现/data没了,不要慌!!!

4、创建data目录,把/dev/sda5挂载到data目录

5、写入/etc/rc.local,永久挂载

相关推荐
muls11 分钟前
java面试宝典
java·linux·服务器·网络·算法·操作系统
图扑可视化6 分钟前
油气集输 WebGIS 数字孪生管控大屏
运维·gis·数字孪生·油气运输·油气集输
Eric.Lee202119 分钟前
python实现pdf转图片png
linux·python·pdf
CDN36021 分钟前
CDN 无法播放音视频?流媒体回源与 Range 配置修复
运维·音视频
剑锋所指,所向披靡!24 分钟前
linux的目录结构
linux·运维·服务器
zt1985q27 分钟前
本地部署 Home Assistant 高级自动化 AppDaemon 并实现外部访问
运维·服务器·网络·网络协议·自动化
志栋智能28 分钟前
轻量级部署:低成本实现混合云环境自动化巡检
运维·网络·人工智能·自动化
我爱学习好爱好爱29 分钟前
Ansible变量介绍 vars变量 inventory针对主机设置变量
linux·自动化·ansible
结衣结衣.38 分钟前
【Linux】命名管道的妙用:实现进程控制与实时字符交互
linux·运维·开发语言·学习·操作系统·交互
IMPYLH1 小时前
Linux 的 groups 命令
linux·运维·服务器·bash