CHAP08
Linux中的分区与格式化
1.分区与格式化原理
分区原理:
无论任何分区,硬盘都有一个引导分区,由两部分组成:MBR(主引导扇区,大小为446Byte,
放置操作系统的引导代码),主分区表(大小64Byte,保存硬盘的分区个数,每个分区的起始
记录,64Byte限制Linux一个硬盘只能有4个主分区区,每个区使用16Byte)
分区的时候主要就是修改硬盘的主分区表,不影响分区的数据。
5个以上的分区需要靠扩展分区表来实现。这个时候主分区只能有3个,把最后一个存储主分
区信息的位置用来存储扩展分区表的信息。然后在硬盘里面新建一个扩展分区表,划分更多
的硬盘分区。理论上,扩展分区表支持无限个分区,这些分区称为逻辑分区。逻辑分区的信
息(起始位置、文件系统类型)都写在扩展分区表里面。
扩展分区表的信息(起始位置)也写在主分区表里面。
格式化原理:
格式化就是创建不同的文件系统类型。
没有格式化的硬盘是不能使用的,而没有分区的硬盘是不能格式化的。
常用的Windows/DOS分区工具
<1>fdisk
适用于DOS,Windows 95/98
<2>Partition Magic
适用于DOS,Windows 95/98/Me/2000/XP
<3>diskpart
Windows 2000 安装光盘修复控制台
常用的Linux分区工具
<1>fdisk
命令行工具,各种版本和环境都能使用,包含在软件包util-linux中
<2>sfdisk
命令行工具,各种版本和环境都能使用,包含在软件包util-linux中
<3>diskpart
图形化分区工具,只能在安装RedHat系列版本的时候可以用
fdisk一般使用过程
<1>运行命令:
[root@localhost root]# fdisk /dev/hdX
例如:
[root@localhost root]# fdisk /dev/hdb
只有root用户能够执行fdisk命令
<2>添加/删除/修改分区
<3>重新启动计算机
分区表只有在重启操作系统时,由内核读取
实例:
检查当前分区情况:
[root@localhost root]# fdisk -l /dev/sdb
[root@localhost root]# fdisk /dev/sdb
查看帮助:
d delete a partition //删除分区
m print this menu //打印帮助
n add a new partition //添加一个新的分区
p print the partition table //打印分区表
q quit without saving changes
t change a partition's system id //改变分区的系统编号
v verify the partition table //校验分区表
w write table to disk and exit //将分区表写进硬盘,然后退出
查看p命令:
2088 cylinders(2088个柱面),/dev/hda: 17.1 GB
Linux的格式化工具
mkfs - 支持ext2、ext3、vfat、msdos、jfs、reiserfs(后两种为Linux使用的日志文件系统)等
用法一:mkfs -t <fstype> <partition>
例: [root@localhost root]# mkfs -t ext3 /dev/hdb2
用法二:mkfs.<fstype> <partition>
例: [root@localhost root]# mkfs.vfat /dev/hdb3
mke2fs - 支持ext2/ext3文件系统
用法:mke2fs [-j] <partition>
默认生成ext2型的文件系统(使用时不加参数)。
-j 表示加日志
例: [root@localhost root]# mke2fs -j /dev/sdb2 //创建为ext3类型的文件系统
[root@localhost root]# mkfs. //按两下Tab键,就能出现如下提示
mkfs.cramfs mkfs.ext3 mkfs.msdos mkfs.vfat
mkfs.ext2 mkfs.jfs mkfs.reiserfs
Linux swap不是一种真正意义上的文件系统,里面的存储的文件不能被读取、挂载。存放内存的
临时文件,只能使用mkswap命令,将分区初始化为Linux swap分区,不能使用mkfs命令。
硬盘分区的挂载:
mount命令
卸载:
umount命令
mount命令,只不过是临时使用一下,每次重启计算机我们需要手工挂载。
为了使分区能够自动挂载,经常能够使用,我们需要把分区的挂载情况写入/etc/fstab
写入/etc/fstab(文件系统表file system table)
fstab显示每个分区的挂载情况
例:
在fstab中写入 /dev/sdb2 /mnt/sd2 ext3(分区的文件系统类型) defaults(mount命令
-o 参数选项) 0(表示是否备份分区) 0(表示是否开机自检,0表示不自检,只有根分区
的自检顺序是1,其他分区只有0和2两种选择)
[root@localhost root]# more /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda3 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
/dev/sdb1 /mnt/sd1 ext3 defaults 0 0
/dev/sdb5 /mnt/sd2 vfat defaults 0 0
noauto表示这个设备不需要自动挂载
以后挂载/dev/sdb1这个设备时,命令可以不写全:
[root@localhost root]# mount /dev/sdb1 这样mount自动在fstab文件里面查找挂载点
挂载/dev/sdb5时,也可以使用如下命令:
[root@localhost root]# mount /mnt/sd2
使用卷标挂载:使用卷标可以标识分区,但是卷标一定不能重名
<1>添加卷标 - e2lable
例:[root@localhost root]# e2lable /dev/sdb2 test
<2>根据卷标挂载
例:[root@localhost root]# mount LABLE=test /mnt/sd2
<3>写入/etc/fstab
例:[root@localhost root]# LABLE=test /mnt/sd2 ext3 defaults 0 0
ext2/ext3挂载选项
<1>ro/rw - 只读/读写
[root@localhost root]# mount -o ro /dev/hda1 /mnt/test //第一次挂载
[root@localhost root]# mount /mnt/test -o remount,rw //挂载状态下重新挂载
<2>exec/noexec - 设置分区上的文件允许/不允许可执行
[root@localhost root]# mount /mnt/test -o remount,noexec //重新挂载
[root@localhost root]# cp /bin/ls /mnt/test //拷贝可执行文件
[root@localhost root]# /mnt/test/ls
-bash: /mnt/test/ls: 权限不够
千万不要把自己的根分区挂载为不可执行的,noexec的选项不要随便使用。
挂载光盘,软盘时可以使用,防止里面的病毒程序自动运行。
<3>dev/nodev - 允许/不允许识别设备文件,默认设置为dev
可移动设备或共享目录里面最好设置为nodev
<4>suid,sgid/nosuid,nosgid - 允许/不允许suid,sgid文件
公共的目录一般设置为nosuid,nosgid
<5>atime/noatime - 更新/不更新节点的访问时间(access time)
频繁访问的目录、文件,可以设置为noatime,加快系统运行速度
<6>async/sync - 异步/同步磁盘I/O
在async(异步)模式下数据写入缓存区,不会立即写入硬盘,如果对时间要求不高,可以使用这个选项
可以使系统获得较高的性能,使CPU不用等待磁盘,硬盘的I/O。
sync(同步)每一个磁盘操作都写进磁盘,在实时系统里面使用
<7>user/nouser - 允许/不允许普通用户挂载磁盘,只能用于/etc/fstab文件中选项
默认不允许普通用户挂载磁盘
这些选项可以一起使用,不同的选项之间用","隔开。
在fstab中修改目录或分区的defaults参数为上述选项,
参看:
[root@localhost root]# man mount
defaults
Use default options: rw, suid, dev, exec, auto, nouser(不允许普通用户挂载),
and async.
2.使用Linux中的fdisk分区
3.使用mkfs格式化文件系统
4.硬盘分区的挂载