1.磁盘体系结构

6.磁盘内容_第1张图片

1.2磁盘组成

盘片
主轴
磁头

1.3磁盘接口类型

SATA
SAS
SCSI
PCI-E速度最快

1.4磁盘接口选择与磁盘选择

磁盘接口分类

6.磁盘内容_第2张图片

磁盘接口选择

6.磁盘内容_第3张图片

硬盘分类

6.磁盘内容_第4张图片

硬盘选择

6.磁盘内容_第5张图片

机械硬盘可以无限次写入数据
固态硬盘,例如500G为总量,写满一次算一次,总共可写入1-2万次

1.5磁盘内部组成

6.磁盘内容_第6张图片

磁头(head):
盘面的数量==磁头数量
作用:用来读写数据

磁道(track):
以主轴为圆心的不同圆环区域,从外面到里面,最外面是0磁道

扇区(selector):
磁道上面的最小单位,默认大小是512字节

柱面(sylinder):
不同盘面上的相同磁道组成的圆柱体
柱面数==磁道数
磁盘默认按照柱面读写数据

单元块(units):
表示一个柱面的大小

6.磁盘内容_第7张图片

1.6计算磁盘大小

磁盘大小=每个柱面的大小*柱面数量
每个柱面的大小=磁道大小*磁盘数量
磁道大小=每个扇区大小*扇区数量
[root@oldboyedu-02 ~]# 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 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002da79

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         124      786432   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             124        1306     9493504   83  Linux
[root@oldboyedu-02 ~]# awk 'BEGIN{print 1/3}'
0.333333
[root@oldboyedu-02 ~]# awk 'BEGIN{print 512*63*255*1305/1024^3}'
9.99681
[root@oldboyedu-02 ~]# awk 'BEGIN{print 512*63*255*1305/1000^3}'
10.734
[root@oldboyedu-02 ~]# echo 512*63*255*1305/1000^3|bc
10
[root@oldboyedu-02 ~]#

1B=8bit
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB

1.7RAID

6.磁盘内容_第8张图片

1.8磁盘分区

磁盘分区表:
位置:0磁头0磁道1扇区
磁盘--盘片--MBR

6.磁盘内容_第9张图片

主分区:
存放数据的分区,最多有四个

扩展分区:
不能存储数据
只能有一个
需要在扩展分区中创建逻辑分区才能存放数据

逻辑分区:
存放数据

磁盘命名:
sas/sata/scsi接口 sd 第一块sas硬盘sda,第二块sas硬盘sdb

分区命名:
主分区/扩展分区: 1-4
逻辑分区:从5开始

例子:
第一块sas硬盘的第一个主分区 /dev/sda1
第三块sas硬盘的第二个扩展分区 /dev/sdc6
第四块sata硬盘的第一个扩展分区 /dev/sdd5

1.8.1fdisk分区

fdisk
支持的磁盘大小2T
fdisk支持MBR
1.fdisk分区
例子:给/dev/sdb硬盘只创建一个分区,把他挂在到/mnt上面
首先创建分区
[root@oldboyedu-02 ~]# 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): 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: 0x429514a3

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      208895      103424   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

2.通知系统/dev/sdb硬盘的磁盘分区表变化了
[root@oldboyedu-02 ~]# partprobe /dev/sdb

3.格式化创建文件系统
[root@oldboyedu-02 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25896 inodes, 103424 blocks
5171 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1992 inodes per group
Superblock backups stored on blocks: 
    8193, 24577, 40961, 57345, 73729

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

4.关闭磁盘分区的自动检查
[root@oldboyedu-02 ~]# 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 
-c 0  count关闭每挂载多少次就进行磁盘检查的功能
-i 0   interval 关闭每隔180天就进行磁盘检查的功能

5.挂载
[root@oldboyedu-02 ~]# mount /dev/sdb1 /mnt

6.永久挂载
1)把挂载命令写到/etc/rc.local中
/bin/mount  /dev/sdb1 /mnt
2)配置到/etc/fstab
UUID=b3a88d2b-b491-46ff-96a1-a9eff1a5c3a5 /         ext4    defaults        1 1
UUID=8848e519-989b-4a1f-9fdb-803f0b56db57 /boot    ext4    defaults        1 2
UUID=b6a11888-75c1-4a5f-98fa-32c323404e4e swap     swap   defaults        0 0
/dev/sdb1                                        ext4     defaults       0 0
第一列:设备名
第二列:挂载点
第三列:文件系统类型
第四列:挂载参数
第五列:是否进行备份
第六列:是否进行磁盘检查,系统的要进行检查,自己创建的就不需要检查

