认识磁盘
- 从外到内,磁道从0~XXX。
- 扇区默认512字节
- 先读完一个柱面的0号磁道,接着读第二个柱面的0号磁道......直至所有柱面的0号磁道读写完毕,进入下一个磁道。
磁盘命名规则
物理磁盘:sd开头;虚拟磁盘vd开头
sdb1:第二块物理磁盘的第二个分区
查看磁盘的uuid号
bash
[root@web~]# blkid
/dev/sda1: UUID="bd68c0c6-6244-40d9-822c-c3f4cb42089d" TYPE="xfs"
/dev/sda2: UUID="d1d71726-0fc7-421a-92b9-bd94bee023d4" TYPE="swap"
/dev/sda3: UUID="74cddce8-5b9d-4220-a1b9-165aba807f6b" TYPE="xfs"
raid卷
做raid好处
- 提高磁盘冗余
- 提高读写性能
- 更多的磁盘容量
raid级别
raid名称 | 硬盘数 | 安全性 | 容量 | 性能 | 场景 |
---|---|---|---|---|---|
raid0 | 1~ | 无 | 所有磁盘之和 | 读写快 | 从节点 |
raid1 | 2 | 最多坏1 | 一半 | 读OK写慢 | 系统盘 |
raid5 | 3~ | 最多坏1 | n-1/n | 读OK写慢 | 普通数据库 |
raid10 | 4~(2的倍数) | 最多坏一半 | 一半 | 读写快 | 高并发,主库 |
raid5校验原理:所有校验数据数据加起来正好是一块硬盘容量。
- 为了更好的冗余,还可以在raid5增加一个热备盘
raid10结构图
MBR分区类型
-
MBR所处磁盘位置:0磁道的1扇区
-
MPR:每块硬盘上存放的硬盘引导程序,总共512字节
-
这512字节里包含:
-
引导程序446字节(MBR)
-
磁盘分区表
-
结束标记55AA
-
MBR缺点
- 一个磁盘支持的最大容量只有2T
- 最多只能4个主分区,若要做到更多分区。则要用到拓展分区
假设有一个1T的磁盘
-
如果一个分区用了1T,那么无法继续创建分区
-
4个主分区总共用了600G,还有400G是无法使用的,造成了浪费。
MBR缺点解决
在第四块分区设为拓展分区,以达到不断拓展效果
GPT分区类型和parted命令
优点:主分区可以无限。所用命令为parted
parted
parted分区是实时生效,不像fdisk在内存中。
parted命令介绍
parted内部命令 | 说明 |
---|---|
mktable/mklable gpt/msdos | 磁盘引导类型GPT/MBR |
p | 查看当前分区 |
mkpart 分区名 开始 结束 | 创建分区及分区名、分区大小 |
rm +nuber | 删除分区 |
resizepart | 调整已有分区的大小,如resizepart 1 100% ,resizepart 1 512GB |
parted分区(交互式)
MVME磁盘
1.给Centos7添加一块Nvme硬盘(SCSI也可以)
2.查看系统已经识别到新加的硬盘nvme0n1
bash
[root@wzy dev]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 128G 0 disk
...........省略
nvme0n1 259:0 0 32G 0 disk
3.设置为GPT分区
bash
parted /dev/nvme0n1
(parted) mktable gpt
警告: The existing disk label on /dev/nvme0n1 will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? Yes #出现提示:操作回清除数据选Yes
(parted)
4.用p查看当前成为了GPT
bash
(parted) p
Model: NVMe Device (nvme)
Disk /dev/nvme0n1: 34.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt #GPT分区
Disk Flags:
Number Start End Size File system Name 标志
(parted)
5.mkpart命令开始分区
nvdisk是分区名。0表示开始,100是结束,所以这个分区最终大小是100MB。
bash
(parted) mkpart nvdisk1 0 100
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? Ignore
(parted)
6.查看分区1
bash
(parted)p
Model: NVMe Device (nvme)
Disk /dev/nvme0n1: 34.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 17.4kB 100MB 100MB nvdisk1
7.继续创建分区
bash
(parted) mkpart nv2 100 300
(parted) p
.........
Number Start End Size File system Name 标志
1 17.4kB 100MB 100MB nv1
2 100MB 300MB 200MB nv2
8.用lsblk命令查看磁盘
多了2个分区
bash
nvme0n1 259:0 0 32G 0 disk
├─nvme0n1p1 259:1 0 95.4M 0 part
└─nvme0n1p2 259:2 0 190.8M 0 part
9.格式化磁盘分区,挂载后就可以使用了
bash
[root@wzy mnt]# mkfs.xfs /dev/nvme0n1p1
[root@wzy mnt]# mount /dev/nvme0n1p1 /mnt
[root@wzy mnt]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
........
/dev/nvme0n1p1 93M 5.0M 88M 6% /mnt
SATA磁盘
bash
[root@m05~]# parted /dev/sdc
GNU Parted 3.1
使用 /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
警告: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? yes
# 创建一个主分区类型为ext4
(parted) mkpart primary ext4 0% 648GB
# 查看所有分区
(parted) p
Model: ATA VMware Virtual S (scsi)
Disk /dev/sdc: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 1049kB 648GB 648GB ext4 primary
# 退出parted模式
(parted) quit
信息: You may need to update /etc/fstab.
[root@m05~]# lsblk /dev/sdc1
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc1 8:33 0 603.5G 0 part
[root@m05~]# mkfs.ext4 /dev/sdc1
# 然后就是挂载步骤,略...
parted分区案例(使用整块磁盘&非交互式)
创建一个目录/data-sdc1,把整个磁盘sdc挂载上去。要求使用parted命令,设置GPT分区
bash
[root@m05~]# lsblk /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 0 2T 0 disk
1.查看磁盘信息,先确认 /dev/sdc 的当前状态:
bash
[root@m05~]# parted /dev/sdc print
错误: /dev/sdc: unrecognised disk label
Model: ATA VMware Virtual S (scsi)
Disk /dev/sdc: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
2.创建 GPT 分区表,将磁盘的分区表设置为 GPT:
bash
[root@m05~]# parted /dev/sdc mklabel gpt
信息: You may need to update /etc/fstab.
[root@m05~]# echo $?
0
3.创建一个新的分区,创建一个覆盖整个磁盘的分区:
bash
[root@m05~]# parted /dev/sdc mkpart primary ext4 0% 100%
信息: You may need to update /etc/fstab.
[root@m05~]# echo $?
0
[root@m05~]# lsblk /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 0 2T 0 disk
└─sdc1 8:33 0 2T 0 part
primary:分区类型。
ext4:文件系统类型(仅标识,实际文件系统需要单独创建)。
0% 和 100%:起始和结束范围,表示使用整个磁盘。
4.格式化分区,将新创建的分区格式化为 ext4 文件系统:
bash
[root@m05~]# mkfs -t ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
134217728 inodes, 536870400 blocks
26843520 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2684354560
16384 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@m05~]#
5.挂载并查看:
bash
[root@m05~]# mkdir /data-sdc1
[root@m05~]# mount /dev/sdc1 /data-sdc1/
[root@m05~]# df -Th /dev/sdc1
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sdc1 ext4 2.0T 81M 1.9T 1% /data-sdc1
磁盘安装(fdisk操作)
- 分区
- 分配文件系统
- 挂载
硬盘添加前:
[root@wzyCentos mnt]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2
硬盘添加后:
[root@wzyCentos ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc
b c代表硬盘块数;b表示第二块硬盘,c第三块
fdisk命令
进入fdisk后删除键无法使用,用Ctrl + 删除键或Ctrl + U
fdisk命令选项 | 说明 |
---|---|
-l | 列出硬盘,不指定磁盘,默认列出所有 |
fdisk内部命令 | 说明 |
---|---|
d | 删除分区 |
n | 新建分区 |
w | 执行所做操作 |
h | 获取帮助 |
p | 查看此块磁盘分区信息 |
t | 更改分区号 |
- 拓展分区最多只有一个,创建一个拓展分区后只能创建逻辑分区
- 逻辑分区号只能从5开始,即使1-4还有空余分区号
- 未挂载前,只能看到磁盘文件,df -h看不到
bash
[root@wzy test]# ls /dev/sdb*
/dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb5
fdisk分区操作
安装步骤
fdisk /dev/sdb
m查看帮助
- n新建分区
- p 主分区
- e 扩展分区
- 扇区默认
bash
Select (defaultp): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
-
添加想要的容量
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+20m
bash
命令(输入 m 获取帮助):p #使用p查看出现了sdb1分区
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 43007 20480 83 Linux
- 所做配置写入磁盘
注意提示所以输入w之前操作都是在内存当中,退出后不会发生任何变化
bash
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
创建文件系统
mkfs 创建文件系统,并把磁盘分区格式化
mkfs.xfs /dev/sdb1
mkfs命令 | 说明 |
---|---|
mkfs.xxx | 要设置的文件系统 |
-f | 强制转化 |
-t | 指定文件系统类型 |
xfs(xfs为Centos7默认) ext4 | 文件系统类型 |
挂载分区
磁盘分区作为一个设备文件,需要一个目录作为进入的入口,所以把格式化的分区挂载在一个目录。例如/mnt
挂载相关命令 | 说明 |
---|---|
mount | 挂载 |
umount | 卸下挂载 |
自动挂载使用fstab实现
系统重启后挂载会丢失
方法1:在/etc/rc.local中写入挂载命令
方法2:专门执行挂载的配置文件/etc/fstab
fstab文件分析
位于:/etc/fstab
fstab字段分析:
-
设备名
文件系统对应的设备或分区(如 /dev/sdb1),也可以使用 UUID 或标签(如 UUID=xxxx-xxxx 或 LABEL=MyDisk)
-
挂载点
文件系统在系统中的挂载位置(如 /home 或 /mnt/data)
-
文件系统类型
文件系统格式(如 ext4、xfs、swap、ntfs)
-
挂载选项
挂载时的选项,用逗号分隔(如 defaults、ro、noatime 等)
defaults
默认选项,相当于 rw, suid, dev, exec, auto, nouser, asyncnoexec
,禁止在挂载点运行二进制文件nosuid
,禁止 SUID 和 SGID 位的权限提升nodev
,禁止解析挂载点上的设备文件noatime
/relatime
,禁止或优化 文件最近访问时间的更新,以提升性能。noatime
完全禁用更新,relatime
仅在最近一次修改或访问时间较旧时更新sync
/async
,数据写入方式,sync
为同步写入,async
为异步写入uid
/gid
,指定挂载的所有者用户(UID)和用户组(GID)user
/nouser
,允许(user
)或禁止(nouser
)非管理员用户挂载
-
转储选项
用于备份程序(dump)。0 表示忽略;1 表示优先备份;2 表示次级备份
-
文件系统检查顺序
fsck 启动时检查文件系统的顺序。0 表示不检查;1 表示优先检查(通常是根文件系统);2 表示次级检查。
设备名/UUID | 挂载点 | 文件系统 | 挂载选项 | 转储选项 | 文件系统检查顺序 |
---|---|---|---|---|---|
/dev/sdb1 | /mnt | xfs | defaults | 0 | 0 |
swap交换分区
-
内存不足危害:系统会随机杀死进程
-
swap概述:使用一部分硬盘空间充当虚拟内存使用,但性能不如物理内存
-
swap查看:free -h查看总体内存使用状况,包括虚拟内存
bash
[root@wzy mnt]# free -h
total used free shared buff/cache available
Mem: 972M 213M 639M 7.6M 119M 625M
Swap: 2.0G 0B 2.0G
swap扩容
1.创建一个1G的交换文件
dd if=/dev/zero of=/tmp/swap1g bs=1M count=1000
- if = input file
- of = outputfile
- bs 读取大小
- count 读取次数
2.把swp文件格式化
mkswap /tmp/swap1g
3.修改为0600权限
chmod 0600 /tmp/swap1g
4.挂载
swapon /tmp/swap1g
永久挂载在fstab文件中增加,或者在rc.local文件中写入对应命令
/dev/swap1g swap swap defaults 0 0
5.维护命令,取消swap
total used free shared buff/cache available
Mem: 972M 213M 639M 7.6M 119M 625M
Swap: 2.0G 0B 2.0G
### swap扩容
1.创建一个1G的交换文件
`dd if=/dev/zero of=/tmp/swap1g bs=1M count=1000`
- if = input file
- of = outputfile
- bs 读取大小
- count 读取次数
2.把swp文件格式化
`mkswap /tmp/swap1g`
3.修改为0600权限
`chmod 0600 /tmp/swap1g`
4.挂载
`swapon /tmp/swap1g`
永久挂载在fstab文件中增加,或者在rc.local文件中写入对应命令
`/dev/swap1g swap swap defaults 0 0`
5.维护命令,取消swap
`swapoff /tmp/swap1g`