Linux系统磁盘管理

  • 磁盘管理

      设备

          设备文件

               关联至一个设备驱动程序,进而能够跟与之对应的硬件设备进行通信(设备的访问入口) 一般存放在/dev/下

         image.png

          设备类型

                 块设备(block):以“块”为单位,随机访问    如硬盘

                 image.png

                字符设备(char):以“字符”为单位,顺序访问   如键盘

                 image.png

          设备号

扫描二维码关注公众号,回复: 37171 查看本文章

                主设备号(major number):标识设备类型

                次设备号(minor number):标识同一类型的不同设备

                image.png

      硬盘

           分类

               机械硬盘(HDD,Hard Disk Drive):读写速度慢;数据易恢复

               固态硬盘(SSD,Solid State Drive):读写速度快;数据不易恢复

         接口类型

               并行: IDE(133MB/s)、SCSI(640MB/s)

               串行:SATA(6Gbps)、SAS(6Gbps)

        硬盘存储术语

            磁道:track            

            柱面:cylinder

            磁头:head

            扇区:sector(512bytes)

       CHS和LBA

       CHS

            采用24bit位寻址

            其中前10位表示cylinder,中间8位表示head,后6位表示sector

            最大寻址8GB

        LBA 

            采用48bit位寻址

            LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址

            最大寻址空间128PB

     磁盘设备的设备文件名

           Centos5及之前系统命名方式不同

               IDE接口:

               不同磁盘标识:a-z,aa,ab...

                               /dev/hda第一块硬盘,/dev/hdb第二块硬盘,...

               同一设备上的不同分区: 

                             /dev/hda1第一块硬盘的第一个分区,/dev/hda2第二块硬盘的第二个分区

                     image.png

         SCSI和SATA接口:/dev/sda,/dev/sdb,...

                                     /dev/sda1,/dev/sda2,...

                     image.png

           Centos6

                     /dev/sda,/dev/sdb,...

                     /dev/sda1,/dev/sdb1,...

              注意:新增的设备可能会使用sda,导致设备名称不稳定的事件发生

           Centos7   

                     /dev/sda,/dev/sdb,...

                     /dev/sda1,/dev/sdb1,...

       虚拟磁盘:/dev/vd

  • 分区

    为什么分区

         优化I/O性能;实现磁盘空间配额管理

         提高修复速度;隔离系统和程序

         安装多个OS;采用不同文件系统

    分区方式:MBR和GPT

         MBR(Master Boot Record)  1982年

             使用32位表示扇区,分区不超过2T;按柱面分

              0磁道0扇区:

                       446bytes:boot loader

                       64bytes:分区表

                             16bytes:标识一个分区(16bytesX4=64bytes有四个主分区的原因)

                       2bytes:55AA   标识位   下图为sda分区的前512bytes   55 aa为标识位

                          注意:55 aa标识位损坏会导致分区丢失(可删除分区)

           image.png 

            MBR可以分

                      4个主分区;3主分区+1扩展分区(N个逻辑分区)    

         注意:MBR分区表非常重要,以二进制方式在磁盘上存放;一旦丢失或损坏会导致系统无法启动;建议备份分区表

         GPT  GUID(Globals Unique Identifiers) partition table

               使用64位,支持8Z(512Byte/block)64Z(4096Byte/block) 

               使用128位UUID(Universally Unique Identifier)表示磁盘和分区GPT分区表

               自动备份在头和尾两份;UEFI(统一扩展固件接口)标准

               最多分128个分区

  管理分区

      列出块设备

         lsblk  列出所有块设备

         lsblk  /dev/DEVICE  列出指定块设备

      分区高级操作

          parted  支持交互式操作

         parted  /dev/DEVICE mklabel  gpt | msdos  创建指定的分区表或修改分区表类型

          注意:修改分区表类型会导致磁盘上的数据被清除

     image.png

         parted  /dev/DEVICE mkpart primary  1 1000  创建分区默认以M为单位

           注意:大小可能有误差;用不同的软件查看,不同的软件计算容量的算法有区别导致

         parted /dev/DEVICE print  查看分区信息

         parted /dev/DEVICE rm 1  删除指定的分区

         parted  -l 列出所有分区信息

      管理MBR分区

         fdisk 支持交互式操作

      管理GPT分区

        gdisk  支持交互式操作

      查看分区表
        lsblk  查看的是内存

        cat /proc/partitions  查看的是内存

        ll /dev/sd*  查看的是内存

        fdisk -l  查看的是硬盘

      同步(重读)分区表

        centos5,7:partproble  [/dev/DEVICE]

        centos6:partx -a /dev/DEVICE  新增分区使用

                        partx -d --nr #-# /dev/DEVICE  删除分区使用

  • 文件系统

    格式化

         低级格式化:硬件厂商

         高级格式化:创建文件系统

  文件系统概念

       文件系统是操作系统用于明确存储设备或分区上的文件方法和数据结构;即在存储设备上组织文件的方法;操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统

       从系统角度看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。它负责为用户建立文件,存入,读出,修改,转储文件,控制文件存取,安全控制,日志,压缩,加密等

  文件系统类型

      Linux文件系统:ext(Extended file system)系列文件系统,xfs(SGI),btrfs(Oracle),reiserfs,jfs(AIX),swap

      光盘:iso9660

      Windows:NTFS,FAT,FAT32

      Unix:FFS(fast),UFS(unix),JFS2

      网络文件系统:NFS,CIFS

      集群文件系统:GFS2,OCFS2(oracle)

      分布式文件系统:fastdfs,ceph,moosefs,mogilefs,glusterfs,Lustre

      RAW:未经处理或者未经格式化的文件系统

  查看支持的文件系统

     cat /lib/modules/`uname -r`/kernel/fs

     cat /proc/filesystems   

  文件系统分类

       根据其是否支持“journal”功能

            日志型文件系统:ext3,ext4,xfs,...

            非日志型文件系统:ext2,vfat

  文件系统组成部分

    内核中模块:ext4,xfs,vfat

    用户空间管理工具:mkfs.ext4,mkfs.xfs,...

  Linux的虚拟文件系统:VFS(Virtual File System)

     buffer缓冲:当把数据往硬盘中写时会先写到内存的buffer中,过一会系统再写到硬盘上;为了提高写性能

     cache缓存:当从硬盘上读数据时,先把数据读到内存的cache中,再由cache读到内存中;为了提高读性能

  超级块和Inode table

     块block:文件系统分配给文件的最小单位

     指定块大小:大文件使用大块,小文件使用小块

     文件系统以块组方式管理磁盘空间

     超级块:记录块组;存放分区的属性信息

  管理文件系统

     创建文件系统

        mkfs

           mkfs.FS_TYPE /dev/DEVICE

           mkfs -t TYPE /dev/DEVICE

                   -L 'LABEL':设定卷标

        mke2fs  ext系列文件系统专用管理工具

                 -t{ext2|ext3|ext4}:指定文件系统类型

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

                 -L 'LABEL':设定卷标

                 -j:相当于-t ext3

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

                 -i #:为数据空间中每多少个字节创建一个Inode;此大小不应该小于block的大小

                 -N #:指定分区中创建多少个Inode

                 -l:一个Inode记录占用的磁盘空间大小

                 -m #:指定预留给管理员的块数百分比

                 -O FEATURE[,...]:启用指定特性

                 -O ^FEATURE:关闭指定特性

                 -F:强制创建文件系统

     修改文件系统

       tune2fs  修改ext系列文件系统相关可调整参数

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

                 -L 'LABEL':修改卷标

                 -U UUID:修改UUID

                 -j:将ext2升级为ext3

                 -m #:修改预留给管理员的空间百分比

                 -O:文件系统属性启用或禁用;-O ^has_journal

                 -o:调整文件系统默认挂载选项;-o ^acl

                 -C:指定挂载次数

                 -c:指定最大挂载次数

         uuidgen  /dev/DEVICE 生成唯一的UUID

       e2label  管理ext系列文件系统的LABEL

          e2label DEVICE [LABEL]

       xfs_admin  修改xfs文件系统参数

               -L LABEL:修改卷标

               -U UUID:修改UUID

      注意:修复时需事先取消挂载关系;建议卷标指定为挂载点名称,写配置文件用UUID标识设备来确保唯一性

     查看文件系统

         blkid  块设备信息查看

            blkid[OPTION]... [DEVICE]

                -U UUID:根据指定的UUID来查看对应的设备

                -L LABEL:根据指定的LABEL来查看对应的设备

         findfs  查找分区

            finds [options] LABEL=<label>  根据指定的LABEL来查找对应的分区

            finds [options] UUID=<uuid> 根据指定的UUID来查找对应的分区

         dumpe2fs  查看块分组信息

                -h:只显示超级块信息

     检测修复文件系统  

        死机或非正常关机后,挂载文件系统标记为“not clean"时需修复

        fsck  

           fsck.FS_TYPE | fsck -t FS_TYPE

                      -p:自动修复错误

                      -r:交互式修复错误

        e2fsck  ext系列文件系统专用检测修复工具

                -y:自动回答为yes

                -f:强制修复

        xfs_repair  xfs文件系统检测修复工具

        注意:一定不要在挂载状态下修复

  • 挂载

