Linux磁盘、文件系统管理

对Linux而言,其哲学思想之一就是一切皆文件,因此Linux之上所有设备的操作都是通过文件接口来实现的,也就是说在访问设备的时候就如同访问一个文件一样,因为他们使用的都是文件系统接口。

 设备也分种类,如:

    1、块设备:block 其存取单位是“块”,如硬盘

    2、字符设备:char 存取单位是“字符”,如键盘

每个设备都有一个文件作为他的访问入口,次文件我们称之为设备文件;该文件关联至一个设备驱动程序,进而能够跟与之对应的硬件设备进行通信

设备号码:用来表示设备,不同类别的设备有不同的设备号,同一类别的设备有不同的设备或多个设备,因此就有主设备和次设备号。

主设备号:major number,标识设备类型

次设备号:minor number,标识同一类型下的不同设备

我们可以通过ls -l /dev 来查看设备文件的设备号码,如:

blob.png

其中c开头的是字符设备,也就是char的首字母。所以,同理,块设备就是b开头

blob.png

主设备号和次设备号通过逗号隔开,前面为主设备号,后面为此设备号


在这里有不同的打头字母,对应不同的文件类型。

b 块设备 如:硬盘

c 字符设备 如:键盘

d 目录文件

l 链接文件

s 套接字文件

blob.png

为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口磁盘设备的设备文件命名


磁盘设备的设备文件命名

    IDE:/dev/hd

    SCSI,SATA,SAS,USB:/dev/sd

不同设备表示方法:在设备文件名后面追加一些字母a-z来表示

    /dev/sda, /dev/sdb, /dev/sdc….

同一设备上的不同分区:采用数字递增的方式,如1,2…

    /dev/sda1, /dev/sda2,… /dev/sdb1, /dev/sdb2…..

机械式硬盘

    磁道:每个盘片上被划分成N个同心圆,称之为磁道

    扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区

    柱面:每个磁盘上面相同位置都会有以个相同的编号,所有相同编号的磁道称之为柱面

扇区的划分

    将每一个磁道按512个字节为单位划分为等分,叫做扇区的划分     每个扇区512字节,而文件的最小单位是“块”  每个“块”由连续的8个扇区组成 大小也就是4KB

磁盘如何分区

    1)外磁道的读写速度比内侧磁道的读写速度快。

    2)磁盘的分区是根据柱面来划分的

    3)每个盘面上的一个柱面只能属于一个分区,而且由外向内多个柱面组合成一个分区来使用,因此越靠外的柱面其读写速率越高,所以通常我们将每个盘面最外侧的柱面划分成系统分区。

0磁道0扇区

    在磁盘之上有个叫做0磁道0扇区是被预留出来的,它不属于任何分区,这个扇区称之为MBR,严格意义上讲应该叫做用来存储MBR的一段空间。该扇区的大小为512bytes,专门用来存储mbr,即主引导记录,分为三部分:

    1)446bytes:存储boot loader,引导加载器;

    2)64bytes,存储分区表,有多少个分区,每个分区从哪里开始到哪里结束;其中每16bytes标识一个分区,因此,一块硬盘最多只能有4个主分区;

    3)2bytes,前面信息的有效标识(或者叫做结束标志),用四个16进制来表示55AA, 标识前面510bytes是有效的

一块磁盘最多只能划分四个主分区,要么划分3个主分区+1个扩展分区(N个逻辑分区)


磁盘分区管理工具:fdisk parted sfdisk

    查看:fdisk -l [DEVICE] 例如:fdisk -l /dev/sda 查看sda硬盘,也可以不跟最后的选项,直接查看有几个硬盘及分区信息

创建分区:fdisk   是一个交互式界面,有许多子命令

p:显示磁盘分区表

n:新建分区

d:删除分区

t:修改分区的系统ID

l:列表出所有已建好的系统ID

w:保存并退出

q :不保存退出

查看内核是否已经识别新的分区:cat /proc/partitions

对于已经有分区处于使用状态的磁盘来讲,新建分区后需要让内核重读其分区表:

    Centos 5 之上:

        #partprobe [DEVICE]

    Centos 6和7:

        #partx -a [DEVICE]

        #kpartx -af [DEVICE]

