1、复习本次课程所讲的内容;

Linux磁盘管理  
    硬盘:硬盘是通用的叫法,其实硬盘和磁盘是一样的,都是用来存东西的;还有磁带、光盘、U盘等只是存储的介质不一样。    
        机械式硬盘    
        SSD固态硬盘

    机械式:  
        track磁道    
        每个扇区(sector): 512bytes    
        磁柱(cylinder): 分区的基本单位;

        主引导记录 MBR:Master Boot Record             512bytes  
                446: bootloader    
                64: filesystem allocation table    
                    16: 标识一个分区    
                2:55AA

    磁盘的主引导扇区=磁盘的主引导记录(MBR 446)+磁盘分区表(DPT 64) +结束符(55AA)

bootload可以安装在磁盘的主引导记录(MBR)或是分区的引导记录(PBR,也叫DBR)    
(1)linux的bootload可以安装在两者上(MBR,PBR)      
(2)windows自行安装的MBR只用作跳转到指定的分区上,windows的bootloader 是安装在分区的PBR上的

    磁盘接口类型:  
        IDE (ATA):133MB/s,/dev/hd    
        SCSI: 640MB/s    
        SATA:6Gbps    
        SAS:6Gbps    
        USB:480MB/s

        识别硬盘设备:/dev/sd  
            标记不同的硬盘设备:/dev/sd[a-z]    
            标记同一设备上的不同分区:/dev/sd[a-z][1-]    
                1-4: 主或扩展分区标识    
                5+:逻辑分区标识

        设备文件:特殊文件  
            设备号:    
                major, minor    
                    major: 设备类型    
                    minor: 同一类型下的不同设备

            “块”:block,随机设备  
            “字符”:character,线性设备

            GPT

设备文件分为两种:块设备文件(b)和字符设备文件(c)

设备文件一般存放在/dev目录下,对常见设备文件作如下说明:

/dev/hd[a-t]:IDE设备

/dev/sd[a-z]:SCSI设备

/dev/fd[0-7]:标准软驱

/dev/md[0-31]:软raid设备

/dev/loop[0-7]:本地回环设备

/dev/ram[0-15]:内存

/dev/null:无限数据接收设备,相当于黑洞

/dev/zero:无限零资源

/dev/tty[0-63]:虚拟终端

/dev/ttyS[0-3]:串口

/dev/lp[0-3]:并口

/dev/console:控制台

/dev/fb[0-31]:framebuffer

/dev/cdrom => /dev/hdc

/dev/modem => /dev/ttyS[0-9]

/dev/pilot => /dev/ttyS[0-9]

/dev/random:随机数设备

/dev/urandom:随机数设备

    分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;

    分区工具:  
        fdisk, parted, sfdisk

    fdisk工具的使用:  
        最多支持在一块硬盘上的15个分区;

        分区管理子命令:  
            p: 显示    
            n: 创建    
            d: 删除    
            t: 修改分区ID    
            l: 列出所有支持ID类型    
            w: 保存退出    
            q: 放弃修改并退出    
            m: 获取帮助

        创建完成之后,查看内核是否已经识别新的分区:  
            # cat /proc/partitions

            有三个命令可以让内核重读磁盘分区表:  
                CentOS 5: partprobe [DEVICE]    
                CentOS 6,7:    
                    partx    
                    kpartx

                partx命令:  
                    partx DEVICE    
                    partx -a DEVICE    
                    partx -a -n M:N DEVICE    
                        M    
                        M:    
                        :N

   kpartx命令:  
  kpartx -af DEVICE 通知内核强制重读分区表【对于一个已经存在的磁盘,内核是不会直接识别的】

             9月01日课程作业(练习)-Linux文件系统管理_通用

2、总结整理磁盘管理及文件系统管理中设计的各种命令的使用,并附注一定的示例;

    1)、查看系统分区情况 

        9月01日课程作业(练习)-Linux文件系统管理_固态硬盘_02

    2)获取fdisk参数信息的相关帮助

命令:fdisk /dev/sda  #进入fdisk操作环境

          m                        #打印帮助 列表

9月01日课程作业(练习)-Linux文件系统管理_固态硬盘_03

3)新建分区

按n #创建一个分区

