14 linux磁盘与文件系统:磁盘硬件简介,磁盘接口详解,磁盘mbr/分区表/主分区扩展分区/逻辑分区讲解,磁盘分区实战fdisk,parted,文件系统

磁盘管理
1.磁盘结构:
(1)磁盘外部结构:
组成:盘片、主轴、磁头
接口类型:与服务器主板如何相连。犹如水壶的壶嘴。
SAS硬盘--7.2k 1TB~10TB,10k 300G~1.8TB,15k 300G~900G,给服务器用,稳定、转速读写速度快,线上/生产环境,一般选用15k 600G/300G
SATA--家用服务器,容量大、价格便宜,线下环境(自己人用),一般选用SATA 2TB 10k
SCSI--
PCI-E--属于固态硬盘,大量需要读写的时候,整体的数据量不大。

  
---------------图c00

磁盘按结构分类:
机械硬盘:速度慢,容量较大,价格便宜。
固态硬盘:速度快,容量较小,价格贵。

(2)磁盘内部组成:
磁盘-硬盘(disk)
磁头(head):作用是用来写入和读取数据的。盘面数=磁头数
磁道(track):以主轴为圆心的不同的圆环区域(呼啦圈),最外圈是0磁道。
扇区(sector):磁道上最小的单位(默认512字节)。
柱面(cylinder):不同盘面上的相同的磁道(呼啦圈)组成的圆柱体。磁盘默认是按照柱面进行读写的。
单元块(units):表示一个柱面的大小。

  

  
--------------图c01 c02

2.raid级别及常见应用:
raid--磁盘冗余阵列
作用:获取更大的容量、更高的性能、更强的安全性。
raid卡/阵列卡:基础卡、高级卡。
常见raid级别:

raid0:要制作raid0至少要1块物理磁盘,不做raid不能安装系统;安全冗余最低;可用容量为所有硬盘容量之和;具有最高的存储性能(磁盘容量不浪费,读写很快);不要求安全只要求速度;eg:数据库从库。
raid1:要制作raid1至少要2块物理磁盘,镜像--损失50%的数据容量;安全冗余100%;可用容量为一半(两块硬盘容量之和);写入速度慢,读取很快;只要求安全性无速度要求;eg:系统盘。2块1T的盘,做完raid1后容量为1T;镜像不能提高存储性能,理论上写性能和单盘相差不大。
raid5:至少需要3块硬盘;安全冗余最多损坏一块;可用容量为损失一块盘的容量;写入性能不好但读取速度可以;安全性好但速度要求一般;eg:普通数据库,存储。
raid10:至少4块硬盘;安全冗余为可以损坏一半;可用容量为损失所有硬盘一半的容量;读写速度很快;安全性可以;eg:数据库主库,存储。

  
--------------图c03

3.磁盘分区--磁盘分区表
主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。
百度简介:
通常,我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBR)。由于这一扇区承担有不同于磁盘上其他普通存储空间的特殊管理职能,作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。

主引导扇区由三个部分组成(共占用512个字节):
1.主引导程序即主引导记录(MBR)(占446个字节)
可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统。
2.磁盘分区表项(DPT,Disk Partition Table)
由四个分区表项构成(每个16个字节)。
负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。(具体内容略)
3.结束标志(占2个字节)
其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。

  

  
-----------------图fen00 fen01

磁盘分区表
位置--0磁头0磁道1扇区:
前446字节 mbr主引导记录,
64字节的分区表,
55AA表示结束标记。

磁盘-盘片-mbr

主分区--存放数据的分区,最多4个。
扩展分区--无法直接使用,必须在扩展分区中创建逻辑分区才可使用。
逻辑分区--存放数据

硬盘分区的设备名
硬盘命名:sas/sata/scsi接口以sd开头,第1块sas硬盘:sda、第2块sas硬盘:sdb等等。
分区命名:主分区/扩展分区:1~4,逻辑分区:5开始
eg:
第1块SAS硬盘的第1个主分区:/dev/sda1
第3块SAS硬盘的第1个扩展分区:/dev/sdc5
第4块SAS硬盘的第2个扩展分区:/dev/sdd6

