第1章 如何查看内存使用情况
[root@zs ~]# free -h
total used free shared buffers cached
Mem: 980M 914M 66M 232K 61M 680M
-/+ buffers/cache: 172M 808M
真正使用的 内存 剩余
Swap: 767M 0B 767M
Linux把你使用过的命令或文件 替你缓存(buffer cache)起来,提高下次使用速度
写buffer
读cache
(不要手动清空buffer和cache)会自动覆盖
第2章 磁盘分区
Linux启动流程
1. 开机自检 (内存cpu硬件是否有问题【硬件检查】)
2. MBR引导
3. GRUB菜单
4. 加载内核
5. 运行init进程 (Linux系统里面的第一个进程)
6. 读取运行级别(/etc/inittab配置文件)
7. 执行/etc/rc.d/rc.sysinit脚本(系统的初始化脚本【设置主机名 配置IP地址】)
8. 执行/etc/rc.d脚本 (3级别)(根据运行级别 启动对应服务【开机自启动】)
9. 启动mingetty进程
10. 进入登陆界面
磁盘的引导扇区 0磁头 0磁道 1扇区
MBR引导 0头0道1扇区446字节
MBR(Master Boot Record) 主引导记录 引导系统启动
DPT(Disk Partition Table) 磁盘分区表 记录着磁盘分区从哪里开始到哪里结束
2.1 主分区:(primary) 每个分区占用16字节的分区表
2.2 扩展分区:(extended)无法直接使用
2.3 逻辑分区(logical):存放数据
2.4 磁盘分区表:
主分区 primary 一般一定要有 用于存放数据
扩展分区 extend 最多1个 无法直接使用
逻辑分区 logical 存放数据
2.5 磁盘分区的命名规则:
2.5.1 磁盘分区
[root@zs ~]# fdisk -l |grep sd[a-c]
Disk /dev/sda: 21.5 GB, 21474836480 bytes
/dev/sda1 * 1 26 204800 83 Linux
/dev/sda2 26 124 786432 82 Linux swap / Solaris
/dev/sda3 124 2611 19979264 83 Linux
Disk /dev/sdb: 213 MB, 213909504 bytes
Disk /dev/sdc: 20 MB, 20971520 bytes
fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似DOS fdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。
2.6 fdisk:
fdisk: 创建分区
-u 磁盘分区的时候以扇区为单位默认是按照柱面
-c 关闭DOS兼容模式
fdisk –cu /dev/sdb
fdisk 内部命令
m 显示帮助
p 显示所有分区信息
d 删除分区
w 保存并退出
q 退出
创建一个10MB主分区 fdisk -cu /dev/sdb Command (m for help): n Command action #分区类型 e extended #扩展分区 p primary partition (1-4) #主分区 p Partition number (1-4): #分区号码 First sector (2048-417791, default 2048): 从哪里开始(回车 使用默认) Last sector, +sectors or +size{K,M,G} (2048-417791, default 417791): +10M #大小 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: 0x8dde1fa5 Device Boot Start End Blocks Id System /dev/sdb1 2048 22527 10240 83 Linux
【练习】
第3章 创建10MB的主分区 创建一个使用所有容量的扩展分区 创建两个50MB逻辑分区
[root@zs ~]# fdisk -cu /dev/sdb (创建分区)
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xb42cefa5.
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 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 大小
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: 0xb42cefa5
Device Boot Start End Blocks Id System
/dev/sdb1 2048 22527 10240 83 Linux
Command (m for help): n n创建新的分区
Command action
e extended 扩展分区
p primary partition (1-4) 主分区
e 创建一个扩展分区
Partition number (1-4):
Value out of range.
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 n创建新的分区
Command action
l logical (5 or over) 逻辑分区
p primary partition (1-4) 主分区
l 创建逻辑分区
First sector (24576-417791, default 24576):
Using default value 24576
Last sector, +sectors or +size{K,M,G} (24576-417791, default 417791): +50M 逻辑分区大小
Command (m for help): n n创建新的分区
Command action
l logical (5 or over)
p primary partition (1-4)
l 创建逻辑分区
First sector (129024-417791, default 129024):
Using default value 129024
Last sector, +sectors or +size{K,M,G} (129024-417791, default 417791): +50M 逻辑分区大小
Command (m for help): w 保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@zs ~]# fdisk -cu /dev/sdb
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: 0xb42cefa5
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
第4章 增加硬盘200MB,硬盘创建一个分区挂载到/data目录
4.1 第1个里程碑-创建分区
fdisk -cu /dev/sdb
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: 0x8dde1fa5
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
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: 0x8dde1fa5
Device Boot Start End Blocks Id System
/dev/sdb1 1 204 208880 83 Linux
Command (m for help): w 保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@oldboyedu50-lnb ~]# fdisk -l /dev/sdb 查看
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: 0x8dde1fa5
Device Boot Start End Blocks Id System
/dev/sdb1 1 204 208880 83 Linux
4.2 第2个里程碑-通知系统sdb磁盘分区表变化
partprobe /dev/sdb
4.3 第3个里程碑-创建文件系统(格式化)
make filesystem
mkfs
#对每个房间装修(磁盘分区)
mkfs.ext4 /dev/sdb1
4.4 第4个里程碑-关闭磁盘自动检查
This filesystem will be automatically checked every 38 mounts or
这个磁盘分区会被自动检查(没挂载38次或每隔180天)
180 days, whichever comes first. Use tune2fs -c or -i to override.
自己创建的磁盘分区关闭磁盘检查.
[root@oldboyedu50-lnb ~]# 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
1. -c 0 关闭 每挂载多少次进行一次磁盘检查
2. -i 0 关闭 每隔180天进行一次磁盘检查
4.5 第5个里程碑-挂载
[root@oldboyedu50-lnb ~]# mkdir -p /data 创建目录/data
[root@oldboyedu50-lnb ~]# mount /dev/sdb1 /data/ 挂载/dev/sdb1 到/data
[root@oldboyedu50-lnb ~]# df –h 查看挂载情况
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.5G 17G 9% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdb1 194M 1.8M 182M 1% /data
4.6 第6个里程碑-永久挂载
4.6.1 #方法1
vim /etc/rc.local
写入 /bin/mount /dev/sdb1 /data
4.6.2 #方法2
vim /etc/fstab 开机自动挂载
UUID=cf634253-6c41-4771-87b7-e86afb9284a7 / ext4 defaults 1 1
UUID=8519938a-dccb-4eb5-bbbc-4fd22f9f99fe /boot ext4 defaults 1 2
UUID=f70549a5-ec74-4cd1-99ba-49eb175e712d 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
设备名称(分区) 挂载点(目录) 文件系统类型 挂载参数 是否进行备份 是否开机磁盘检查
#/dev/cdrom /mnt iso9660 defaults 0 0
/dev/sdb1 /data ext4 defaults 0 0
3. 磁盘使用小结:
1.分区
2.格式化
3.挂载
第一个里程碑-创建分区并通知系统磁盘的分区表变化
第二个里程碑-创建文件系统-关闭分区的自动检查功能
第三个里程碑-挂载及永久挂载
第5章 故障案例: java程序占用大量内存,开始使用swap,swap不足
增加swap
5.1 创建一个文件成为swap
[root@oldboyedu50-lnb ~]# free -h
total used free shared buffers cached
Mem: 1.8G 158M 1.7G 240K 11M 51M
-/+ buffers/cache: 95M 1.7G
Swap: 767M 0B 767M
5.1.1 创建一个100M的文件
[root@oldboyedu50-lnb ~]# dd if=/dev/zero of=/tmp/100m bs=1M count=100
(input file) (output file ) (block size)
从哪里获取数据 输出到哪里 每次复制多少文件 复制多少次
/dev/zero 不断输出 零
/dev/null 黑洞
[root@oldboyedu50-lnb ~]# file /tmp/100m
/tmp/100m: data
5.1.2 创建swap 让这个文件成为swap(格式化)
[root@oldboyedu50-lnb ~]# 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=531f48e2-be07-4f24-86e5-dfe9ed549b16
[root@oldboyedu50-lnb ~]# file /tmp/100m
/tmp/100m: Linux/i386 swap file (new style) 1 (4K pages) size 25599 pages
5.1.3 激活swap分区
swapon /tmp/100m
[root@oldboyedu50-lnb ~]# swapon /tmp/100m
[root@oldboyedu50-lnb ~]# free -h
total used free shared buffers cached
Mem: 1.8G 264M 1.6G 240K 11M 153M
-/+ buffers/cache: 98M 1.7G
Swap: 867M 0B 867M
swapon -s 显示swap的组成情况(磁盘分区 和文件)
#fdisk -l
5.1.4 永久增加
Vim
/etc/rc.local
/etc/fstab
#/tmp/100m swap swap defaults 0 0
4. 增加swap小结:
1.创建一个文件
2.文件--->swap
3.激活 和永久生效
第6章 fdisk vs parted
fdisk 支持2TB以内的磁盘 只支持MBR磁盘分区表 |
parted 支持2TB以上的磁盘 MBR(主分区最多4个) GPT(无限 接近100) 主分区 扩展区 逻辑分区 |
6.1 parted
显示分区信息 | ||
mktable | mklabel gpt msdos(mbr) | 创建磁盘分区表 |
mkpart | 创建分区 | |
rm | 删除分区 | |
q | 退出不保存 |
6.1.1 #创建分区表
parted /dev/sdc
(parted) mktable gpt 创建磁盘分区表 gpt
(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
6.2 #创建分区
(parted) mkpart primary 0 10 创建分区primary 大小为10MB
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(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 primary
6.3 非交互式创建分区
parted /dev/sdc p
parted /dev/sdc mktable gpt
parted /dev/sdc mkpart primary 0 10 ignore
parted /dev/sdc mkpart primary 10 20
parted /dev/sdc p
总结: |
0. 磁盘分区表 主分区 扩展分区 逻辑分区 |
1. 磁盘分区命名规则 |
2. 磁盘分区过程 |
3. 分区格式化挂载 |
增加swap |
4. 如何查看内存使用情况 |