#!/bin/bash
fdisk_2(){
fdisk /dev/sdd <<EOF
+10G
+20G
+5G
mkfs.ext4 /dev/sdd1
mkfs.ext4 /dev/sdd2
mkfs.ext4 /dev/sdd5
mkfs.ext4 /dev/sdd6
[ -d /mail ]||mkdir /mail
[ -d /software ]||mkdir /software
[ -d /movie ]||mkdir /movie
[ -d /photo ]||mkdir /photo
mount /dev/sdd1 /mail
mount /dev/sdd2 /software
mount /dev/sdd5 /movie
mount /dev/sdd6 /photo
egrep "sdd1" /etc/rc.local||echo "mount /dev/sdd1 /mail" >>/etc/rc.local
egrep "sdd2" /etc/rc.local||echo "mount /dev/sdd2 /software" >>/etc/rc.local
egrep "sdd5" /etc/rc.local||echo "mount /dev/sdd5 /movie" >>/etc/rc.local
egrep "sdd6" /etc/rc.local||echo "mount /dev/sdd6 /photo" >>/etc/rc.local
fdisk_gpt(){
parted /dev/sde &>/dev/null <<EOF
mklabel gpt
mkpart aa 1 40000
mkpart bb 40001 100000
mkfs.ext4 /dev/sde1
mkfs.ext4 /dev/sde2
[ -d /ftp ]||mkdir /ftp
[ -d /www ]||mkdir /www
mount /dev/sde1 /ftp
mount /dev/sde2 /www
if fdisk -l /dev/sdd|grep "^/dev/sdd" &>/dev/null
echo "Your disk alreadly format!!"
fdisk_2
fdisk_gpt
MBR(主引导记录)
MBR:Master Boot Record:主引导记录。每块磁盘都有MBR。
硬盘的0柱面、0磁头、1扇区称为主引导扇区
MBR大小512字节,分为三个部分:
- ①主引导程序:446字节 用来启动系统找到我们的系统装在那个分区
- ②硬盘分区表DPT:64字节 disk partition table
- ③分区结束标记:2字节
DPT:磁盘分区表:
- DPT大小64字节 每个分区要占16字节,所以只能分4个分区。
- 每个主分区要用16个字节描述
- 扩展分区也要占用16个字节的主分区空间
备份MBR和恢复MBR
MBR被破坏的后果:系统启动不了,所有的分区信息丢失,读取不了分区表,不知道有多少个分区,因为分区不能读取,所以分区里的文件也都读取不了。
dd命令的功能:备份、还原。
dd if=输入文件 of=输出文件 bs=块大小 count=块的数量
eg:dd if=/dev/sda of=/backup/sda.mbr bs=512 count=1
dd 是一个命令:
- if 输入文件input file 需要备份的文件
- of 输出文件 output file 备份到那个文件里去。
- bs 块的大小 block size 备份数据的时候指定的单位,具体多大可以根据实际的情况自己定义。默认是字节。单位可以使用k、M、G
- count 块的数量 总大小=bs*count
MBR的备份、还原;创建文件
- 备份MBR :dd if=/dev/sda of=mba.bak bs=512 count=1
- 还原MBR :dd if=mbr.bak of=/dev/sda bs=512 count=1
- 创建10M的文件: dd if=/dev/zero of=test bs=1M count=10
模拟MBR破坏实验:
备份sda:# dd if=/dev/sda of=/music/sda.mbr bs=512 count=1
备份sdb: #dd if=/dev/sdb of=/sdb.mbr bs=512 count=1
2.破坏sdb
用0覆盖sdb(破坏):# dd if=/dev/zero of=/dev/sdb bs=512 count=1
(用fdisk -l /dev/sdb 看sdb的分区,会发现看不了)
3.恢复sdb
恢复分区:# dd if=/sdb.mbr of=/dev/sdb bs=512 count=1
(再fdisk -l /dev/sda ,就能看了)
4.破坏sda
破坏sda:# dd if=/dev/zero of=/dev/sda bs=512 count=1
重启,发现进不去了。(第一引导是磁盘,第二引导是光盘。所以会要求装系统。)
(选择“Boot from local drive”,发现进不去。因为sda的MBR已被破坏)
分区表类型、磁盘三种分区
分区和磁盘的关系:在磁盘里划分分区。
分区表的类型(partition table):
- MBR类型(有4个主分区的限制)
- GPT类型(比较流行,主分区无限制)
MBR类型分区表(DOS disklabel):
- 主分区 primary partition(最多4个)
- 主分区可以用来安装操作系统,最多4个主分区。系统、启动、活动、主分区
- 扩展分区 extension partition(1个)
- 逻辑分区 logical partition(无数量)
磁盘分区需要超过4个时可将剩余空间作为1个扩展分区(只能有一个扩展分区)。
扩展分区会占用一个主分区位置。
扩展分区不能直接存储文件—-》扩展只是一种概念
划分成逻辑分区来存储文件
(图:三种分区的关系)
磁盘分区编号
磁盘编号:
分区编号:
- 主分区编号:1-4
- 扩展分区占一个主分区编号
- 逻辑分区编号:从5开始
sda1 代表第1块磁盘的第1个主分区
sda2 代表第1块磁盘的第2个主分区
sda5 代表第1块磁盘的第1个逻辑分区
sda6 代表第1块磁盘的第2个逻辑分区
GPT分区表与MBR(MSDOS)分区表的区别
全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。与支持最大卷为2 TB(Terabytes)并且每个磁盘最多有4个主分区(或3个主分区,1个扩展分区和无限制的逻辑驱动器)的MBR磁盘分区的样式相比,GPT磁盘分区样式支持最大卷为18 EB(Exabytes)并且每磁盘的分区数没有上限,只受到操作系统限制(由于分区表本身需要占用一定空间,最初规划硬盘分区时,留给分区表的空间决定了最多可以有多少个分区,IA-64版Windows限制最多有128个分区,这也是EFI标准规定的分区表的最小尺寸)。
为什么系统的盘符从c开始?
答:因为A、B被软盘使用。软盘被淘汰,现在几乎处于被弃用的状态。
linux里一切皆文件。
Linux中将硬盘、分区等设备均表示为文件。
- hd —》IDE
- sd —》SCSI SAS SATA USB
fdisk命令建立分区详解
用途:在交互式的操作环境中管理磁盘分区
格式:fdisk [磁盘设备]
交互模式中的常用指令:
- m:查看操作指令的帮助信息
- p:列表查看分区信息
- n:新建分区
- d:删除分区
- w:保存分区设置并退出
- q:放弃分区设置并退出
分区:fdisk命令
格式化:mkfs.ext3
挂载使用:mount
格式化的命令:
- 不能对扩展分区进行格式化
- fdisk 后面接磁盘设备文件
- parted /dev/sdc print
- mkfs.ext3 后面接分区设备文件(make filesystem ext3)
linux文件系统: ext2 ext3 ext4 xfs等
windows文件系统:ntfs、fat32
经典的默认分区方案:
linux里:1T
①/boot ext4 500M 启动linux系统的核心文件存放的分区。—》windows里的c盘;
②swap swap 32000M 做虚拟内存使用,当真实内存不足的时候充当真实内存使用。遵循一个原则,大小为真实内存的2倍;
③/ ext4 剩余空间全部给根分区。默认情况下所有的文件都存放在根分区里。
Ftp服务器:
①/boot ext4 500M
②swap swap 32000M
③/home ext4 200G
④/var ext4 500G
⑤/ ext4 剩余空间全部给根分区
建议大家对磁盘进行分区的时候,提前规划好具体的分区方案,分好区,今后好使用。
分好区,不使用都可以,想使用的时候,就可以使用。
对已经在使用的磁盘进行分区,让后面新分的区能够使用的解决方法:
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 16105416 1015336 14271956 7% /
tmpfs 508336 0 508336 0% /dev/shm
/dev/sda1 495844 30235 440009 7% /boot
/dev/sda3 2015824 35768 1877656 2% /home
/dev/sdc1 10325748 154136 9647092 2% /software
# umount /software/ 卸载正在使用的分区
# partprobe /dev/sdc --》partprode 检测分区
# ls /dev/sdc*
/dev/sdc /dev/sdc1 /dev/sdc2 /dev/sdc3