推荐-LINUX磁盘管理

Evernote Export

LINUX磁盘管理

linux学习笔记 磁盘分区 文件系统 挂载

在操作系统中,磁盘管理属于设备管理的范畴。一块硬盘安装到主机之后称为裸设备,若要能够在Linux系统中使用必须对其进行如下步骤:分区=>格式化(创建文件系统)=>挂载

LINUX系统的设备类型

Linux沿袭Unix的风格,将所有设备认成是一个文件

  • 块设备文件

    通常称为“随机设备”。所谓“块设备”是指对其信息的存取以“块”为单位,如通常的光盘、硬盘、软盘、磁带等,块长取512、1024或4096字节。块设备可以直接通过块设备特别文件来访问。为了提高数据的传输效率,块设备驱动程序内部采用块缓冲技术。

  • 字符设备文件

    通常称为“线性设备”。所谓“字符设备”是指在I/O传输中以字符为单位进行传输的设备,如键盘,打印机等。不过需要注意的是以字符为单位并不一定意味着是以字节为单位,因为有的编码规则规定,一个字符占16bit,合2个字节。

    Tips:

    1. 设备文件一般存放在/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/console:控制台
  1. 控制台和虚拟终端的区别与联系:
    控制台就好比电视机上的按钮,终端好比遥控板,他们的目的都是控制电视机,但是控制台必须在本地,而终端可以在远端,系统只有一个控制台,叫console,其他的都是终端

  2. 设备号码:
               主设备号:major number, 标识设备类型
               次设备号:minor number, 标识同一类型下的不同设备

磁盘类型
  1. 并行:
     IDE:集成磁盘电子接口,Integrated Device Electronics,并行传输数据, 最大的理论传输速率为133MB/s
     SCSI:Small Computer System Interface, UltraSCSI   标准传输速率为320MB/s   常见转速:10000 RPM, 15000RPM

  2. 串口
     SATA:全称是Serial Advanced Technology Attachment(串行高级技术附件,一种基于行业标准的串行硬件驱动器接口)就是我们现在经常所说的SATA; 常见的理论传输速率:300MB/s, 600MB/s, 6Gb/s
     SAS:串行版的SCSI硬盘,最大传输速率:6Gbps
     USB:480MB/s

磁盘分区
  1. 磁盘为什么需要分区?(why)

    如果没有分区,我们要在一个磁盘上安装两个以上的操作系统是无法办到的。因此,每一个分区可以当做独立的文件系统来使用以便于安装多个操作系统,这就是磁盘需要分区的原因。

  2. 如何分区

    一个硬盘最多可以有4个(主+扩展)分区,其中,扩展分区只能有一个,分区的形式只能有两种:
                                     P+P+P+P  
                                     P+P+P+E
     //P表示主分区,E表示扩展分区(扩展分区保存的是磁盘的二级分区表,它指向具体的逻辑分区)

  3. MBR

    引导扇区在每个分区里都存在,但我们常说的主引导扇区是硬盘的第一物理扇区。它位于磁盘的0磁头0柱面1扇区且由两个部分组成:主引导记录MBR+硬盘分区表DPT,其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。
     在总共512字节的主引导扇区里其中MBR占446个字节(偏移0– 偏移1BDH),DPT占64个字节(偏移1BEH–偏移1FDH),最后两个字节“55,AA”(偏移1FEH偏移1FFH)是分区的结束标志,称为“魔数(MagicNumber)”,表示当前分区是否可引导(5A表示可引导)。

  4. 磁盘分区管理工具

    命令名称:fdisk
     命令所在路径:/sbin/fdisk
     执行权限:root
     功能描述:磁盘分区相关操作,最多支持15个分区
     语法:fdisk [option] [DEVICE]
     常用选项:
                 -l:查看当前磁盘分区的详细情况
                 p: print, 显示已有分区;
                 n: new, 创建
                 d: delete, 删除
                 w: write, 写入磁盘并退出
                 q: quit, 放弃更新并退出
                 m: 获取帮助
                 l: 列表所分区id
                 t: 调整分区id
     查看内核是否已经识别新的分区:
             # cat /proc/partations
     通知内核重新读取硬盘分区表:
             partx -a /dev/DEVICE
                 -n M:N
     kpartx -a /dev/DEVICE
                 -f: force
     CentOS 5: 使用partprobe
                 partprobe [/dev/DEVICE]