Command (m for help): m    
Command action      
   a   toggle a bootable flag      
   b   edit bsd disklabel      
   c   toggle the dos compatibility flag      
   d   delete a partition      
   l   list known partition types      
   m   print this menu      
   n   add a new partition      
   o   create a new empty DOS partition table      
   p   print the partition table      
   q   quit without saving changes      
   s   create a new empty Sun disklabel      
   t   change a partition's system id      
   u   change display/entry units      
   v   verify the partition table      
   w   write table to disk and exit      
   x   extra functionality (experts only)

Command (m for help): n    
Command action      
   e   extended      
   p   primary partition (1-4)      
p      
Partition number (1-4): 3      
First cylinder (7063-26108, default 7063):      
Using default value 7063      
Last cylinder, +cylinders or +size{K,M,G} (7063-26108, default 26108): +10G   

Command (m for help): w    
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.    
The kernel still uses the old table. The new table will be used at      
the next reboot or after you run partprobe(8) or kpartx(8)      
Syncing disks.      

         重启后生效。

linux文件系统管理

    文件系统:

    VFS:Virtual File System

    Linux:ext2,ext3,ext4,reiserfs,xfs,btrfs,swap    
    光盘:iso9600

     windows:fat32(vfat),ntfs

    Unix:ffs,ufs,jfs,jfs2

    网络文件系统:nfs,cifs

   集群文件系统:ocfs2,gfs2

  分布式文件系统:ceph

           mosefs,mogilefs,hdfs,gfs,gluterfs

(1)日志型文件

    非日志型文件:ext2

    日志型文件系统:ext3,ext4,reserfs,xfs,btrfs,swap

日志型文件系统[ext3,ext4]和非日志型文件系统[ext2]的区别:

日志型写入步骤:1.预备,当系统要写入文件时,会先在日志记录块中记录某个文件准备要写入的信息

2.实际写入,开始写入文件的权限和步骤;开始更新meta data[中间数据]的数据

3. 结束,完成数据与metadata的更新后,在日志记录块中完成该文件的记录

非日志写入步骤:1. 先确定用户对于欲添加文件的目录是否有w和x权限,若有的话才能添加

2.根据inode bitmap 找到没有使用的inode号码,并将新文件的权限/属性写入

3.根据block bitmap 找到没有使用的block号码,并将实际数据写入block中,且更新inode的block指向数据

4.将刚才写入的inode与block数据同步更新inode bitmap与block bitmap,并更新superblock的内容

当中途断电等因素导致系统中断时,会出现数据的不一致状态,这时非日志文件系统需要进行一致性检查,很费时间。而日志文件系统,只需要去检查日志记录块就可以知道那个文件发生了问题,不必去针对整块文件系统去检查。

      (2)swap:交换分区

    创建文件系统:

在分区上执行格式化(高级格式化)

       要使用某种文件系统,满足两个条件

              内核中:支持此种文件系统

             用户空间:有文件系统管理工具

创建工具:mkfs(make file system)

-t {ext2|ext3|ext4}:指明要创建的文件系统类型

mkfs-t ext4 = mkfs.ext4 = mke2fs -t ext4

b {1024|2048|4096}:其上限由page frame决定

-L LABEL:指定要使用的卷标[使用时,LABEL='MYLABELNAME']

-j: 相当于使用-text3

mkfs.ext3= mkfs -t ext3 = mke2fs -j = mke2fs -t ext3

-i #: 指明inode与字节的比率[不加% ],;即,每多少字节给创建一个inode;

-N #: 直接指明给此文件系统创建多少个inode

-m #:指定预留空间的百分比[只有root能用,不用%];默认为5;

-O [^]FEATURE:可以用来指明这个文件系统额外可以具有的属性,具体可以查看man手册

例:-o has_journa 启用日志属性

-o ^has_journa 不启用日志属性

e2label: 调整卷标

查看:e2label /dev/DEVICE

设定卷标:e2label /dev/DEVICE LABEL

tune2fs:查看或修改ext系列文件系统的某些属性

查看超级块中的数据信息:如UUID:全局惟一标识符

tune2fs-l /dev/DEVICE

例 tune2fs -l /dev/sda5

修改指定文件系统的属性:

-j:ext2 --> ext3

-L LABEL: 修改卷标;

-m #: 调整预留空间的百分比;

-O [^]FEATURE: 开启或关闭某种特性

-o [^]mount_options: 开启或关闭某种默认挂载选项

-o acl开启acl

-o ^acl关闭acl

dumpe2fs命令:显示ext系列文件系统属性信息

dumpe2fs[-h] /dev/DEVICE

例dumpe2fs -h/dev/sda5

