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、企业分区方案
- 公有云
- 物理机/虚拟机(私有云)
服务器存放的数据,不重要
分区 | 作用与大小 | |
---|---|---|
/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
,永久挂载