第1章 磁盘知识体系
1.1 硬盘
企业sas(默认)
生产环境/线上环境-sas 15k转 300g-600g 10k转 108t 7.2k转 8t
sata(内部 线下环境)
线下环境使用(公司内部-备份) 1t 2t
1.2 buffer和cache区别
写buffer 写缓冲
读cache 读缓存
1.3 如何查询内存使用情况
[root@dzc ~]# free -h
total used free shared buffers cached
Mem: 980M 448M 532M 232K 80M 187M
-/+ buffers/cache: 180M 800M #这才是真正的内存
Swap: 767M 0B 767M
内存是否被linux吃了?
- linux特点:把你使用过得命令 程序 临时存放在了 内存中的buffer/cache区 缓存区
- 方便下次使用
- 使用其他命令的时候 这些区域会自动被清理
系统真正剩余的内存
free +buffers + cached
1.4 硬盘选购小结:
线上的业务,用sas磁盘。
线下的业务,用sata磁盘,磁带库。
线上高并发、小容量(很多人都想看的图片)的业务,ssd磁盘。
成本思想:根据数据的访问热度,智能分析分层储存。sata+ssd
一台服务器中
把用户经常使用图片 存放在ssd里面 60g
不经常使用的放在 sata 500g
【案例】高并发线上服务器使用sata硬盘
网站宕机,数据库,连续宕机
高并发/线上服务器 sas硬盘+raid 10
1.5 什么是CDN
饭店 - 总店
南极
北极
如果用户在南极----通过南极分店 送货
用户在哪里 就近选择分店然后送货
第2章 磁盘的内部组成
2.1 磁盘相关的名词
disk ----磁盘
head -----磁头
track-----磁道
sector -----扇区
磁盘上面最小的单位 一个扇区512字节
cylinder -----柱面
units ---------单元块(一个柱面的大小)
2.2 计算磁盘的容量
一个柱面的大下*柱面的数量
[root@dzc ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512
I/O size (minimum/optimal): 512 bytes / 512 byte
Disk identifier: 0x0003d54e
255 heads 255个磁头
63 sectors/track 每个 磁道上面有63个扇区
1305 cylinders 一共有1305个柱面
Units 柱面的大小 单元块
第3章 raid
3.1 raid 磁盘阵列
- 你可以获得更大的容量,更安全,更快
- 服务器上的硬盘,不做raid是无法使用的。
3.2 raid级别
3.2.1 raid0 条带
优点:把所有硬盘的容量加在一起,读写速度是一块硬盘的n倍.
缺点:一块硬盘坏了,所有数据无法使用。
数量:需要至少1块 硬盘
使用背景:数据不是很重要,追求性能 数据库的从库(小弟) 集群的节点
3.2.2 raid1 镜像
优点:安全 可以损失一块,100%冗余
缺点:写入速度比较慢,读取的时候还可以,成本高
数量:只能是两块硬盘
使用背景:对于数据的安全比较高,但是不需要太多的性能
3.2.3 raid5 既有raid0性能 raid1冗余
优点:奇偶校验,冗余 最多损坏一块硬盘 损失一块硬盘的容量
缺点:读取的时候还可以,写入比较慢
数量:至少三块
使用背景:通用
3.2.4 raid10
优点:读写速度快,冗余 最多可以损坏一半
缺点:成本高 容量可以使用所有硬盘的一半
数量:最少4块硬盘 硬盘的数量是偶数
使用背景:数据库
第4章 磁盘分区
linux 启动过程
- 开机自检 bios
- mbr引导
- grub菜单
- 加载内核
- 运行init进程
- 读取运行级别 /etc/inittab
- 运行初始化脚本 /etc/rc.sysinit 设置主机名 和ip地址
- 根据运行级别启动 /etc/rc3.d 开机自启动服务
- /etc/rc.local
- 显示登录界面
4.1 mbr引导 主引导记录
磁盘的0磁头 0磁道1扇区前446字节 512字节的
446--MBR
64字节-分区表 划分为4个格子 16*4 每个格子里面存放的是分区的信息(主分区 扩展分区)
主分区 扩展分区 逻辑分区关系
mbr 主引导记录
[root@dzc ~]# dd if=/dev/sda of=/tmp/512.bin bs=512 count=1
[root@dzc ~]# od -xa /tmp/512.bin
查看二进制文件的内容 od -xa
主分区
最多有4个
4.1.1 系统中 磁盘分区的命名
/dev/
sas/sata/scsi-----sd^
第一块sas硬盘 sda
第二块sas硬盘 sdb
扩展分区
没有办法直接使用 存放数据
必须要在扩展分区下面划分逻辑分区才可以 使用。
逻辑分区
/sata/scsi/sas sda 5-15
4.1.2 分区的命名
主分区+扩展分区 1-4
逻辑分区 5
第一块硬盘的第一个主分区 :sda1
第一块硬盘的第一个逻辑分区:sda5
第二块硬盘的第二个逻辑分区:sdb6
4.1.3 ps aux rss与vsz什么区别?
VSZ 进程所占用的虚拟内存的大小(物理内存+swap)
RSS 进程所占用的内存(物理内存)
[root@oldboyedu-40 ~]# ps aux
USER PID %CPU %MEM VSZ RSS(KB) COMMAND
运行这个进程用户 进程号 cpu使用率 内存使用率 虚拟内存大小 物理内存使用量 命令
4.2 磁盘与分区
fdisk 主要给磁盘小于2TB(分区表是mbr)
parted 主要是给磁盘大于2TB(分区表是gpt)
4.2.1 通过fdisk给磁盘进行分区
10M(主)
40M(逻辑)
[root@dzc ~]# fdisk -cu /dev/sdb
Command (m for help): m
Command action
d delete a partition 删除一个分区
m print this menu 显示帮助菜单
n add a new partition 创建一个分区
p print the partition table 显示分区表
q quit without saving changes 不保存退出
w write table to disk and exit 保存退出
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First sector (22528-208895, default 22528):
Using default value 22528
Last sector, +sectors or +size{K,M,G} (22528-208895, default 208895):
Using default value 208895
Command (m for help): p
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 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 identifier: 0x7f910191
Device Boot Start End Blocks Id System
/dev/sdb1 2048 22527 10240 83 Linux
/dev/sdb2 22528 208895 93184 5 Extended
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First sector (24576-208895, default 24576):
Using default value 24576
Last sector, +sectors or +size{K,M,G} (24576-208895, default 208895): +40M
Command (m for help): P
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 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 identifier: 0x7f910191
Device Boot Start End Blocks Id System
/dev/sdb1 2048 22527 10240 83 Linux
/dev/sdb2 22528 208895 93184 5 Extended
/dev/sdb5 24576 106495 40960 83 Linux
Command (m for help): w
4.2.2 添加一块硬盘sdb 100M 划分一个分区
#####第一个里程碑-分区
[root@oldboyedu-40 ~]# fdisk -cu /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First sector (2048-208895, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895):
Using default value 208895
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
第二个里程碑-装修-格式化创建文件系统
#mkfs == make filesystem
[root@oldboyedu-40 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
......
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
#关闭分区的自我检查
[root@oldboyedu-40 ~]# tune2fs -c0 -i0 /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
#####第三个里程碑-挂载
#mount 谁 哪里
#mount 设备/分区 入口
[root@oldboyedu-40 ~]# mount /dev/sdb1 /mnt/
[root@oldboyedu-40 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 2.5G 6.0G 29% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdb1 94M 1.6M 88M 2% /mnt
第四个里程碑--让磁盘永久挂载 让磁盘在开机的时候自动挂载
#1) /etc/rc.local
/bin/mount /dev/sdb1 /mnt/
#2) /etc/fstab
[root@oldboyedu-40 ~]# cat /etc/fstab
UUID=aee0ea69-0959-4579-a3ff-f49a65c74220 / ext4 defaults 1 1
UUID=db3a1bcc-0362-416e-92b3-2c13a821fe08 /boot ext4 defaults 1 2
UUID=91248463-928e-4577-9c1b-d079263df919 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
第1列:磁盘分区 设备
第2列:挂载在哪里 挂载点
第3列:文件系统的类型
第4列:挂载参数
第5列:是否进行dump备份
第6列:是否进程fsck 磁盘检查
tail -1 /etc/fstab
#/dev/sdb1 /mnt ext4 defaults 0 0