创建磁盘分区: fdisk--一般用于<2T,支持MBR

  
---------------图fenqu01
[root@oldboyedu-01 ~]# 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: 0x00086895
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-01 ~]# 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: 0x00086895
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
Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 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: 0x00000000
Disk /dev/sdc: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 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: 0x00000000

[root@oldboyedu-01 ~]# fdisk -l|grep '/sd[a-c]:'
Disk /dev/sda: 10.7 GB, 10737418240 bytes
Disk /dev/sdb: 106 MB, 106954752 bytes
Disk /dev/sdc: 106 MB, 106954752 bytes

[root@oldboyedu-01 ~]# 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 0xbb6c7149.
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)

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): m
Command action
n add a new partition //创建一个分区
d delete a partition //删除
p print the partition table //显示
q quit without saving changes //退出不保存
w write table to disk and exit //退出并保存;Ctrl+u回退输入
//创建10M的主分区:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-102, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-102, default 102): +10M

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 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: 0xbb6c7149

Device Boot Start End Blocks Id System
/dev/sdb1 1 11 11248 83 Linux

//创建90M的扩展分区:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (12-102, default 12):
Using default value 12
Last cylinder, +cylinders or +size{K,M,G} (12-102, default 102):
Using default value 102

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 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: 0xbb6c7149

Device Boot Start End Blocks Id System
/dev/sdb1 1 11 11248 83 Linux
/dev/sdb2 12 102 93184 5 Extended
//以便在扩展分区中创建30M的逻辑分区:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (12-102, default 12):
Using default value 12
Last cylinder, +cylinders or +size{K,M,G} (12-102, default 102): +30M

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 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: 0xbb6c7149

Device Boot Start End Blocks Id System
/dev/sdb1 1 11 11248 83 Linux
/dev/sdb2 12 102 93184 5 Extended
/dev/sdb5 12 42 31728 83 Linux
保存退出生效!
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@oldboyedu-01 ~]# ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Jan 7 16:44 /dev/sdb
brw-rw---- 1 root disk 8, 17 Jan 7 16:44 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Jan 7 16:44 /dev/sdb2
brw-rw---- 1 root disk 8, 21 Jan 7 16:44 /dev/sdb5

创建磁盘分区-格式化-开机自动挂载全过程
eg:创建一个100M的分区,把它挂载到/mnt下
//步骤一:创建分区
[root@oldboyedu-01 ~]# fdisk /dev/sdb

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): d
Partition number (1-5): 5

Command (m for help): d
Partition number (1-5): 1

Command (m for help): d
Selected partition 2

Command (m for help): d
No partition is defined yet!

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 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: 0xbb6c7149

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-102, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-102, default 102):
Using default value 102

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 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: 0xbb6c7149