7.卸载
1、直接卸载

  [root@localhost /]# umount /data1/img
  umount: /data1/img: device is busy
  umount: /data1/img: device is busy
2、提示被占用,使用强制卸载

  [root@localhost /]# umount -f /data1/img
  umount2: Device or resource busy
  umount: /data1/img: device is busy
  umount2: Device or resource busy
  umount: /data1/img: device is busy
注:使用-f 参数进行强制卸载时一般建议等一会儿再进行下面的操作,一些情况下处理需要1-2分钟的时间。

3、使用umount -f,问题依旧。使用fuser命令,先确认有那些进程在占用该目录

  [root@localhost /]# fuser -cu /data1/img
  /data1/img: 1757c(mysql)
上面查看发现是pid为1757的mysql用户起的进程在占用该目录。

4、确认mysql所起的进程可以kill 后,可以直接使用fuser 的k参数进行kill (也可以手动停掉1757进程再卸载)

  [root@localhost /]# fuser -ck /data1/img
  /data1/img: 1757c
注:这里k 就是kill的意思,注意没进行确认前要谨慎使用该参数。
  另外,umount异常时,也经常会用到 lsof 指定确认文件被什么进程占用
[root@oldboyedu-01 scripts]# lsof|grep /var/log/messages
rsyslogd  1241      root    1w      REG                8,3   319521     140398 /var/log/messages
  上面就是Linux使用umount命令强制卸载文件系统的方法,即使提示被占用也照样能够通过命令来卸载

1.8.2parted分区

主要用于磁盘大于2T
基于GPT分区表
支持的磁盘写法有0 30M, 0 200G  0 2T

p 显示磁盘分区表信息
mklabel 创建磁盘分区表--gpt/msdos(mbr)
mkpart 创建分区
rm 删除分区
q 退出不保存

交互式创建

创建30M
[root@oldboyedu-02 ~]# parted /dev/sdc
GNU Parted 2.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Error: /dev/sdc: unrecognised disk label                                  
(parted) mklabel gpt                                                      
(parted) p                                                                
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

(parted) mkpart primary 0 30                                              
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: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  30.0MB  30.0MB               primary

(parted) mkpart primary 30 60
(parted) p                                                                
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  30.0MB  30.0MB               primary
 2      30.4MB  59.8MB  29.4MB               primary

(parted)quit

非交互式创建

非交互式创建
[root@oldboyedu-02 ~]# parted /dev/sdc mklabel gpt
Warning: 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                                                               
Information: You may need to update /etc/fstab.                           

[root@oldboyedu-02 ~]# parted /dev/sdc mkpart primary 0 30 Ignore
Warning: The resulting partition is not properly aligned for best performance.
Information: You may need to update /etc/fstab.                           

[root@oldboyedu-02 ~]# parted /dev/sdc mkpart primary 30 60 
Information: You may need to update /etc/fstab.                           

[root@oldboyedu-02 ~]# 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  30.0MB  30.0MB               primary
 2      30.4MB  59.8MB  29.4MB               primary

[root@oldboyedu-02 ~]#
[root@oldboyedu-01 ~]# parted /dev/sdb mklabel gpt 
Information: You may need to update /etc/fstab.                           

[root@oldboyedu-01 ~]# parted /dev/sdb mkpart primary 0 2T 
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i                                                          
Information: You may need to update /etc/fstab.                           

[root@oldboyedu-01 ~]# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  2000GB  2000GB               primary

[root@oldboyedu-01 ~]# parted /dev/sdb mkpart primary 2T 100% 
Information: You may need to update /etc/fstab.                           