Linux文件系统管理

  1. 文件系统类型
       1. minix:是Minix操作系统使用的文件系统,是Linux最先使用的文件系统。它有许多缺点:分区只能小于64MB,只支持短文件名,单一的时间戳,等等。在软盘和动态磁盘领域仍然有用。
       2. ext:是对Minix的扩展。已完全被ext2取代,内核最终将不会支持它。
       3. ext2 :是Linux使用的,性能很好的文件系统,用于固定文件系统和可活动文件系统。它是作为ext文件系统的扩展而设计的。ext2在Linux所支持的文件系统中,提供最好的性能(在速度和CPU使用方面),简短的说,ext2是Linux的主要文件系统。
       4. ext3 :是对ext2增加日志功能后的扩展。是RHEL5中默认使用的文件系统类型。它向前、向后兼容ext2,意为ext2不用丢失数据和格式化就可以转换为ext3,ext3也可以转换为ext2 而不用丢失数据(只要重新安装该分区就行了),强烈推荐使用这种文件系统。
       5. ext4:为第4代扩展文件系统,是RHEL6中默认使用的文件系统类型,属于典型的日志型文件系统。其特点是保持有磁盘存取记录的日志数据,便于恢复,性能和稳定性更加出色。
       6. ReiserFS/JFS:仍然在完善的带日志文件系统,特别适合小文件的文件系统
        7. ISO9660文件系统:该文件系统中光盘所使用的标准文件系统,Linux对该文件系统也有很好的支持,不仅能读取光盘和光盘ISO映像文件,而且还支持在Linux环境中刻录光盘。
        8. NFS文件系统:NFS即网络文件系统,用于在UNIX系统间通过网络进行文件共享,用户可将网络中NFS服务器提供的共享目录挂载到本地的文件目录中,从而实现操作和访问NFS文件系统中的内容。
        9. swap文件系统:swap文件系统用于Linux的交换分区。在Linux中,使用整个交换分区来提供虚拟内存,其分区大小一般应是系统物理内存的2倍,在安装Linux操作系统时,就应创建交换分区, 它是Linux正常运行所必需的,其类型必须是swap,交换分区由操作系统自行管理。
          10. btrfs:由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshots of snapshots),内建磁盘阵列(RAID)支持,支持子卷(Subvolumes)的概念,允许在线调整文件系统大小。

tips:根据其是否支持”journal”功能可以分为:

日志型文件系统: ext3, ext4, xfs, …
     非日志型文件系统: ext2, vfat
 什么是日志呢?
 元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是关于数据的数据日志文件是用于记录系统操作事件的记录文件或文件集合
 当数据存储完成后,日志需要挪动到元数据区,当数据没有存储完,会被记录到日志中,检索排故时只需检测日志区就可以
  大部分文件系统都是在内核中实现的

2. 文件系统的组成部分

文件系统是LINUX系统的心脏部分,提供了层次结构的目录和文件。文件系统将磁盘空间划分为每1024个字节一组,称为块(block)。编号从0到整个磁盘的最大块数。一个磁盘分成一个或多个分区,每个分区可以包含一个文件系统,一个分区分为三部分:

inode.png