创建文件系统

    1、mkfs命令

        mkfs -t FSTYPE=mkfs.FSTYPE

        mkfs -t ext4=mkfs.ext4

        mkfs -L                           设定卷标

    2、 mke2fs  -t {ext2|ext3|ext4}       指定文件系统

        mke2fs -b {1024|2048|4096}        指定块大小

        mke2fs -L LABEL                   打标

        mke2fs -i #                       每多少字节给创建一个iNode,次字节数不应该小于块大小

        mke2fs -N #                       直接指定可用的iNode数

        mke2fs -m #                       指定预留空间占整个分区空间的百分比,默认为5

        mke2fs -O                         指定分区特性

*对交换分区使用特定的工具mkswap来创建交换分区,但前提是要先调整设备分区类型为8e

    3、blkid:查看指定块设备的属性信息

        -L‘卷标名’:可以查看到卷标名所对应的磁盘分区

        -U‘UUID’ :可以查看到UUID所对应的磁盘分区

    4、tune2fs:重新设定ext系列文件系统可调整参数的值

        -l:查看指定文件系统的超级块信息:

        -L 修改卷标

        -m #  :修改预留空间百分比

        -O[^]FEATURE:启用指定特性,特性前加^,表示关闭此种特性

        -o[^]mount-options:开启或关闭指定的挂在选项

        -U UUID :修改UUID

    5文件系统的检测

        因进程意外终止或系统崩溃等情况导入写入操作费正常终止时,可能会导致文件损坏;此时。应该修复文件系统,注意:需要离线修复

        工具:fsck e2fsck     (file system check 文件系统检查的简写)

            fsck所支持的选项

                -t:fstype

                -a:自动修复错误

                -r:交互式修复错误

            e2fsck:专用于修改ext系列文件系统

                -y:对问题自动回答yes

                -f:强制进行检测


超级块

    作用:存储文件系统的大小、有多少是空的和已经提哦啊满的占多少,以及他们各自的总数和其他诸如此类的信息。 要使用一个分区来进行数据访问,那么第一个要访问的就是超级块。所以,如果超级块坏了,那磁盘也基本没救了。

    包括:文件系统的大小、空闲块数目、空闲块索引表、空闲i节点数目……等等

文件系统的挂载

    磁盘分区要想被使用必须先挂载,所谓挂载是指将额外的分区与分文件系统上的某目录建立关联关系的过程(默认只有管理员才有权限)。注意:如果该目录中有文件,则目录中的原有文件会被隐藏

    挂载工具:mount 的使用:mount DEVICE MOUNT_POINT

        DEVICE:所需要挂载的磁盘分区

        MOUNT_POINT:挂载点:另一个文件系统的访问入口                 固定挂载点:/mnt    /media

        挂载点需要具备以下俩点:

            1 事先存在

           2 使用空闲目录

常用的挂载选项:mount [option]…[-t fstype] [-o option]

    -t fstype  指定文件系统类型

    -r :只读挂载

    -w:读写挂载

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

    -n:挂载时,不更新/etc/mtab文件

    -B:绑定目录到另一个目录上

    -o option:

        atime/noatime:文件和目录被访问时是更新最近一次的访问时间戳

        auto/noauto:设备是否支持mount 的-a 选项自动挂载

        dev/nodev:是否支持在此设备上使用设备

        exec/noexec:是否允许执行此设备上的二进制程序文件

        suid/nosuid:是否支持在此设备的文件上使用suid

        remount:重新挂载,通常用于不卸载的情况下重新制定挂载选项

        ro:只读

        rw :只写           

        acl:在此设备是支持使用facl,默认不支持

注意:上述选项可多个同时使用,彼此之间用逗号分隔

    默认挂载选项:rw,suid,dev,auto,exec,nouser(不允许普通挂载此文件设备),async(异步I/O,数据写操作先与内存完成,而后再根据某种策略同步至持久设备中)


挂载交换分区

    启用:swapon

        swapon [option]…[device]

            -a:激活所有的交换分区

            -p priority:指定优先级(用数字来表示)

    关闭:swapoff

            -a:禁用所有