[root@oldboyedu-01 ~]# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  2000GB  2000GB               primary
 2      2000GB  3221GB  1221GB               primary

1.9增加swap

Java内存不足,导致大量占用swap,怎样临时增加swap

1.创建文件块
[root@oldboyedu-02 ~]# dd if=/dev/zero of=/tmp/swap bs=1MB count=100
100+0 records in
100+0 records out
100000000 bytes (100 MB) copied, 1.45344 s, 68.8 MB/s
[root@oldboyedu-02 ~]# ls -lh /tmp/swap 
-rw-r--r-- 1 root root 96M Mar  1 07:18 /tmp/swap

2.变成swap
[root@oldboyedu-02 ~]# mkswap /tmp/swap 
mkswap: /tmp/swap: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 97652 KiB
no label, UUID=09537748-05e6-4e1f-89cf-ff42cea75160
[root@oldboyedu-02 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        230        750          0         13        133
-/+ buffers/cache:         83        897
Swap:          767          0        767

3.增加swap
[root@oldboyedu-02 ~]# swapon /tmp/swap

4.验证
[root@oldboyedu-02 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        230        750          0         13        133
-/+ buffers/cache:         83        897
Swap:          863          0        863
[root@oldboyedu-02 ~]#

5.取消增加的swap
[root@oldboyedu-02 ~]# swapoff /tmp/swap 
[root@oldboyedu-02 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        230        750          0         13        133
-/+ buffers/cache:         83        897
Swap:          767          0        767
[root@oldboyedu-02 ~]#

6.swap永久生效
方法一:命令写到/etc/rc.local中
swapon /tmp/swap
方法二:/etc/fstab中
/tmp/swap   swap   swap    defaults   0 0 

1.10Linux把我的内存吃了-查看内存

linux 特点会把使用过的命令和数据临时存放在内存中,buffer和cache中,主要是为了提升速度
实际的内存使用量看第二行
[root@oldboyedu-02 ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          980M       230M       750M       248K        13M       133M
-/+ buffers/cache:        83M       897M
Swap:         767M         0B       767M

1.11文件系统组成

inode记录文件属性和block位置
block存放文件数据
superblock记录整个文件系统中inode和block使用了多少,剩余多少。
dumpe2fs -h /dev/sda1可查看superblock中信息

[root@oldboyedu-02 ~]# dumpe2fs -h /dev/sda1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   
Last mounted on:          /boot
Filesystem UUID:          8848e519-989b-4a1f-9fdb-803f0b56db57
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              51200
Block count:              204800
Reserved block count:     10240
Free blocks:              154188
Free inodes:              51161
First block:              1

1.12文件系统的选择

opensuse linux的默认文件系统ReiserFS文件系统
IBM的AIX使用jfs日志文件系统
Centos7采用XFS文件系统
Centos6采用ext4文件系统
Centos5采用ext3文件系统

1.13磁盘命令

fdisk:磁盘分区工具,磁盘大小不超过2T
parted:磁盘分区工具,磁盘大小大于2T
partprobe:通知系统磁盘的分区信息变化,更新内核的硬盘分区表信息
tune2fs:调整ext2/ext3/ext4文件系统参数
-c 0 关闭每挂载多少次进行磁盘检查
-i 0 关闭每隔多久进行磁盘检查
关闭磁盘分区的自动检查
mkfs:创建Linux文件系统
-t 指定文件系统类型
mkfs.ext4==mkfs -t ext4
dumpe2fs:显示superblock信息
resize2fs:调整ext2/ext3/ext4文件系统大小
fsck:检查并修复linux文件系统
-a
dd:转换或复制文件
od:查看二进制文件内容
od -xa /tmp/512.bin
mount:挂载文件系统
umount:卸载文件系统
df:报告文件系统磁盘空间使用情况
mkswap:创建交换分区
swapon:激活交换分区
swapoff:关闭交换分区
sync:刷新问阿金系统缓冲区
top:
iotop:查看系统磁盘读写速度,显示出进程使用swap的情况
io: input/output
htop:top的升级
iftop:查询网卡流量情况
-i 指定监视网卡