Device Boot Start End Blocks Id System
/dev/sdb1 1 102 104432 83 Linux
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
//步骤二:通知系统/dev/sdb的磁盘分区表变化了
[root@oldboyedu-01 ~]# partprobe /dev/sdb
//步骤三:格式化创建文件系统
[root@oldboyedu-01 ~]# ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Jan 7 16:57 /dev/sdb
brw-rw---- 1 root disk 8, 17 Jan 7 16:57 /dev/sdb1
[root@oldboyedu-01 ~]# 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
26208 inodes, 104432 blocks //
5221 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
2016 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 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
//步骤四:让磁盘分区不进行自动检查
[root@oldboyedu-01 ~]# 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
//步骤五:挂载
[root@oldboyedu-01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 4.0G 4.4G 48% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
[root@oldboyedu-01 ~]# mount /dev/sdb1 /mnt/ //
[root@oldboyedu-01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 4.0G 4.4G 48% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdb1 95M 1.6M 89M 2% /mnt
//步骤六:永久挂载
方法一:
[root@oldboyedu-01 ~]# echo "/bin/mount /dev/sdb1 /mnt" >>/etc/rc.local
[root@oldboyedu-01 ~]# tail -1 /etc/rc.local
/bin/mount /dev/sdb1 /mnt

方法二:按照/etc/fstab(开机自动挂载)格式书写
[root@oldboyedu-01 ~]# cat /etc/fstab
UUID=c059106b-d931-4598-874d-3cb76f48cd7e / ext4 defaults 1 1
UUID=6f882027-3dff-4071-85e6-5e15024b5a89 /boot ext4 defaults 1 2
UUID=cf1accb4-dd1a-4c7b-9ccb-4ae500fcdd50 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/sdb1 /mnt ext4 defaults 0 0

创建磁盘分区-parted--主要用于给磁盘>2T的进行分区,基于GPT分区表
gpt方式的主分区有好多。

[root@oldboyedu-01 ~]# parted /dev/sdc
GNU Parted 2.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
//步骤一:print查看分区信息
(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 10M
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 10.0MB 9983kB primary
(parted) mkpart primary 10M 20M
(parted) mkpart primary 20M 90M
(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 10.0MB 9983kB primary
2 10.5MB 19.9MB 9437kB primary
3 19.9MB 90.2MB 70.3MB primary

[root@oldboyedu-01 ~]# ls -l /dev/sdc* //该方式即时生效!故比较危险!!!
brw-rw---- 1 root disk 8, 32 Jan 7 17:48 /dev/sdc
brw-rw---- 1 root disk 8, 33 Jan 7 17:48 /dev/sdc1
brw-rw---- 1 root disk 8, 34 Jan 7 17:48 /dev/sdc2
brw-rw---- 1 root disk 8, 35 Jan 7 17:48 /dev/sdc3
/步骤四:删除分区
(parted) rm 2
(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 10.0MB 9983kB primary
3 19.9MB 90.2MB 70.3MB primary
(parted) q //按q退出
Information: You may need to update /etc/fstab.

企业故障案例:java环境内存不够用!导致swap不够用,宕机。奔溃。。。
解决:
增加swap大小
比如我们来创建一个文件100M,把这个文件作为swap
步骤一:创建一个100M的文件
[root@oldboyedu-01 ~]# 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.997038 s, 105 MB/s
[root@oldboyedu-01 ~]# ls -alh /tmp/100m
-rw-r--r-- 1 root root 100M Jan 7 18:01 /tmp/100m

  

------------------图dd
步骤二:让这个文件成为swap
[root@oldboyedu-01 ~]# 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=8b4665e3-0ebe-447b-a437-d9b29b8c9dbb
[root@oldboyedu-01 ~]# file /tmp/100m
/tmp/100m: Linux/i386 swap file (new style) 1 (4K pages) size 25599 pages

步骤三:增加系统的swap
[root@oldboyedu-01 ~]# free -h
total used free shared buffers cached
Mem: 3.7G 268M 3.5G 248K 10M 147M
-/+ buffers/cache: 109M 3.6G
Swap: 767M 0B 767M
[root@oldboyedu-01 ~]# swapon /tmp/100m
[root@oldboyedu-01 ~]# free -h
total used free shared buffers cached
Mem: 3.7G 268M 3.5G 248K 10M 147M
-/+ buffers/cache: 109M 3.6G
Swap: 867M 0B 867M
//显示系统中swap中组成:
[root@oldboyedu-01 ~]# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 786428 0 -1
/tmp/100m file 102396 0 -2

步骤四:永久增加系统的swap,否则重启失效!
法一:
/etc/rc.local中添加/sbin/mkswap /tmp/100m
法二:
root@oldboyedu-01 ~]# cat /etc/fstab |grep swap
UUID=cf1accb4-dd1a-4c7b-9ccb-4ae500fcdd50 swap swap defaults 0 0
添加:
/tmp/100m swap swap defaults 0 0

文件系统及文件系统类型:
含义:文件系统就是一种存储和组织计算机数据文件的机制和方法。决定系统怎么存放数据。
分类及区别:
openSUSE linux的默认文件系统ReiserFS 文件系统。
IBM的AIX使用的jfs日志文件系统。
Centos7采用XFS文件系统
Centos6采用ext4文件系统
Centos5采用ext3文件系统
mkfs.ext4
mkfs.ext3
使用系统默认的文件系统即可。

ReiserFS--大量小文件业务首选 ReiserFS(100K以内),单独安装。
XFS--有的门户的数据库mysql业务会选择xfs。
ext4--视频下载,流媒体,数据库,小文件业务也0K,可以用默认的。
ext2--没有日志,蓝汛的 cache业/务,CDN网站加速服务的。

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。

posted @ 2018-01-10 18:29  bkycrmn  阅读(669)  评论(0)    收藏  举报