菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
312
0

磁盘管理-中部

原创
05/13 14:22
阅读数 70319

分区相关理论知识

mbr是什么

关于mbr
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
每个格子里存放的是分区的信息(主分区 扩展分区)
image.png

查看内存使用情况

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.
没有找到可用的文件系统

发表评论

0/200
312 点赞
0 评论
收藏
为你推荐 换一批