16、磁盘、分区、格式化、挂载
1.磁盘的基本概念
了解下如何写入数据
2.磁盘的基本结构
机械磁盘
磁道: 由磁头磁化磁道上的金属颗粒,形成金属块,就会产生电流,正负极,就能表示 0 1 0 1
扇区: 512字节sector
3.磁盘的预备知识
磁盘接口
IDE out 75MB
SCSCI out
SATA III 6Gbps/s 750MB/s 个人使用
SAS 6Gbps/s 8Gbps/s 1000MB/s 企业使用
msata
sata顶用sas 经济 实惠
ssd 固态盘 个人|企业 强烈 -->贵
1.M.2接口是为超极本(Ultrabook)量身定做的新一代接口标准,以取代原来的mSATA接口。
尺寸小,传输性能高
2.ssd的m.2接口支持两种通道协议
SATA 便宜,通常主板都支持, 慢
PCIE 贵,是否支持需要看主板, 块
3.优势: 块 纯电子 小巧 没噪音 抗摔(抗震)
磁盘基本术语
容量 kb MB GB TB PB EB ......
转速 5400(out) SATA 7200 SAS 15000
IOPS input/output I/O
磁盘在linux下的命名规则
无论是SATA还是SAS都是存放在/dev/sd[a-z] /dev/sdaa-/dev/sdzz
IDE /dev/hda
设备名称 分区信息 设备类型
/dev/sda /dev/sda1 第一块物理磁盘第一分区
/dev/sdb /dev/sdb2 第二块物理磁盘第二个分区
/dev/vdd /dev/vdd4 第四块虚拟磁盘的第四个分区
分区仅能分配4个主要分区
主引导程序即主引导记录MBR
0柱面0磁道1扇区的前446字节
分区最多占用64字节(4个主分区)
结束标注2个字节
分区方式: 比如需要分配6个分区
4个主
3主+1扩展(逻辑分区)
2主+1扩展(2逻辑分区)
了解下如何查看磁盘的大小\文件内容的大小
[root@www ~]# du -sh /etc/
38M /etc/
[root@www ~]# df -h #查看磁盘使用情况
[root@www ~]# lsblk #查看设备详情,以及分区的情况
4.磁盘基本分区Fdisk
1.先准备磁盘
由于没有真实的服务器,只能添加虚拟的磁盘
2.分区fdisk --->分低于2TB的磁盘
[root@www ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 0 5月 5 19:21 /dev/sda
brw-rw---- 1 root disk 8, 1 5月 5 19:21 /dev/sda1
brw-rw---- 1 root disk 8, 2 5月 5 19:21 /dev/sda2
brw-rw---- 1 root disk 8, 16 5月 5 19:21 /dev/sdb
brw-rw---- 1 root disk 8, 32 5月 5 19:21 /dev/sdc
[root@www ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 37G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 4T 0 disk
[root@xuliangwei ~]# fdisk /dev/sdb
Command (m for help): m #输入m列出常用的命令
Command action
a toggle a bootable flag #切换分区启动标记
b edit bsd disklabel #编辑sdb磁盘标签
c toggle the dos compatibility flag #切换dos兼容模式
d delete a partition #删除分区
l list known partition types #显示分区类型
m print this menu #显示帮助菜单
n add a new partition #新建分区
o create a new empty DOS partition table #创建新的空白分区表
p print the partition table #显示分区表的信息
q quit without saving changes #不保存退出
s create a new empty Sun disklabel #创建新的Sun磁盘标签
t change a partitions system id #修改分区ID,可以通过l查看id
u change display/entry units #修改容量单位,磁柱或扇区
v verify the partition table #检验分区表
w write table to disk and exit #保存退出
x extra functionality (experts only) #拓展功能
分配1个分区
[root@www ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #选择分配主分区
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048): #开始的扇区 回车即可
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1G #当前分区的大小
Partition 1 of type Linux and of size 1 GiB is set
Command (m for help): p #查看当前磁盘的分区情况
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x44d0ef75
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
分配2个分区
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
Partition number (2-4, default 2):
First sector (2099200-41943039, default 2099200):
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-41943039, default 41943039): +2G
Partition 2 of type Linux and of size 2 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x44d0ef75
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 6293503 2097152 83 Linux
分配6个分区 (超出了4个主分区,最佳 3p+1e+3l 2p+1e+4l)
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 6293503 2097152 83 Linux
/dev/sdb3 6293504 10487807 2097152 83 Linux
/dev/sdb4 10487808 41943039 15727616 5 Extended
/dev/sdb5 10489856 20975615 5242880 83 Linux
/dev/sdb6 20977664 31463423 5242880 83 Linux
/dev/sdb7 31465472 41943039 5238784 83 Linux
检查分区情况
sdb 8:16 0 20G 0 disk
|-sdb1 8:17 0 1G 0 part
|-sdb2 8:18 0 2G 0 part
|-sdb3 8:19 0 2G 0 part
|-sdb4 8:20 0 1K 0 part
|-sdb5 8:21 0 5G 0 part
|-sdb6 8:22 0 5G 0 part
`-sdb7 8:23 0 5G 0 part
3.格式化->创建文件系统(装修)
[root@www ~]# mkfs.xfs /dev/sdb1
4.挂载
[root@www /]# mount /dev/sdb1 /soft/ #将/soft作为/dev/sdb1分区的一个入口目录
[root@www /]# touch /soft/1111 #添加111文件,实际上是在/dev/sdb1分区上添加的数据
[root@www /]# ls /soft/
1111
[root@www /]# umount /soft/ #卸载/soft挂载信息
[root@www /]# ls /soft/ #soft又回到了原来的目录属性
nginx nginx-1.16.0
---------注意: 原来写入到/dev/sdb1分区的数据不会被删除,当重新挂载一个新的目录,文件还会回来.
[root@www /]# mkdir /data
[root@www /]# mount /dev/sdb1 /data/
[root@www /]# ls /data/
1111
5.实现永久挂载,写入配置文件/etc/fstab 以实现开机时,自动挂载
[root@www ~]# cat /etc/fstab
#设备名称 挂载的位置 文件系统类型 挂载的参数 是否备份 是否检查
/dev/sdb1 /data xfs defaults 0 0
#请先卸载挂载的信息,然后再mount -a
[root@www ~]# mount -a
5.磁盘的基本分区Gdisk
GPT 支持分配大于2个TB以上的磁盘, 同时支持N多个主分区
[root@www ~]# yum install gdisk -y
[root@www ~]# gdisk /dev/sdc
?
n
--->设定大小
p
wq
[root@www ~]# mkfs.xfs /dev/sdc1
[root@www ~]# mkdir /datac
[root@www ~]# mount /dev/sdc1 /datac/
准备一个大于2TB的磁盘, 分5个分区 每个分区500GB --->GDISK
6.磁盘挂载方式Mount
临时操作
1.通过mount进行挂载,但重启将会失效。我们称为临时生效。
# 选项:-t指定文件系统挂载分区 -a 挂载/etc/fstab中的配置文件 -o 指定挂载参数
# 挂载/dev/sdb1至db1目录
[root@xuliangwei ~]# mkdir /db1
[root@xuliangwei ~]# mount.xfs /dev/sdb1 /db1/
[root@xuliangwei ~]# mount -t xfs /dev/sdb1 /db1/
2.挂载的磁盘,如果不想使用可以使用umount进行卸载。
#选项: -l 强制卸载
#1.卸载目录方式
[root@xuliangwei ~]# umount /db1
#2.卸载设备方式
[root@xuliangwei ~]# umount /dev/sdb1
#3.umount不能卸载的情况
[root@xuliangwei db1]# umount /db1
umount: /db1: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1)
#PS: 如上情况解决办法有两种,
1.切换至其他目录
2.使用'-l'选项强制卸载
[root@student db1]# umount -l /db1
永久操作 /etc/fstab
格式
/etc/fstab配置文件编写格式
要挂载的设备 挂载点(入口) 文件系统类型 挂载参数 是否备份 是否检查
/dev/sdb1 /db1 xfs defaults 0 0
第四列:挂载参数。挂载参数有很多,在这块我们了解即可,不必深究。
参数 含义
async/sync 是否为同步方式运行。默认async
user/nouser 是否允许普通用户使用mount命令挂载。默认nouser
exec/noexe 是否允许可执行文件执行。默认exec
suid/nosuid 是否允许存在suid属性的文件。默认suid
auto/noauto 执行mount -a 命令时,此文件系统是否被主动挂载。默认auto
rw/ro 是否以只读或者读写模式进行挂载。默认rw
defaults 具有rw,suid,dev,exec,auto,nouser,async等默认参数的设定
演示临时挂在时参数的使用,只读文件系统
[root@www ~]# mount -o ro /dev/sdc1 /datac/
第五列:是否进行备份。通常这个参数的值为0或者1
选项 含义
0 代表不做备份
1 代表要每天进行备份操作
2 代表不定日期的进行备份操作
第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整
选项 含义
0 不要检验磁盘是否有坏道
1 检验
2 校验 (当1级别检验完成之后进行2级别检验)
建议挂在时使用UUID,UUID
1.怎么磁盘分区的UUID
[root@www ~]# blkid|grep sdc1
/dev/sdc1: UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b"
2.手动测试是否能正常的挂载
[root@www ~]# mount UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b" /datac
3.将信息写入到/etc/fstab文件中,保证下次启动系统自动挂载
UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b" /datac xfs defaults 0 0
4.卸载/datac 挂载信息, 然后使用 mount -a 检查/etc/fstab文件是否ok
[root@www ~]# mount -a
PS: 如果不检查写错了直接重启, 会导致系统无法启动. 无法启动-->提示-->输入密码-->修改配置-->保存-->重启
7.虚拟磁盘介绍SWAP
物理内存不够用会使用SWAP
如果没有配置SWAP,系统则会随机KILL掉占用内存较大的进程.
如果配有SWAP,当程序内存不足时,会大量使用SWAP,此时系统又会特别的缓慢
1.创建分区,并格式化为swap分区。
[root@xuliangwei ~]# fdisk /dev/sdb #分1个G大小
[root@xuliangwei ~]# mkswap /dev/sdb1 #格式化为swap
2.查看当前swap分区大小,然后进行扩展和缩小
[root@xuliangwei ~]# free -m
total used free shared buff/cache available
Mem: 1980 1475 80 10 424 242
Swap: 2047 4 2043
#1.扩展swap分区大小
[root@xuliangwei ~]# swapon /dev/sdb2
[root@xuliangwei ~]# free -m
total used free shared buff/cache available
Mem: 1980 1475 80 10 424 242
Swap: 3047 4 2043
#2.缩小swap分区大小
[root@xuliangwei ~]# swapoff /dev/sdb1
[root@xuliangwei ~]# free -m
total used free shared buff/cache available
Mem: 1980 1475 80 10 424 242
Swap: 2047 4 2043
[root@xuliangwei ~]# swapoff -a #代表关闭所有的swap
3.检查当前swap分区有哪些设备
[root@xuliangwei ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 4616 -2
/dev/sdb1 partition 1048572 0 -2
4.如果磁盘没有过多的分区可用,也可以通过文件增加SWAP空间,本质上还是磁盘
[root@xuliangwei ~]# dd if=/dev/zero of=/opt/swap_file bs=1M count=500
[root@xuliangwei ~]# chmod 0600 /opt/swap_file
[root@xuliangwei ~]# mkswap -f /opt/swap_file
[root@xuliangwei ~]# swapon /opt/swap_file
[root@xuliangwei ~]# free -m
PS: 如果希望swap开机自动挂载,将swap信息追加至/etc/fstab即可。