Linux磁盘管理

                         Linux磁盘管理

磁盘管理:

 本章内容

   磁盘结构

   分区类型

   管理分区

   管理文件系统

   挂在设备

   管理虚拟内存

 硬盘接口类型:

     并行:IDESCSI

     串口:SATASASUSB

     rpmrotations per minute

 设备文件:

磁盘设备的设备文件命名:/dev/DEV_FILE

IDE/dev/hdX 其中“X”可以为abcd等字母;

SCSISATASASUSB/dev/sdX 其中“X”可以为abcd等字母;

分区:

    表示分区时,以硬盘设备的文件名作为基础,在后面添加该分区对应的数字序号即可;例如:第一个IDE硬盘中的第一个分区表示为“hda1”第二个表示为“hda2”,第二个SCSI硬盘中的第1个分区表示为“sdb1”第五个表示为“sdb5”。由于硬盘中的主分区数目只有4个,因此主分区和扩展分区的序号就限制在了“1~4”之间,而逻辑分区的序号将始终从5开始。

 硬盘存储术语:

     head:磁头;

     track:磁道;

     cylinder:柱面;

     secotr:扇区,512bytes

 使用分区空间:

设备识别

设备分区

重建文件系统

标记文件系统

/etc/fstab文件中创建条目

挂在新的文件系统

 磁盘分区:

为什么要分区?

优化I/O性能

实现磁盘空间配额限制

提高修复速度

隔离系统和程序

安装多个OS

分区:

两种分区方式:MBR  GPT

MBR :使用32位表示扇区数,分区不超过2T

MBR扇区,512个字节,其中446个字节为“boot loader64个字节为“分区表”2个字节为“55AA”其中分区表中表示为16个字节为一个分区;

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

GPT:使用64位表示扇区数,支持128个分区,分区支持8Z512byte/block64Z4096byte/block

 使用128UUID表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位;GPT分区必须使用UEFI硬件支持才可以;

 管理分区:

blkid命令:

    列出所有块设备;使用此命令也可以查看设备的UUID号;

 例:

  [root@centos7 Desktop]# blkid /dev/sda1

  /dev/sda1: UUID="fe32016e-a798-4b03-91a1-55adfd9a4355" TYPE="xfs"

  [root@centos7 Desktop]#  

创建分区使用:

  fdisk创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15个分区;

  gdisk创建GPT分区,最多可以创建128个主分区;

  parted高级分区工具(创建、复制、调整大小等)

  partprobe命令:重新设置内存中的内核分区表,可以结合lsblk命令;

分区工具:

fdisk  /dev/sdb

gdisk  /dev/sdb

Command action

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition

   g   create a new empty GPT partition table

   G   create an IRIX (SGI) partition table

   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)  

查看当前系统分区表:

 查看内核是否已经识别新的分区:

 查看虚拟文件系统 /proc/partitions

 lsblk命令

 示例:

 [root@centos7 Desktop]# cat /proc/partitions

 [root@centos7 Desktop]# lsblk


同步分区表:

通知内核重新读取硬盘分区表

contos6版本

新增分区:

partx  -a  -n M:N /dev/device

kpartx  -a  /dev/devcie  -f:force

删除分区:

partx  -a  -n M:N  /dev/device

centos57版本

partprobe

文件系统的类型:

Linux文件系统:ext2ext3ext4xfsbtrfsjfsswap

swap:交换分区

光盘:iso9660

Windowsfat32ntfs

网络文件系统:nfscifs

集群文件系统:gfs2ocfs2

分布式文件系统:ceph moosefs mogilefs glusterfs lustre

raw:未经处理或者未经格式化产生的文件系统;

 文件系统分类:

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

日志型文件系统:ext3ext4xfs…….

非日志型文件系统:ext2vfat

文件系统的组成部分:

内核中的模块ext4xfsvfat

用户空间的管理工具:mkfs

Linux的虚拟文件系统:vfs

查看当前系统支持的文件系统:

cat /proc/filesystems

 创建文件系统:

mkfs命令:

mkfs  -t 文件系统类型  分区设备

示例:

mkfs  -t ext4  /dev/sdb1 = mkfs.ext4  /dev/sdb1

创建ext文件系统

mke2fsext系列文件系统专用管理工具

   -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#:默认5%,为管理员预留空间占总空间的百分比;

   -O:启用指定特性

   -O:关闭指定特性

 文件系统标签

blkid命令:块设备属性信息查看