超级块, 文件系统中第一块被称为超级块。这个块存放文件系统本身的结构信息,比如每个区域的大小,未被使用的磁盘块的信息。
 inode, 超级块的下一个部分就是inode表,文件系统中的每个文件在该表中都对应一个inode。inode是固定长度的记录项,它包含有关文件的大部分信息。inode是指在许多“类Unix文件系统”中的一种数据结构。每个inode保存了文件系统中的一个文件系统对象(包括文件、目录、设备文件、socket、管道, 等等)的元信息数据,但不包括数据内容或者文件名。 文件系统创建(格式化)时,就把存储区域分为两大连续的存储区域。一个用来保存文件系统对象的元信息数据,这是由inode组成的表,每个inode默认是256字节或者128字节。另一个用来保存“文件系统对象”的内容数据,划分为512字节的扇区,以及由8个扇区组成的4K字节的块。块是读写时的基本单位。一个文件系统的inode的总数是固定的。这限制了该文件系统所能存储的文件系统对象的总数目。典型的实现下,所有inode占用了文件系统1%左右的存储容量。
 数据区, 文件的内容保存在这个区域上,磁盘上所有块的大小都一样,如果文件包含了超过一个块的内容,则文件内容会存放在多个磁盘块中,并把磁盘块的分配情况记录在文件的i节点中的磁盘序列表中。

  1. 文件系统管理工具

  1. # mkfs.FS_TYPE /dev/DEVICE

  2. # mkfs -t FS_TYPE /dev/DEVICE
         -L ‘LABEL’: 设定卷标, 有了卷标就可以应用卷标而不是分区盘符
         -b  如果不用则文件系统将会占用全部的空间
          example:
          mkfs.ext4 /dev/sda#    在sda#上格式化创建ext4文件系统

  3. mke2fs:ext系列文件系统专用管理工具
         -t {ext2|ext3|ext4}
         -b {1024|2048|4096}
         -L ‘LABEL’
         -j: 相当于 -t ext3
             mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
         -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小;
         -N #:为数据空间创建个多少个inode;
         -m #: 为管理人员预留的空间占据的百分比;
         -O FEATURE[,…]:启用指定特性
             -O ^FEATURE:关闭指定特性

  4. mkswap:创建交换分区
         mkswap [options] device
             -L ‘LABEL’
         前提:调整其分区的ID为82;

  5. 其它常用工具:
         blkid:块设备属性信息查看
         ….blkid [OPTION]… [DEVICE]
             ……-U UUID: 根据指定的UUID来查找对应的设备
             ……-L LABEL:根据指定的LABEL来查找对应的设备
             e2label:管理ext系列文件系统的LABEL
             ….# e2label DEVICE [LABEL]
             tune2fs:重新设定ext系列文件系统可调整参数的值
         ……-l:查看指定文件系统超级块信息;super block
         ……-L ‘LABEL’:修改卷标
         ……-m #:修预留给管理员的空间百分比
         ……-j: 将ext2升级为ext3
         ……-O: 文件系统属性启用或禁用
         …..-o: 调整文件系统的默认挂载选项
         …..-U UUID: 修改UUID号;
     dumpe2fs:文件系统的组织结构信息
         ……-h:查看超级块信息,不加-h则显示文件系统的组织结构信息

  6. 文件系统检测
         fsck: File System CheCk
         fsck.FS_TYPE
         fsck -t FS_TYPE
             -a: 自动修复错误(自动修复可能会有问题)
             -r: 交互式修复错误
             Note: FS_TYPE一定要与分区上已经文件类型相同;
     e2fsck:ext系列文件专用的检测修复工具
         -y:自动回答为yes;  
         -f:强制修复;

文件系统挂载