挂载

    将额外文件系统与根文件系统某现存目录建立起关联关系,进而使得此目录做为其它文件系统的访问入口

    mount 把设备关联至挂载点:mount Point

         mount DEVICE MOUNT_POINT

     DEVICE设备                                       MOUNT_POINT挂载点

         设备文件:/dev/sd#                               1、目录得事先存在,建议使用空目录

         卷标:-L 'LABEL'                                     2、目录没有被其它进程使用

         UUID:-U 'UUID'                                    3、如果目录中有文件会被暂时隐藏

        伪文件系统:proc,sysfs,devtmpfs,configfs

    mount [-fnrsvw] [-t vfstype] [-o options] device dir

         -t vsftype:指定要挂载设备上的文件系统类型

         -r:readonly,只读挂载

         -w:read and write,读写挂载

         -n:不更新/etc/mtab,mount不可见;隐藏挂载

             centos7上不隐藏   /etc/mtab-->/proc/self/mounts

         -a:自动挂载所有支持自动挂载的设备(定义了在/etc/fstab中,且挂载选项中有auto功能)

         -L 'LABEL':以卷标指定挂载设备

         -U 'UUID':以UUID指定挂载设备

         -B | --bind:挂载目录

     -o options:

         async  异步模式

         sync  同步模式

         auto/noauto  是否支持自动挂载

         exec/noexec  挂载设备是否可以运行可执行程序

         remount  重新挂载

         ro  只读挂载

         rw  读写挂载

         acl  启用此文件系统上acl功能

         user/nouser  是否允许普通用户挂载此设备,/etc/fstab使用

         dev/nodev  是否支持在此系统上使用设备文件

         suid/nosuid  是否支持SUID和SGID权限

         atime/noatime  包含目录和文件

         diratime/nodiratime  目录访问时间戳

         loop  使用loop设备,把一个文件挂载到目录上 centos7上不用加-o loop直接挂载

         文件挂载到目录上:用文件来模拟分区使用

        mount -o remount,options... /point  读取新的挂载选项

        defaults  相当于:rw,suid,dev,exec,auto,nouser,async

 取消挂载

      umount DEVICE | MOUNT_POINT

 查看

     mount=cat /etc/mtab  显示当前已挂载的所有设备

     cat /proc/mounts  查看内核追踪到的已挂载的所有设备

     findmnt DEVICE | MOUNT_POINT  查看挂载情况

     查看正在访问指定文件系统的进程

         lsof MOUNT_POINT

         fuser -v MOUNT_POINT

     终止所有正在访问指定文件系统的进程

        fuser -km MOUNT_POINT

 挂载相关配置文件

   /etc/mtab  记录当前设备的挂载情况(自动更新记录)

   image.png

   /etc/fstab  永久挂载的文件系统

   image.png   

   格式

       要挂载的设备或伪文件系统    挂载点    文件系统类型   挂载选项    转储频率                     自检次序(开机时查检文件系统完整性)

          设备文件                                                                  defaults       0:不做备份               0:不自检

          LABEL:LABEL=""                                                                       1:每天转储               1:首先自检,一般只有rootfs使用

          UUID:UUID=""                                                                         2:每隔一天转储

          伪文件系统名称:proc,sysfs

  特殊设备的fstab文件格式

       /root/file             /mnt/file        ext4       loop   0   0

       /dev/cdrom        /mnt/cdrom    iso9660      none     0   0

       /dir                      /mnt/dirname    none       bind     0     0

 /etc/fstab文件故障

   1、要挂载的设备或伪文件系统故障;会导致系统无法启动

       解决办法

           修改/etc/fstab文件,把错误的设备修改为正确的;

           或者把最后两项修改为0让系统正常启动后再修改设备名

        注意:centos6上文件系统默认是ro挂载

           需修改文件系统挂载选项为rw:mount -o rw,remount  /

   2、挂载点故障;设备无法挂载,但系统可以正常启动

 挂载外围设备

      光盘

       自动挂载:图形界面/run/media/<user>/<label>

       手工挂载:mount /dev/cdrom /mnt/

   eject 卸载或弹出光盘 找机器  eject -t 弹入

     光盘制作ISO镜像文件:

      cp /dev/cdrom /data/centos7.iso

      dd if=/dev/sr0 of=/data/centos7.iso

      mkisofs -r -o etc.iso /etc/

   centos6 cd1和cd2合并:

     mkdir /centos6

     cp -r /mnt/cdrom/* /centos6/ 

     mkisofs -r -o /data/centos

   没有引导功能,可以当yum源。不能作为启动光盘

   制作光盘合集:wiki.centos.org制作完可以引导

   使用格式:mkdvdiso.sh source /desdfds/DVD.iso 

   刻录光盘

         wodim–v –eject centos.iso

   USB 

   lsusb  查看USB设备是否识别              

      被内核探测为SCSI设备

           /dev/sdaX、/dev/sdbX、或类似的设备文件

       在图形环境中自动挂载

            图标在[计算机]窗口中创建

       挂载在/run/media/<user>/<label>

           手动挂载:mount /dev/sdb1 /mnt

  • 管理虚拟内存

  swap交换分区:系统RAM的补充 

       当内存空间不足时,自动用硬盘空间模拟内存使用;临时解决内存不足情况

        内存:swap=1:2   

             free 显示内存和swap信息;默认以k为单位

                  -m:以M为单位

                  -g:以G为单位,取整

                  -h:转换单位

           swp分区有优先级:0-32767

              值越大越优先;不指定优先级默认会从-1开始递减

         内存增加需添加swap分区

            一、增加物理硬盘来添加swap分区

                  1、分区

                  2、创建文件系统

                  3、挂载

            二、用文件来创建swap分区

                  1、生成要创建swap分区的文件

                  2、创建swap文件系统

                  3、挂载

        swap分区管理

           mkswap  DEVICE | swapfile   创建swap分区文件系统

           swapon  -a:启用所有交换分区

                          -s:查看所有交换分区信息

                          -p | /etc/pre=100: 指定优先级            

            swapoff [options] DEVICE  禁用交换分区

猜你喜欢

转载自blog.51cto.com/10461810/2106170