ChinaITLab-Linux工程师培训课程笔记6

来源:互联网 发布:android串口编程实例 编辑:程序博客网 时间:2024/04/30 07:39

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.硬盘分区的挂载