将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载,解除此关联关系的过程称之为卸载

  1. 挂载方法:mount DEVICE MOUNT_POINT

    mount:通过查看/etc/mtab文件显示当前系统已挂载的所有设备
         mount [-fnrsvw] [-t vfstype] [-o options] device dir
         – device:指明要挂载的设备;
                 (1) 设备文件:例如/dev/sda5
                 (2) 卷标:-L ‘LABEL’, 例如 -L ‘MYDATA’
                 (3) UUID, -U ‘UUID’:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e’
                 (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
         – dir:挂载点
                 事先存在;建议使用空目录;
                 进程正在使用中的设备无法被卸载;
         – 常用命令选项
         -t vsftype:指定要挂载的设备上的文件系统类型;
                         -r: readonly,只读挂载;
                         -w: read and write, 读写挂载;
                         -n: 不更新/etc/mtab;  
                         -a:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
                         -L ‘LABEL’: 以卷标指定挂载设备;
                         -U ‘UUID’: 以UUID指定要挂载的设备;
                         -B, –bind: 绑定目录到另一个目录上;
         注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts
         -o options:(挂载文件系统的选项)
                 async:异步模式;
                 CoW:Copy on Write写时复制:在内存中处理数据时,不直接改变数据,而是将处理后的数据另外复制至另一处空间中,并把原数据地址指向处理后的数据。
                sync:同步模式;
                 atime/noatime:包含目录和文件;
                 diratime/nodiratime:目录的访问时间戳
                 auto/noauto:是否支持自动挂载
                 exec/noexec:是否支持将文件系统上应用程序运行为进程
                 dev/nodev:是否支持在此文件系统上使用设备文件;
                 suid/nosuid:suid权限
                 remount:重新挂载
                 ro:
                 rw:
                 user/nouser:是否允许普通用户挂载此设备
                 acl:启用此文件系统上的acl功能
         – 注意:上述选项可多个同时使用,彼此使用逗号分隔;
                       默认挂载选项:defaults(rw, suid, dev, exec, auto, nouser, and async)

  2. 卸载方法

    # umount DEVICE
         # umount MOUNT_POINT
         查看正在访问指定文件系统的进程:
         # fuser -v MOUNT_POINT
         终止所有在正访问指定的文件系统的进程:
         # fuser -km MOUNT_POINT

  3. 挂载交换分区

    启用:swapon
             swapon [OPTION]… [DEVICE]
                 -a:激活所有的交换分区;
                 -p PRIORITY:指定优先级;
         禁用:swapoff [OPTION]… [DEVICE]

  4. 内存空间使用状态

    free [OPTION]
             -m: 以MB为单位
             -g: 以GB为单位
             LINUX内存管理策略:对于重要的应用LINUX会尽量把这些进程的数据缓存至内存中
     total  used(包含了正常使用的,也有buffers和cached的)
      free shared buffers  cached,used-buffers-cached表示真正剩余的内存空间

  5. 文件系统空间占用等信息的查看工具

    df:  
             -h: human-readable
             -i:inodes instead of blocks
             -P: 以Posix兼容的格式输出;

  6. 查看某目录总体空间占用状态

    du:(disk usage)
             du [OPTION]… DIR
                 -h: human-readable
                 -s: summary

  7. 文件系统的配置文件

    文件挂载的配置文件:/etc/fstab,文件中每行定义一个要挂载的文件系统,包含了要挂载的设备或伪文件系统 、挂载点、文件系统类型 、挂载选项 、转储频率 、自检次序。

[root@localhost ~]# cat /ect/fstab
[root@localhost ~]# cat /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Mar 7 14:55:31 2016
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=64678c15-3878-490a-9a0b-80751a1f5bc9 / ext4 defaults 1 1
UUID=fa1d8b52-e334-412a-b3aa-1790bb95f425 /boot ext4 defaults 1 2
UUID=83d36596-8312-4ee6-aac7-db41374f1ad1 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
  • 要挂载的设备或伪文件系统
     可以是:设备文件、LABEL(LABEL=”“)、UUID(UUID=”“)或者是伪文件系统名称(proc, sysfs)

    • 挂载点

    • 文件系统类型

    • 挂载选项:-
       defaults(使用默认挂载选项),也可以使用多个挂载选项,并用逗号隔开(如defaults,acl)

  • 转储频率:
     0:不做备份
     1:每天转储
     2:每隔一天转储
     指的是我们多长时间备份一次,一般不会使用了,大多数都为0,主要使用dump命令来实现,一般备份都会使用专门的备份工具,这种机制一般很少用

  • 自检次序:
     0:不自检
     1:首先自检;一般只有rootfs才用1;
     2 :两个文件系统都为2表示同时进行自检
     tip:对于我们自己指定的文件系统的一般不进行自动自检,有可能需要开机手动修复一些文件,自检有可能会删除一些重要数据
     swap的挂载点就叫swap ,swap的激活是通过swapon,而不是通过mount

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

评论列表(1条)

  • stanley
    stanley 2016-04-05 22:56

    已置顶,同时欢迎加入免检一族。
    这好的文章一定要写标签增加收录。