内存及交换分区的使用信息查看:free

    -m:以MB为单位

    -g:以GB为单位

    mem:物理内存的使用情况

    swap:交换分区的使用情况

三种方式查看所有已经挂载的设备

    1 mount

    2 cat /proc/mounts

    3 cat /proc/mtab


_ueditor_page_break_tag_

设备自动挂载

    自动挂载的设备的配置文件:/etc/fstab

blob.png

该文件的语法格式:每行定义一个要挂载的文件系统,有一下6个字段

    1、挂载的设备:可以使一下几种方式

        设备文件

        LABEL

        UUID:centos 7目前使用的方式

    2、挂载点

    3、文件系统类型

    4、挂载选项:mount命令中的选项,挂载选项可以有多个,彼此间用逗号分隔

    5、转储频率(备份频率):

        0:从不

        1:每天

        2:每隔一天

    6、自检次序

        0:不自检,额外创建的文件系统都无须自动自检

        1:首先自检,通常只有根文件系统需要

        2:次级自检,不同的设备可以使用同一个自检次序

        3:依次在2之后

        …

使用mount -a 可以重新加载/etc/fstab 文件中的所有挂载项

原创文章,作者:cszdz123,如若转载,请注明出处:http://www.178linux.com/40054

(0)
cszdz123cszdz123
上一篇 2016-08-29 08:54
下一篇 2016-08-29 08:59

相关推荐

  • 快速删除无用包组

    快速删除无用组 第一步: [root@cloud ~]# yum grouplist >> list.txt 第二步: 编辑 list.txt把需要留下来的删除 第三步: 创建脚本 remove.sh 运行 #/bin/bash # # while read…

    Linux干货 2016-06-09
  • Raid的工作原理

    1,什么是Raid Raid的基本原理就是把多个磁盘组合到一起,组成一个磁盘组,使性能达到或超过一个容量巨大价格昂工艺的磁盘,当然基于硬件的RAID解决方案比基于软件RAID技术在使用性能和服务性能上稍胜一筹,具体表现在检测和修复多位错误的能力、错误磁盘自动检测和阵列重建等方面。 2.RAID级别介绍;一般常用的RAID阶层,分别是RAID 0、RAID1、…

    Linux干货 2017-06-19
  • 文件管理命令及变量基础

    文件管理工具:cp,    mv,     rm       cp命令:copy 源文件;目标文件 单源复制: cp [OPTION]….[-T]  SOURCE  DEST 多源复制:cp [OPTION] ….SOURCE…DIR…

    Linux干货 2016-12-21
  • 第九周

    统计可登录shell与不能登陆shell的个数 2. 写一个脚本 3.写一个脚本    4、写一个脚本,完成如下功能 脚本能够接受一个参数。 (1) 如果参数1为quit,则显示退出脚本,并执行正常退出。 (2) 如果参数1为yes,则显示继续执行脚本。 (3) 否则,参数1为其它任意值,均执行非正常退出。    5、…

    Linux干货 2016-12-26
  • 第六周总结VIM编辑器的使用并完成练习题

    第六周 总结VIM编辑器的使用并完成练习题 1. VIM是什么? VIM(Vi IMproved)是从vi发展出来的一个文本编辑器。 2.为什么要使用VIM? VIM有代码补完,编译以及错误跳转等方便编程的功能,在程序员中广泛使用。对于大多数的用户来说,VIM有着比较陡峭的学习曲线,但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。VIM是类Unix系统用…

    Linux干货 2017-09-02
  • Linux的终端类型

    一、了解终端   在早期的年代,主机不是很多,都是一系列的大型主机,简单来说就是用户很多,但主机很少,不可能做到人手一台,但可以在主机上连接一个分屏器,在分屏器上可以连接鼠标键盘以及显示器,这些东西是没有计算能力的,仅仅担任输入和输出的工作,运算和处理都是由主机来完成的。   简单来说终端是用户与主机交互,是必然用到的…

    Linux干货 2016-10-14

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-29 14:19

    文章对磁盘分区的要点,进行了完整的表述,对于硬盘基础知识可以结合图片来详细说明。同时对于命令的使用,没有很好的练习,对于学习linux,只有多练习,才能发现问题。时间实践真理的唯一标准哦。