磁盘管理-中部
分区相关理论知识
mbr是什么
开机启动过程
开机自检(BIOS) (硬件检查)
MBR引导
GRUB菜单 (选择不同的内核)
加载内核 (从硬盘到内存)
运行init进程 (Linux系统里面第一个进程)
读取/etc/inittab配置文件(读取运行级别)
执行/etc/rc.d/rc.sysinit脚本 (系统的初始化脚本 设置IP地址)
执行/etc/rc.d/rc脚本 (根据系统的运行级别 在开机的时候启动不同的软件)
启动mingetty进程 (登录界面)
mbr在哪里
磁盘的引导扇区 0磁头 0磁道 1扇区 前446字节
MBR引导 0头0道1扇区 前446字节
一个扇区的大小为512字节
前446字节 MBR 主引导记录 引导系统启动
中间64字节 磁盘的分区表 记录着磁盘分区从哪里开始到哪里结束
最后2字节 分区结束表示55AA
分区表
在分区表的64字节里,划分为4个格子 16*4
每个格子里存放的是分区的信息(主分区 扩展分区)
查看内存使用情况
free -h
Linux把你是使用过的命令或文件 替你缓存(buffer cache)起来,提高下次使用速度
[root@nfsnobody ~]# free -h
total used free shared buffers cached
Mem: 980M 721M 259M 224K 59M 529M
-buffer +buffer
-cache +cache
-/+ buffers/cache: 131M 848M 这个位置才是真正的剩余内存
Swap: 767M 196K 767M
磁盘分区
三种分区
主分区
最多有4个主分区
扩展分区
没有办法直接使用 ,需要划分成逻辑分区才可以使用。
逻辑分区
必须要在扩展分区下面划分逻辑分区才可以使用。
主分区 primary 每个分区占用16个字节的分区表 一般一定要有 存放数据
扩展分区 extend 无法直接使用 最多1个
逻辑分区 logical 在扩展分区下创建逻辑分区 存放数据
磁盘分区的命名规则
主分区 1-4
扩展分区 1-4 一般为4
逻辑分区 从5开始
第1块sas硬盘的第一个主分区 /dev/sda
第2块sata硬盘的第2个主分区 /devsdb2
第3块sata硬盘的第1个逻辑分区 /dev/sdc5
磁盘名称示例
第一块硬盘 sda
第二块硬盘 sdb
第三块硬盘 sdc
第一块硬盘的第一个主分区:sda1
第一块硬盘的第一个逻辑分区:sda5
第二块硬盘的第二个逻辑分区:sdb6
在系统中磁盘分区的命名
磁盘设备都放在/dev/目录下
sas/sata/scsi/接口 sd 开头
ide接口 hd开头
分区方式
没有重要数据
/boot 引导分区 200M 存放系统的引导信息 内核
swap 交换分区 防止内存用光了 临时的一个内存
如果你的内存小于8G swap是内存的1.5倍 如果你的内存大于8G swap给8G
/ 根分区 剩余多少给多少
很多重要数据
/boot 引导分区 200M 存放系统的引导信息 内核
swap 交换分区 防止内存用光了 临时的一个内存
如果你的内存小于8G swap是内存的1.5倍 如果你的内存大于8G swap给8G
/ 根分区 20G-200G
/data 存放重要的数据 剩余多少给多少
不知道数据是否重要
/boot 引导分区 200M 存放系统的引导信息 内核
swap 交换分区 防止内存用光了 临时的一个内存
如果你的内存小于8G swap是内存的1.5倍 如果你的内存大于8G swap给8G
/ 根分区 20G-200G
剩余空间不分 放着谁使用这台服务器谁来分区
磁盘分区
linux里面的分区工具
fdisk 主要是给磁盘小于2T(只能出来分区表是mbr的)
parted 主要是给磁盘大于2T(gpt)
创建环境
在虚拟机添加两块硬盘 模拟实验环境
/etc/fatab详解
/etc/fatab 开机自动挂载
#
# /etc/fstab
# Created by anaconda on Tue Jul 10 18:21:44 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=c4f4be67-f408-4f14-b01e-a0c0777932cb / ext4 defaults 1 1
UUID=8dc40910-35ed-4d1b-acd7-5dad0ad47746 /boot ext4 defaults 1 2
UUID=09e2ce6c-7249-4239-8843-5ef9cc3a9a99 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
设备分区名称 第二列挂载点(目录) 文件系统类型 挂载参数 是否备份 是否开机磁盘检查
fdisk分区
刚才模拟环境添加了两块硬盘
[root@nfsnobody ~]# fdisk -l|grep sd[a-c]:
Disk /dev/sda: 21.5 GB, 21474836480 bytes
Disk /dev/sdb: 213 MB, 213909504 bytes 这两块就是刚才添加的 213MB
Disk /dev/sdc: 213 MB, 213909504 bytes
fdisk相关命令
fdisk命令及参数
fdisk -l
-u 磁盘分区的时候以扇区为单位默认是按照柱面
-c 关闭dos兼容模式
fdisk内部命令
m 显示帮助
n new 创建分区
p 显示所有分区信息
d 删除分区
w 保存并退出
q 退出不保存
创建一个主分区
如果要把硬盘全部空间都用上 在选择大小那一列 直接回车 不输入内容 默认是按最大空间
创建一个10MB主分区
fdisk -cu关闭dos兼容模式 磁盘分区的时候以扇区为单位默认是按照柱面
[root@nfsnobody ~]# fdisk -cu /dev/sdb 进入fdisk 编辑分区
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x303d0abc.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n 创建分区
Command action 选择分区类型
e extended
p primary partition (1-4)
p
Partition number (1-4): 1 分区号码
First sector (2048-417791, default 2048):
从哪里开始 (直接回车 按默认)
Using default value 2048 默认选择第一个扇区
Last sector, +sectors or +size{K,M,G} (2048-417791, default 417791): +10M
创建10M的分区 选择+10M
Command (m for help): p p显示所有分区信息
Disk /dev/sdb: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders, total 417792 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: 0x303d0abc
Device Boot Start End Blocks Id System
/dev/sdb1 2048 22527 10240 83 Linux
创建扩展分区及逻辑分区
工作中 扩展分区的分区原则是:剩多少给多少
创建10MB的主分区 创建一个使用所有容量的扩展分区 创建两个50MB逻辑分区
[root@nfsnobody ~]# fdisk -cu /dev/sdb 进入fdisk 编辑分区
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x303d0abc.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): p 从上一步继续 创建两个逻辑分区 查看一下有的分区
Disk /dev/sdb: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders, total 417792 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: 0x303d0abc
Device Boot Start End Blocks Id System
/dev/sdb1 2048 22527 10240 83 Linux
Command (m for help): n 创建新的分区
Command action
e extended 扩展分区
p primary partition (1-4)
e 创建扩展分区分区
Partition number (1-4): 2 选择分区号码
First sector (22528-417791, default 22528):
Using default value 22528
Last sector, +sectors or +size{K,M,G} (22528-417791, default 417791):
Using default value 417791
Command (m for help): n 创建新的分区
Command action
l logical (5 or over) 逻辑分区,创建完扩展分区后只能创建逻辑分区
p primary partition (1-4)
l 选择l 创建逻辑分区 有扩展分区后才能创建逻辑分区
First sector (24576-417791, default 24576):
Using default value 24576
Last sector, +sectors or +size{K,M,G} (24576-417791, default 417791): +50M 选择50M
Command (m for help): P 查看下所有的分区信息
Disk /dev/sdb: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders, total 417792 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: 0x303d0abc
创建成功 一个10M的主分区 两个逻辑分区
如果要删除的话 d删除 删除扩展分区 其下的所有逻辑分区都会被删除
Device Boot Start End Blocks Id System
/dev/sdb1 2048 22527 10240 83 Linux
/dev/sdb2 22528 417791 197632 5 Extended
/dev/sdb5 24576 126975 51200 83 Linux
/dev/sdb6 129024 231423 51200 83 Linux
fdisk分区及挂载
创建一个主分区
进入fdisk
[root@nfsnobody ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x0a515057.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
警告 : 可以关闭dos的兼容模式,使用扇区作为分区的默认单位 -cu ↓
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p 查看分区信息
Disk /dev/sdb: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0a515057
Device Boot Start End Blocks Id System
现在没有创建分区 所以为空
创建主分区
Command (m for help): n 创建新分区
Command action
e extended
p primary partition (1-4)
p 创建主分区
Partition number (1-4): 1 分区号码设置为一
First cylinder (1-204, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-204, default 204):
Using default value 204
创建完保存退出
fdisk编辑完退出前记得保存
Command (m for help): w w保存退出 fdisk编辑完 退出前记得保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@nfsnobody ~]# fdisk -l 创建完成后 可以查看下
格式化文件系统
mkfs ==make filesystem即创建文件系统。
[root@nfsnobody ~]# partprobe /dev/sdb1 操作这一步 正常是不回任何提示的
[root@nfsnobody ~]# mkfs.ext4 /dev/sdb1
这一步会生成block和inode
使用mkfs.ext4 会报以下警告
This filesystem will be automatically checked every 25 mounts or
这个磁盘分区会被自动检查 每挂载25次或每隔180天 就会进行一次磁盘检查
180 days, whichever comes first. Use tune2fs -c or -i to override.
关闭磁盘的自动检查 使用tune2fs -c or -i可以关闭
-c 每挂载多少次进行一次磁盘检查 -c 0 关闭
-i 每隔多少天进行一次磁盘检查 -i 0 关闭
关闭分区的自动检查
-c 每挂载多少次进行一次磁盘检查 -c 0 关闭
-i 每隔多少天进行一次磁盘检查 -i 0 关闭
[root@nfsnobody ~]# tune2fs -c 0 -i 0 /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
挂载分区
挂载到/data 没有/data记得事先创建好
[root@nfsnobody ~]# mkdir -p /data 创建挂载目录
[root@nfsnobody ~]# mount /dev/sdb1 /data/ 挂载
[root@nfsnobody ~]# df -h 挂载后记得检查
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.7G 16G 10% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 35M 146M 19% /boot
/dev/sdb1 194M 1.8M 182M 1% /data 已挂载
永久挂载
/etc/rc.local 开机自启动
追加到 /etc/fatab底部 /bin/mount /dev/sdb1 /data/
/etc/fatab 开机自动挂载
[root@nfsnobody ~]# vim /etc/fstab
/dev/sdb1 /data ext4 defaults 0 0
parted创建分区
parted命令详解
parted 的使用 parted 还可以非交互式创建分区
parted使用需谨慎 parted是实时保存的
parted可以创建gpt和 mbr两种格式的分区表
gpt
msdos(mbr)
parted /dev/sdc
print 显示分区信息
mktable 创建磁盘分区表
gpt
msdos(mbr)
mkpart 创建分区
rm 删除分区
q 退出不保存
parted帮助信息
parted内置命令 h 是查看帮助
[root@nfsnobody ~]# parted /dev/sdc
GNU Parted 2.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) h
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
创建分区表
mkpart PART-TYPE [FS-TYPE] START END make a partition
创建一个分区
mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
创建一个分区 分区带着文件系统
print [devices|free|list,all|NUMBER] display the partition table, available
devices, free space, all found partitions, or a particular partition
显示分区信息
rm NUMBER delete partition NUMBER
删除一个分区
mkpart 可以使用的PART-TYPE类型
GPT 格式可以创建N个主分区,所以类型都选为主分区即可。
(parted) help mkpart
mkpart PART-TYPE [FS-TYPE] START END make a partition
PART-TYPE is one of: primary, logical, extended
主分区 ,逻辑分区 ,扩展分区
创建分区
parted 创建分区实时生效,比较危险。
[root@nfsnobody ~]# parted /dev/sdc 使用parted编辑分区
GNU Parted 2.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p p查看分区
Error: /dev/sdc: unrecognised disk label 未识别
(parted) mktable gpt 创建 gpt 磁盘分区表
(parted) p p查看分区
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 214MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
(parted) mkpart LH 0 10 创建 分区 分区名LH 从多少开始到多少结束
Warning: The resulting partition is not properly aligned for best performance.
提示分区没有对齐,这个错误无视即可。
Ignore/ Cancel? i 忽略信息 i 忽略/取消
(parted) p p查看分区
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 214MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 10.0MB 9983kB LH
(parted) mkpart LH 10 20 创建 分区 分区名LH 从多少开始到多少结束
(parted) p p查看分区
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 214MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 10.0MB 9983kB LH
2 10.5MB 19.9MB 9437kB
删除分区
(parted) rm 2 删除第二个分区
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 214MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 10.0MB 9983kB LH
非交互式创建分区
parted 后面直接跟上内置的命令 就可以直接使用 实现非交互式创建
parted /dev/sdc mktable gpt
parted /dev/sdc mkpart primary 0 10 ignore
parted /dev/sdc mkpart primary 10 20
parted /dev/sdc p
[root@nfsnobody ~]# parted /dev/sdc p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 214MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 10.0MB 9983kB LH
[root@nfsnobody ~]# parted /dev/sdc mkpart LH 50 100
Information: You may need to update /etc/fstab.
[root@nfsnobody ~]# parted /dev/sdc print 显示磁盘的格式
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 50.0MB 50.0MB primary
2 50.3MB 99.6MB 49.3MB primary
增加swap
故障案例 java程序占用 大量内存 开始使用swap swap 不足
增加swap
查看swap信息 free -h
[root@nfsnobody ~]# free -h
total used free shared buffers cached
Mem: 980M 275M 704M 236K 28M 132M
-/+ buffers/cache: 114M 866M
Swap: 767M 0B 767M swap信息
创建一个文件 成为swap
dd创建
/dev/zero 不断输出 零
/dev/null 黑洞
if input file 从哪里获取数据 (输入文件)
of output file 输出到哪里
bs block size 每次复制多少文件
count 复制多少次
创建一个100M的文件
[root@nfsnobody ~]# dd if=/dev/zero of=/tmp/100m bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.441882 s, 237 MB/s
[root@nfsnobody ~]# ll -h /tmp/100m 检查
-rw-r--r-- 1 root root 100M Aug 15 11:58 /tmp/100m 创建成功
[root@nfsnobody ~]# file /tmp/100m
/tmp/100m: data 现在的类型为data 数据块。
让这个文件成为swap
创建swap 让这个文件成为swap(格式化)
mkswap
[root@nfsnobody ~]# mkswap /tmp/100m
mkswap: /tmp/100m: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 102396 KiB
no label, UUID=9ee16d10-5fab-495d-a5fd-697b74ca360e
[root@nfsnobody ~]# file /tmp/100m file命令显示这个文件的类型
/tmp/100m: Linux/i386 swap file (new style) 1 (4K pages) size 25599 pages
mkswap命令将文件类型格式化成swap格式
激活swap分区
swapon -s 显示swap的组成情况
[root@nfsnobody ~]# swapon /tmp/100m 挂载(激活)
[root@nfsnobody ~]# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 786428 0 -1
/tmp/100m file 102396 0 -2
永久增加
/etc/rc.local
/sbin/swapon /tmp/100m
让添加的swap永久生效
把命令放入/etc/rc.local 开机自启动文件中。
将swapon /tmp/100m此命令追加到 /etc/rc.local
写入/etc/fstab 文件中
格式为:
/tmp/100m swap swap defaults 0 0
显示系统中的uuid
使用blkid 命令可以查看系统磁盘的uuid
[root@nfsnobody ~]# blkid
/dev/sda3: UUID="49bad9e9-cf33-4a15-ba84-4fd28e70bd29" TYPE="ext4"
/dev/sda1: UUID="7426d0f3-56d6-4fa6-a1c3-f2c8632bfbb8" TYPE="ext4"
/dev/sda2: UUID="46bc0a52-b13f-4845-8baa-90207849d5c5" TYPE="swap"
/dev/sdb1: UUID="7101630b-b325-49d1-92b9-0a500c2a07f6" TYPE="ext4"
未格式化出现的错误
对磁盘进行一些操作的时候可能会提示没有格式化磁盘,需要格式化。
[root@nfsnobody ~]# tune2fs -c0 -i0 /dev/sdc
tune2fs 1.41.12 (17-May-2010)
tune2fs: Bad magic number in super-block while trying to open /dev/sdc
Couldn't find valid filesystem superblock.
没有找到可用的文件系统