blickid命令:可以查看文件类型

检测文件系统

fsck.ext2, fsck.ext3, fsck.ext4, fsck.xfs ...

fsck:文件系统检查命令

-tFSTYPE

fsck-t FSTYPE = fsck.FSTYPE

例fsck -t ext4 修复即删除不一致文件

-a:自动修复所有错误[慎用]

-r: 交互式修复错误

ext系列文件系统的专用工具:

e2fsck

-y: 对所有问题自动回复为yes;

-f: 即使文件系统处于clean状态,也要强制进行检测;

Windows无法识别Linux上专用的文件系统,因此,有存储设备需要两种系统之间交叉使用时,应该使用windows支持的文件系统:

#mkfs -t vfat /dev/DEVICE

 

挂载:

注意:1.在Linux系统上,所有的文件系统必须通过根文件系统的某个分支来访问;

2.单一文件系统不应该被重复挂载在不同的挂载点(目录)中

3.单一目录不应重复挂载多个文件系统

4.作为挂载点的目录理论上应该都是空白目录,不然原来目录下的文件会被隐藏

根文件系统:根是一切文件系统的访问入口,根关联到的分区,有一定的要求:FHS

除了根,其余所有的其它文件系统如果想要被访问,都只能够通过“关联”至根文件系统上的某个目录来实现;这种操作即所谓的“挂载”,也即mount;相反动作,即卸载,命令为umount

挂载点:mount_point,即用于作为另一个文件系统访问入口的目录;

mount命令:

mountDEVICE MOUNT_POINT

挂载点

1、事先存在;

2、应该使用别的进程未使用的目录;

3、挂载点下原有的文件将被隐藏;

mount:将显示当前系统已经挂载的所有文件系统的相关信息;

mount[OPTION]... [-t FSTYPE] [-o OPTION] [DEVICE] MOUNT_POINT

命令选项:

-r: 只读挂载

-w: read and write,读写挂载

-t FSTYPE: 被挂载的设备上的文件系统类型;可省略,此时mount会自动使用blkid命令来判断之;

-L LABEL: 以卷标的方式指定要挂载的设备,因此,此时DEVICE必须省;

-U UUID:以UUID的方式指定要挂载的设备,因此,此时DEVICE必须省;

-a: 自动挂载所有的支持自动挂载的设备(/etc/fstab文件中定义的支持自动挂载的设备);

-n: 默认情况下,设备挂载与否的改变结果会被保存于/etc/mtab中一份;-n选项用于变动时不更新此文件

此时,如果想查看挂载的所有文件系统:cat /proc/mounts  
-a: 自动挂载所有支持自动挂载的设备;    
-B:绑定目录至另一个目录上;

  -o 挂载选项:  
            async:异步模式    
            sync: 同步模式    
            atime/noatime:是否更新访问时间戳;    
            diratime/nodiratime:是否更新目录的访问时间戳;    
            auto/noauto: 是否允许此设备被自动挂载;    
            exec/noexec:是否允许执行此文件系统上应用程序;    
            dev/nodev:是否支持在此设备上使用设备文件;    
            suid/nosuid:    
            remount:重新挂载    
            ro    
            rw    
            user/nouser: 是否允许普通挂载此设备;    
            acl:是否支持此设备上使用facl;    
            defaults:rw, suid, dev, exec, auto, nouser, and async

umount:卸载命令  
            # umount DEVICE    
            # umount MOUNT_POINT

            查看正在访问指定挂载点的进程:  
                # fuser -v MOUNT_POINT

            终止所有正在访问指定的挂载点的进程:  
                # fuser -km MOUNT_POINT

3、创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至/mydata目录

  1)创建挂载点    #mkdir /mydata

    9月01日课程作业(练习)-Linux文件系统管理_固态硬盘_04

  2)创建分区    #我已创建sda3

    9月01日课程作业(练习)-Linux文件系统管理_通用_05

  3)分区文件系统高级格式化    #mkfs.ext4 /dev/sda3

     9月01日课程作业(练习)-Linux文件系统管理_通用_06

  4)配置挂载文件:/etc/fstab      #vim /etc/fstab

    /mydata                     ext4 defaults        0 0  

     9月01日课程作业(练习)-Linux文件系统管理_固态硬盘_07

  5)挂载到 /mydata    

   # mount /dev/sda3 /mydata  

    9月01日课程作业(练习)-Linux文件系统管理_通用_08