跟我学linux之文件系统管理一<分区与格式化的原理>
这次重点讲解linux下的分区与格式化的过程,不要只知道用,而也要知道原理,愿你与我同在!
1.分区与格式化的原理讲解
1.1偶们知道新硬盘里面什么数据都没有的,像一张白纸一样,真纯洁,偶喜欢,<别扔我砖头,>分好区以后这块硬盘就有一定的结构性了,分区顾名思义就是将硬盘分成不同的区域,以便我们来使用,每个区我们可做不同的用途,不管你分区有几多个,它前面总有一个总引导扇区,这个扇区由二部份组成:
分区原理
1.1.1 主分区<510字节>包含:
1.1.1.1 MBR<里面有446字节>这里放的都是操作系统的LOADER,从前已有在Linux安装时讲过,不多说,
1.1.1.2 主分区表<有64字节>,就是这64字节限制了硬盘只能分4个主分区,<即每个分区只有14个字节>,如一块硬盘有30G的容量空间,分三个区,第一个分区是从<这里用容量空间表示,也可用磁柱>0~8G(/dev/sda1),第二分区从8G~15G(/dev/sda2),第三分区从15G~20G(/dev/sda3),那么,系统会把分区大小,个数,起始位置等信息写进主分区表里,相应的每增加一个分区就会在分区表里增加一条记录<最大限制是四哦,>分区就是改这个分区表,不影响里面的数据,只是修改分区中的起始位置.
但分区表的分区限制有限,只能分四个,如果我们分很多的区怎么办呢?分四个以上的分区只能靠扩展分区来实现,
1.1.2扩展分区:<不知道大小,好像能分255个逻辑分区还是无限个呢?忘哒-_-!>
1.1.2.1扩展分区里也有扩展分区表哦,同样记录的是分区的大小,个数,起始位置等信息,
1.1.2.1好像上面才分三个主分区,可是我们要多少几个区才行啊,我们这时可把这个扩展分区写进主分区表里,<也是14字节>,扩展分区只能分一个,主分区表里依然是4个分区,这样我们就可以在扩展分区内部进行分区喽,<即写进扩展分区表里>,注意这里分出来的区叫逻辑分区,好,我们把20G~25G,25G~30G写进扩展分区里喽.
附:/dev/sda4有搞懂没有?不懂写信给我Mail:hesenlin521@163.com
这样一来我们就可以创建很多分区喽,超过4个以上的分区呢,能看的懂吗?我不会ps,要是有一图就很好明白了,
格式化原理
分好区的一块硬盘是空的,不能被操作系统内核所识别,那怎么办,那就要预写入一定格式的数据,这就是格式化,神秘吗?看到这你不要告诉我现在还没搞清楚分区是咋回事!
在Linux下我们可简单称为创建文件系统,举例讲解,
1.2.1,上面分了五个区,我们可以/dev/sda1格式化为FAT32格式,/dev/sda2和/dev/sda3格式化为ext2格式,再把扩展分区里的/dev/sda5格式化为FAT32,/dev/sda6格式化为ext2,这样以来,/dev/sda1和/dev/sda5就会被widows系统认为是C盘和D盘.ext2文件系统只能安装linux系统,不能被widows系统所使用,更不能安装,看到这里就会明白linux和widows同机的原理喽,厉害,没有格式化的分区是不能直接使用的,没有分区的硬盘是不能格式化的,明白这个思路没?<分区->格式化->使用>,看累了吧:来点图形,嘿嘿,
首先讲解一下,常用/widows/dos分区工具
1.3.1fdisk:
适用于Dos,window95/98
1.3.2partition magic:
适用于Dos,widows95/92/2000/XP
1.3.3diskpart
windows2000安装光盘修复控制台
常用linux下的分区工具
1.4.1 fdisk:
命令行工具,各种版本和环境都支持,包含在util-linux软件包中,
1.4.1.1 运行过程:
[root@server root]#fdisk /dev/sdX #setp1
添加/删除/修改分区 #setp2
重新启动机算机 #setp3
1.4.1.2 演示:
[root@server root]#fdisk -l /dev/sdb #检查一下sdb硬盘上的分区情况;
Disk /dev/sdb:4298MB,4298561234 bytes #说明是块新硬盘,
.......
Device Boot Start End Block Id System
[root@server root]#fdisk /dev/sdb #分区开始,
Command (m for help): m #按m可查看帮助,不演示
Command (m for help):n #new 新增分区
e extended #扩展分区
p primary partition (1-4) #主分区
p #新增主分区
Partition number (1-4):1 #由于是新硬盘,输入1
Frist cylinder <1-XX,default XX>: #输入磁柱开始值,建议直接回车
Last...(1-522,default,1):+1000M #可用+k,+M,或用结束柱面表示,这里用+1000M表示,
Command (m for help): p #查看新增是否成功;
Device Boot Start End Block Id System
/dev/sdb1 1 205 1000M+ 83 Linux
Command (m for help): n #再新建一个主分区
e extended #扩展分区
p primary partition (1-4) #主分区
p #新增主分区
Partition number (1-4):2 #刚有1了,
Frist cylinder(205-522,deault 205): #这里表示开始磁值默认
Last .....(205-522,default 522): 304 #这用用磁柱表示大小
再次用p命令即可看到,再建一个扩展分区,,累死我了,,,,
command (m for help): n
e extended
p primary partition
e
Partition number (1-4):3 #扩展分区同样也占主分区一个位置
F....(304-522,default 304): #回车,晕晕ing
L....(304-522,default 522): #由于扩展分区只有一个,尽量最后把大的给它,这里用输入522,或回车,
Command (m for help):p
Device Boot Start End Block Id System
/dev/sdb1 1 205 1000M+ 83 Linux
/dev/sdb2 205 304 600M+ 83 Linux
/dev/sdb3 304 522 2400M+ 5 Extended
#上图是自编的,数据误差很大,只做说明之用,可以看到,/dev/sdb3是一个扩展分区,那我们再建一个主分区试一下,
Command (m for help):n
Command action
l logical (5 or over) #注意这里变化
p primary partition #因为才使用二个主分区加一个扩展分区,所以还有一个可以使用,
p #用了它
Selected partition 4 #骗人的感觉就是爽,因为上面的全部空
No free sectors available #都给了扩展,怎么还有空间来建主分区?
Command (m for help):l #没办法,只能建逻辑区喽
Frist..(304-522,default 304): #如果我在说,我就成为大妇女了
Last...... #和上面的一样喽,
这样下来,,分区总算建好了,但还是不能使用,如,把/dev/sdb2转换为linux里的swap分区,就可以用;
Command (m for help): t #转换分区类型
Partition number (1-5):2 #转换的是2
Hex code (type L to list codes): L #查看一下,不演示
Hex code (type L to list codes): 82 #由上知道swap是82
Command (m for help):p
Device Boot Start End Block Id System
/dev/sdb1 1 205 1000M+ 83 Linux
/dev/sdb2 206 304 600M+ 82 Linux swap
/dev/sdb3 305 522 2400M+ 5 Extended
/dev/sdb5 305 400 500M+ c Win95 LAB
Command (m for help): #自动动手把/dev/sdb5转换为Fat32
Command (m for help):w /q #w是保存,q是不保存,慎重,
重启生效.....
1.4.2sdisk:
命令行工具,各种版本和环境都支持,包含在util-linux软件包中,
1.4.3diskdruid
图形化分区工具,只能在安装RedHatLinux系统版本的时候使用,
2.使用mkfs创建文件系统讲解
2.1 linux 的格式化工具
mkfs:
支持ext2.ext3.vfat,msdos,等
mkfs.vfat /dev/sdb3
mke2fs:支持ext2/ext3文件系统
加j就是带日志, ext3文件系统,
2.2 演示:
演示所使用的是上面的分区情况,演示前要提示一下,创建文件系统前一定要与分区里的格式一样,否则会出现混乱,数据是不影响,但识别会发生错误,最好fdisk和mkfs类型一样,
[root@server root]#mkfs.ext3 /dev/sdb1 #将/sdb1转成有日志
的linux下ext3文件系统,
[root@server root]#fdisk -l /dev/sdb1 #进行查看,不写
[root@server root]#mkfs.vfat /dev/sdb5 #对照上面的看
Tips:可用mkswap /dev/sdb2命令初始化swap分区
总不能这样就完了吧..我们的目的就是要使用,对呀,,那怎么使用呢,
[root@server root]#mount /dev/sdb1 /mnt #看不懂就去看基本
[root@server root]#echo "hi" > /mnt/test.txt #测试是否可用
[root@server root]#ls -l /mnt/test.txt
-rw-r--r-- 1 root root 3 12 05 2006 test.txt #可用
[root@server root]#umount /dev/sdb1 #卸载
[root@server root]# #动手把/dev/sdb5测试一下吧,
这样就可以参照我的那篇因空间不足要加新硬盘把所有用户转到新硬盘上面的关于"帐号搬家"
硬盘分区的挂载
3.硬盘分区的挂载
好了..这是本节的最后一个内容,呵呵..不知道你在此进步了多少呢?如果是高手就不要笑偶哒,,我要从基础学起嘛,,-_-!
3.1 挂载命令: mount
例<我就好举例>#mount /dev/sdb2 /mnt/sd2
3.2 有装就要有卸 -umount
例:#umount /dev/sdb2 or
#umount /mnt/sd2
用mount命令只是临时的使用一下,开机就没哒,,如果是想要永久的使用,你不想重启一次就再挂一次吧,,有办法帮你,用下面的.
3.3 可写入/etc/fstab开机挂载
例:/dev/sdb2 /mnt/sd2 ext3 defaults 0 0
有必要把上面一行说一下,,照顾一下新手朋友;
/dev/sdb2 #说明的是/dev目录下sdb的硬盘上的第二分区
/mnt/sd2 #挂载目录
ext3 #文件系统
defaults #所使用的参数<等同于-0>
0 0 #第一个0表示不需要备份,第二个0表示不需要自检
这里为了永久的使用/dev/sdb2,首先找到你想要的挂载点,举例将/dev/sdb2挂载到/mnt/sd2上,可使用以上的命令,用vi或其它编辑命令,
写进后,,以后挂载就不需要将命令写全,可用;
[root@server root]#mount /dev/sdb2 #这样mount就会查找挂载目录, or
[root@server root]#mount /mnt/sd2 #同上,mount也会查找该目录上的挂载设备,
[root@server root]#df #检查一下是否成功
使用卷标进行挂载
添加卷标;e2label
例:#e2lable /dev/sdb2 test
根据卷标进行挂载:
#mount LABEL=test /mnt/sd2
写入/etc/fstab
LABEL=test /mnt/sd2 ext3 defaults 0 0
使用这个有什么好处呢?就是为了防止删除一个分区而导致分区号混乱,例:/dev/sdb1删除了,而/dev/sdb2将变为/dev/sdb1,这样原来的
[root@server root]#mount /dev/sdb2 /mnt/sd2 #这里的sdb2将变为从前的/dev/sdb3,明白了吗?说通俗一点就是跟踪这个硬盘喽,
附:使用这个注意不要重复,可事先查看一下,是否有别的硬盘分区用了这个卷标,
[root@server root]#e2label /dev/sdb2 /test
这里再详细说一下ext2/ext3挂载常用的参数
1.ro/rw 只读/读写
2.exec/noexec 允许/不允许执行
3.dev/nodev 允许/不允许设备挂载
4.suid,sgid/nosuid,nogid,允许/不允许使用suid,sgid文件
5.atime/noatime /更新/不更新<对老机子较好>
6.async/sync 异步/同步磁盘写入
7.user/nouser 允许/不允许普通用户挂载,用于/etc/fstab文件中的选项