blkid  [options]  [device]

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

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

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

        e2label  DEVICE [LABEL]

        示例:

        [root@centos7 Desktop]# e2label /dev/sdb1 /dev/sdb1

        [root@centos7 Desktop]# tune2fs -l /dev/sdb1

        tune2fs 1.42.9 (28-Dec-2013)

        Filesystem volume name:   /dev/sdb1

 findfs命令:查找分区

       findfs  [options] LABEL=<label>

       findfs  [options] UUID=<uuid>

       示例:

       [root@centos7 Desktop]# findfs LABEL=/dev/sdb1

       /dev/sdb1

       [root@centos7 Desktop]# findfs UUID=2bb4030e-68e8-4640-a3ac-62b98c029967

       /dev/sda3

       [root@centos7 Desktop]#

 tune2fs命令:重新设定ext系列文件系统可调参数的值;

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

            -L:‘LABEL:修改卷标;

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

            -j:将ext2升级为ext3

            -O:文件属性启用或禁用,-O ^has_joural(取消)

            -o:调整文件系统的默认挂载选项,-o ^acl(取消)

            -UUUID:修改UUID号;

       dumpe2fs命令:

             -h:查看超级块信息(分组信息),分区用分区管理;

 文件系统检测和修复:

       常发生于死机或者非正常关机之后;

       挂载为文件系统标记为dirty”;

       fsckfile system check 检测修复文件系统

       fsck.FS_TYPE

       fsck  -t  FS_TYPE

       -a:自动修复错误;

       -r:交互式修复错误;

       -f:强行检测修复分区;

       示例:

      [root@centos7 testdir]#fsck.ext4 -f /dev/sdb1

      e2fsck 1.42.9 (28-Dec-2013)

      Pass 1: Checking inodes, blocks, and sizes

      Pass 2: Checking directory structure

      Pass 3: Checking directory connectivity

      Pass 4: Checking reference counts

      Pass 5: Checking group summary information

      /dev/sdb1: 11/655360 files (0.0% non-contiguous), 83134/2621440 blocks

      [root@centos7 testdir]#

e2fsck命令:ext系列文件专用的检测修复工具

        -y:自动回答yes

        -f:强制修复

 mount挂载:

      挂载:将额外的文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录作为其他文件访问入口的行为;

      卸载:为分区解除与目录的挂载关系;

      把设备关联挂载点:

      mount  /DEVICE   /DIR

      卸载时,可以使用设备名或挂载点

      umount  /DEVICE

      umount  /DIR

注意:挂载点下原文件在挂载完成后被临时隐藏

      挂载点的目录一般为空

      mount:通过查看/etc/mtab文件显示当前已挂载的所有设备;

 mount常用命令选项:

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

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

              -r:只读挂载;

              -w:读写挂载;

              -n:不更新/etc/mtab

              -a:自动挂载所有支持自动挂载的设备;

              -LLABEL以卷标名挂载设备;

              -U:以uuid指定要挂载的设备;

              -B–bind绑定目录到另一个目录上;

       -o options挂载文件系统的选项,多个选项使用逗号分隔

               async:异步模式;

                sync:同步模式;

               atime/noatime:包含目录和文件;

               diratime/nodiratiome:目录的访问时间戳;

               auot/noauto:是否支持自定挂载 ,是否支持-a选项;

               exec/noexec:是否支持在此文件系统上使用设备文件;

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

               suid/nosuid:是否支持suidsgid权限;

               remount:重新挂载;

               ro:只读;

               rw:读写;

               user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载;

               acl:启用此文件系统上的acl功能;

 mount的卸载命令:

            查看挂载情况:

             findmnt命令

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

             lsof命令

             fuser命令

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

             fuser  -km MOUNT_POINT

            卸载:

             umount

 文件挂载配置文件:

        /etc/fstab 配置文件中每行定义一个要挂载的文件系统;

          要挂载的设备或伪文件系统

          挂载点

          文件系统类型

          挂载选项

          转储频率

          自检次序

      挂载选项:defaults

      转储频率:0:不做备份

                1:每天转储

                2:每个一天转储

      自检次序:0:不自检

                1:首先自检,一般只有rootfs才用1

 swap处理交换文件和分区

       交换分区时系统RAM的补充

       基本设置包括:

           创建交换分区或者文件

           使用mkswap命令在指定的分区上创建交换文件系统;

           /etc/fstab文件中添加适当的条目

           使用swapon -a激活交换空间

       挂载交换分区:

           启用:swapon

                swapon [option] ……..[DEVICE]

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

                         -p:指定优先级

                         /etc/fstab:pri=value

           禁用:swapoff  [DEVICE]

swap的优先级:

      用户可以给某个swap指定一个032767的优先级

      如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定的优先级的swap,会给这个优先级减一。

     先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级是正整数永远高于核心缺省指定的优先级。

       示例:

       [root@centos7 testdir]#mkswap /dev/sdb6

       Setting up swapspace version 1, size = 2097148 KiB

       no label, UUID=18794626-9bfd-4af8-8f46-bad8fc3067db

       [root@centos7 testdir]#swapon /dev/sdb6

       [root@centos7 testdir]#cat /proc/swaps

       Filename    Type  Size Used Priority

       /dev/sda3                               partition 1023996 0 -1

       /dev/sdb2                               partition 2097148 0 100

       /dev/sdb6                               partition 2097148 0 -2

       [root@centos7 testdir]#swapoff /dev/sdb6

       [root@centos7 testdir]#swapon -p 200 /dev/sdb6

       [root@centos7 testdir]#cat /proc/swaps

       Filename    Type  Size Used Priority

       /dev/sda3                               partition 1023996 0 -1

       /dev/sdb2                               partition 2097148 0 100

       /dev/sdb6                               partition 2097148 0 200

       [root@centos7 testdir]#vim /etc/fstab

        /dev/sdb6       swap          swap    defaults,pri=200   0 0  

 使用光盘:

       eject命令卸载或弹出光盘;

       创建ISO文件

         cp  /dev/cdrom  /root/centos.iso

         mkisofs   -r  -o  /root/etc.iso   /etc/

        刻录光盘:

          wodim  -v  -eject  centos.iso

 常见工具:

