主机规划与磁盘分区

!根目录是一定要挂载到某个分区下的

!linux主机也是可以充当路由器实现NAT功能的,直是耗电能力比路由器大得多

分区的时候,只分出/和swap分区,但是会有个问题,如果根目录所在的分区出现坏道,可能会导致整个根目录损毁.

在linux的环境中,以下几个目录是容量比较大且读写频繁的:

/

/usr

/var

/home

Swap

可以将这些独立挂载到单独分区,这样,一个分区出现故障,不会影响其他的分区.


硬盘分区设备号

sata为例:

/dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4   ----->给主分区和扩展分区用,最多四个

/dev/sda5 逻辑分区开始,最小为5


开机流程:BIOS --> MBR --> boot loader -->内核文件

boot loader 可以安装的地点有两个,分别是MBR 和 boot sector(分区的第一个扇区)


参考与扩展阅读:

SPFdisk: http://spfdisk.sourceforge.net/



接触linux也有一段时间了,现将文件系统的知识总结一下吧。总结自鸟哥私房菜

        linux的EXT文件系统

        基础:磁盘的物理组成

            (1) 圆形的盘片,主要用于记录数据

            (2)机械手臂和其上的磁头(用于读写盘片上的数据)

            (3)主轴马达,可以转动盘片,让磁头在其上面读写数据

            (4)扇区:最小的物理存储单位,每个扇区512bytes

            (5)柱面,将扇区组成一个圆,那就示一个柱面,柱面示分区的最小物理单位,磁盘分区是告诉操作系统我这块磁盘在此分区可以访问的区域示由a柱面到b柱面之间的 

            块。第一个扇区很重要,里面有硬盘主引导记录(MBR)以及分区表,其中MBR占446bytes,而分区表占64bytes

            (6)/dev/sd[a-p][1-15]:为SCSI,SATA,USB,Flash等接口的磁盘文件名,/dev/hd[a-d][1-63]:为IDE接口的磁盘文件名

 


 

             由于分区表只有64bytes,只能记录四条分区的记录,这四条称为主分区或扩展分区,其中扩展分区还可以分出逻辑分区

             (1)主分区与扩展分区最多可以有4个(硬盘的限制)

             (2)扩展分区最多只能有一个(操作系统的限制)

             (3)扩展分区可以再分出逻辑分区,能够被格式化做为数据访问为主分区和逻辑分区,扩展分区无法被格式化。

             (4)逻辑分区的数量依操作系统而不同,在linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号),SATA硬盘则有11个逻辑分区(5号到15号)

       文件系统

        传统的文件系统只能中,一个分区就是只能被格式化一个文件系统,可以说一个文件系统就是一个分区,但是随着新技术的应用,可以将一个分区格式化多个文件系 统,也能够将多个分区合成一个文件系统(LVM,RAID),所以现在称呼一个可被挂载的数据为一个文件系统,而不是分区。

        一个文件的数据处理文件的实际内容以外,还包括文件的很多自有属性。文件系统会将这两部分的数据分别存放在不同的块,文件的权限信息放置到inode块 中,而实际内容则放置到data block中,同时还有一个super block会记录文件系统的总体信息(dumpe2fs 查询)。

         在整体的规划中,文件系统最前面有一个启动扇区,这个启动扇区可以安装引导程序,这样就能够将不同的引导程序安装在个别的文件系统前端,而不是硬盘的唯一MBR,这样可以制作多重引导

         文件系统区域划分

         (1)data block数据块,用于存放文件实际数据,ext2文件系统中block大小有1k,2k,4k三种,每个block在格式化后都有编号,以方便inode的记录,一个文件可能占用多个block

         (2)inode表,主要记录文件的属性,以及该文件存放的block中,属性一般有:rwx访问模式,owner/group信息,大小,时间 (mtime,ctime,atime),文件特性标志(SetUID),文件真正数据的指向。inode在格式化的时候大小已经固定为128bytes 了,文件很大时,占的block比较多,inode会根据索引记录来进行文件的block查找。

         (3)super block记录整个文件系统的信息,主要有 block与inode的总量,未使用的和已使用的inode/block的总量,block与inode的大小,文件系统的挂载时间,最近一次写入数据 的时间,最近一次磁盘检查的时间(fsck),一个alidbit值,表示文件系统是否被挂载,0为未挂载,反之为1

         (4)File system Description 文件系统描述说明,与block group有关的信息

         (5)block bitmap,类似在电影院订位置一样,记录哪些数据block已经被占用,哪些没有使用

         (6)inode bitmap,记录那些inode被占用,哪些没有

        dumpe2fs命令:

        dumpe2fs  [-bh]  设备文件名

             b:列出保留为坏道的部分,h:仅列出superblock的数据

 


 

        目录与文件

        linux系统中,目录也是一个文件,新建目录页会至少分配一个inode和block,inode记录该目录的属性权限等信息,而block记录该目录里的 文件的文件名以及inode号码。

        所以当通过ls-l来查看目录时,其大小一般都示一个block大小的整数倍。

        文件的建立也一样,根据文件大小来分配block数量和inode。

        文件的读取流程

        给定一个绝度路径来进行文件的读取,首先会进入其顶层目录,查询是否有足够的权限,如果满足,则查询其block数据,里面包含着下级目录的目录名,和 inode号,读取下级inode信息,看是否满足权限等条件,满足则再次进入下级,依次类推,直到读取到文件

         由于文件的新建,修改,删除等也会同步的修改inode table和block table的信息,但是由于一些一场情况,例如断电,导致这种不一致的状态,为了避免这种情况发生,引入了日志文件系统,文件信息修改前写入日志,结束后 再记录,这样就知道哪些不一致的情况了,Ext3文件系统就引入了这样的日志文件系统

 


 

        文件系统的挂载

        将文件系统与目录树结合的操作称为挂载,文件系统要链接到目录树,才能进行访问,这个目录就是该文件系统的入口,这个目录就叫挂载点

         除了linux标准的文件系统ext2,linux还支持很多的文件系统,如FAT,NTFS,iso9660(光盘)等,但是我们访问文件系统,所有操 作都是通用的,并没有指定访问具体是那个类型的文件系统,这就算VFS(Virtual Filesystem Switch)发挥的作用。VFS会主动帮我们做好访问的工作,具体操作对我们是透明的

 


 

        文件系统基本操作

        df [-ahikHtm] 目录或文件名

        列出文件系统的整体磁盘使用量信息

        a列出所有文件系统信息

        k以KB的容量显示 m MB

        h以易阅读的方式呈现

        i不用硬盘容量,以inode的数量呈现

        T列出该分区的文件系统名

 


 

        du [-ahskm] 文件或目录名称

        评估文件系统的磁盘使用量,常用于评估目录所占容量

        s仅列出总量

        h以易阅读的方式呈现

        k m  同上df

        du -sh * | grep G

 


 

        ln链接文件

        hard link文件,一个文件内容只能对应一个inode号,文件系统是根据inode来进行文件访问的,而文件名只与目录有关,多个不同的文件名可以对应同一 个inode号,这就是硬连接,所以,hard link只是目录下新建一条文件名来对应到某个inode号码而已。 通过ls-i可以查询多少个文件对应到该inode下

        symbolic link文件,symbolic是新建了一个文件,会分配inode号和block块,只不过其block的数据信息是指向的另外一个文件,这就是软连 接,不同与硬连接,因为它会分配新的inode,是一个新的文件,文件的大小是指向的文件位置的字符串长度

        ln [-sf] 源文件 目标文件

        ln [-sf] existfile newlinkfile

        默认示建立硬连接文件,-s表示建立symbolic连接

        f 如果目标文件存在,就删除后再创建

 


 

        磁盘的分区,格式化,检验,挂载

        fdisk  -l 设备名称

        -l 输出后面的设备所有分区内容

        fdisk输入后,会进入交互式的界面,一步步引导你分区结束,所有的操作最初保存在内存中,只有主动保存了分区内容,才会生效

 


 

        mkfs [-t 文件系统格式] 设备文件名

        mkfs -t ext3 /dev/hdc6 格式化该分区为ext3文件系统

 


 

        mke2fs 很繁杂的命令有很多,不过功能很强大

        mke2fs [-b block 大小] [-i block大小] [-L 卷标] [-cj] 设备

        b 设置每个block的大小

        i多少容量给与一个inode

        c检查磁盘错误,仅下达一次-c时,会快速测试读写,-c -c的话,会测试读写

        L设置卷标名称

        j加上j后,会主动加入日志系统而称为ext3

 


 

        fsck [-t 文件系统] [-ACay] 设备名称

        进行文件系统的检查

         A依据/etc/fstab的配置,将需要的设备扫描

         a自动修复扇区

         y和a类似

         C检查过程中显示进度

         t设置文件系统格式,但是一般会读取super block的数据自动判断

         f强制检查

 


 

        badblocks [-svw] 设备名称

         检查硬盘扇区是否有坏道的

         s显示进度

         w使用写入的方式来测试

 


 

        磁盘挂载与卸载

        注意:作为挂载点的目录理论上应该都是空目录,单一目录不应重复挂载多个文件系统,单一文件系统不应被挂载在不同的挂载点

        mount  -a

        依照/etc/fstab配置,将多有未挂载的磁盘都挂载上来

        mount -l 会显示label信息

        mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 设备文件名 挂载点

       -n默认系统会将挂载信息写入/etc/mtab中,如果刻意不写则使用n

       -L除了用设备名挂载,还可以用卷标进行挂载

       -o额外参数,比如帐号,密码,读写权限等

        ro,rw只读或只写

        sync,async同步写入或异步的内存机制

        auto noauto

        dev nodev是否允许创建设备文件

        exec noexec 是否允许有可执行文件

        user nouser是否允许在该分区下任何用户执行mount

        defaults 使用默认值

        remount 重新挂载,在系统出错时很有用

        mount -o remount,rw,auto /   重新挂载根目录

 


 

        unmount [-fn] 设备文件名或挂载点

         f强制卸载

         n不更新/etc/mtab

 


 

         磁盘参数的修改

         mknod 设备文件名 [bcp] [Major] [Minor]

         b修改设备名称为一个外部存储文件

         c设为外部输入设备文件

         f设置设备为FIFO文件

         主设备代码 从设备代码

 


 

         e2label 设备名称 新的Label 名称

         修改卷标

 


 

         tune2fs修改很多参数 具体查看文档

         tune2fs [-jlL] 设备代号

         l 类似dumpe2fs 读取super block

         j 将ext2转化为ext3

         L修改设备卷标

         tune2fs -l /dev/hdc6

 


 

         hdparm 设置IDE接口的高级参数

         hsparm [-icdmXTt] 设备名称

 


 

         设置开机挂载

         修改/etc/fstab文件

         进入此文件,默认的属性从左到右依次是:

         Device MountPoint filesystem parameters dump fsck

 


 

         特殊设备loop挂载(镜像文件不挂载就使用)

         mount -o loop /test.iso /mnt/mountpoint

         制作大文件,然后将其格式化,然后挂载,类似多了个分区

         dd if=/dev/zero of=/home/test bs=1M count=512

         mkfs -t ext3 /home/test

         mount -o loop /home/test /media/cdrom

         创建新文件,格式化,挂载

 


 

         内存交换空间(swap)的创建

         (1)新进行分区,假设分好了 分区为/dev/hdc7

         (2)mkswap /dev/hdc7 将此分区设为swap空间 可用free命令查看内存使用情况

         (3)swapon /dev/hdc7 开启swap空间

         swapon -s 列出目前使用的swap设备有哪些

         也可使用文件来构建swap,新创建个新文件,mkswap file      然后swapon file

         swapoff关闭交换空间 swapoff /dev/hdc7 swapoff file

 


 

         启动扇区与super block

         启动扇区永远在文件系统的最前面的1025bytes的区域,如果block大小是1k,那么启动扇区在super block之前的区域,如果 block为2k或4k,则启动扇区在super block内的前1024bytes中

 


 

         fdisk无法支持高于2TB以上的分区,可以使用GNU的parted进行分区行为
posted @ 2016-01-14 11:32  luffing  阅读(260)  评论(0编辑  收藏  举报