内存空间使用状态:

     free [option]

           -m:以MB为单位

           -g:以GB为单位

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

      df  [option] ….[FILE]

           -H:以M为单位显示磁盘空间大小;

           -T:文件系统的类型;

           -hhuman-readable 人类易读格式显示;

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

        du [option]  [DIR]

             -hhuman-readable 人类易读格式显示;

             -a:统计磁盘占用时包括文件,而不仅仅时只统计目录;

             -s:只统计目录的总大小;

         示例:

         [root@centos7 testdir]#du -sh /etc

         31M /etc

         [root@centos7 testdir]#

 dd命令:

      dd命令:comvert  and copy afile

      用法:dd  if=/PATH/FROM/SRC of=/PATH/TO/DEST  bs=# count=#

      if=file 从所命名的文件读取而不是从标准输出

      of=file 写到所命名的文件而不是到标准输出;

      bs=size:指定块大小;

      count=n:只拷贝n个记录;

      skip=blocks :从开头忽略blockibs大小的块;

      seek=blocks :从开头忽略blockibs大小的块;

磁盘拷贝:

     dd if=/dev/sda of=/dev/sdb

备份MBR

     dd if=/dev/sda  of=/tmp/mbr.bak  bs=512 count=1

测试硬盘的读写速度:

dd if=/dev/zero  of=/root/file1 bs=1024 count=1000000

通过上述命令输出的执行时间,可以计算出测试硬盘的读写速度;

修复硬盘:

dd if=/dev/sda  of=/dev/sda

当硬盘较长时间(比如12年)放置未使用,磁盘上会产生消磁,当磁头读到这些区域时会遇到困难,并可能导致I/O错误,当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废,上面的命令有可能使这些数据起死回生,且这个过程是安全、高效的。

 

 

 

 

 

 

 

 

    

 

 

 

     

 

 

 

 

 

 

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

(0)
zhengyibozhengyibo
上一篇 2016-09-01
下一篇 2016-09-02

相关推荐

  • Google 开源技术protobuf

    1.  Protobuf简介        protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行…

    系统运维 2015-04-04
  • 第三周

    第三周 1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@node1 ~]# who -q | sed -n ‘1p’ centos root fedora redhat mint 2.取出最后登录到当前系统的用户的相关信息。 [root@node1 ~]# who -a | tail -1 mint +…

    Linux干货 2017-07-25
  • Linux Network Manager

    Linux Network Manager Network简述 Switch,Router简述 Linux Network 配置方法 ifcfg家族命令 ip家族命令 rhel7 nmcli命令 配置文件 Network简述 Network是什么? 网络是将分布在地理位置不同的计算机通过物理线路的连接,在网络软件的管理下,实现数据通信的过程。&nb…

    Linux干货 2016-04-05
  • CentOS系统启动流程

    Linux系统(Centos 5、6)启动流程 一、POST加电自检 Power-On-Self-Test 按下电源键以后,系统调用存储在ROM中的BIOS和存储在RAM中的CMOS(用来保存各项参数的设定)完成系统硬件状态的检查,如果硬件有问题则提示用户问题严重无法开机的会发出警报声音;硬件自检完成后进入下一步。 二、Boot Sequence与…

    Linux干货 2016-11-24
  • 优云软件:双态运维下,老司机是怎么玩CMDB的?

    行业内有个科技公司,CMDB前后建设12年,重构了N次,一言不合就重构,我深深的被这种屡拆屡战,初心不改精神所折服。我真心想问下做CMDB的兄弟,各位是怎么熬过来的?请不要回避,其实我们都曾被这样虐过! 近几年我司承建国内很多传统行业的CMDB项目,坦白的说,随着互联网+热潮的冲击,因很多传统企业也慢慢的在转变业务,把很多传统型的业务互联网化,或者开辟新型业…

    2016-08-05
  • 开发团队的效率

    我之前写过一篇叫《加班与效率》的文章,从概念上说了一些我对“效率”的认识,但是那篇文章趋于概念化,对于一些没有经历过这样的环境的同学来说,可能会觉得太抽象了。很早以前就想写一篇更具体一点的,可执行的文章与《加班与效率》这篇文章相辉映,并再把我两年前在杭州QCon上的那个“鼓吹工程师文化”的《建一支强大的小团队》(新浪微盘)的观点再加强一下。 但是我遇到了一些…

    Linux干货 2016-08-15