1.设备文件

1)磁盘存储术语

 head:磁头

 track:磁道

 cylinder: 柱面

 secotr: 扇区,512bytes

 

2)寻址方式

·CHScylinderheadsecotr)称为硬盘的三围

采用24bit位寻址

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

最大寻址空间8GB

因为一个硬盘的磁头数/盘面数为2562^8),一个盘面上有10242^10)个磁道,每个磁道有642^6)个扇区,每个扇区512字节

 256*1024*64*512/1024/1024/1024=8GB   所以一个硬盘大小为8GB

 (64*512*256/1024/1024/1024=8M  一个柱面大小为8MB

 

·LBAlogical block addressing

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

  LBA采用48bit位寻址

  最大寻址空间128PB (空间单位B KB MB GB TB PB EB ZB YB BB NB DB

 

由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

 

3)磁盘分区

为什么分区:

 优化I/O性能

 实现磁盘空间配额限制

 提高修复速度

 隔离系统和程序

 安装多个OS

 采用不同文件系统

 


2.分区方式

1)两种分区方式:MBRMSDOS),GPT

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

512*2^32/1024/1024/1024/1024=2T

如何分区:按柱面

 0磁道0扇区:512bytes

其中:前446bytes: bootloaderGrub)引导分区(先不研究这个)

之后的64bytes:分区表(共有4个)

    16bytes: 标识一个分区

最后2bytes:55AA 标识位,代表分区结束

使用hexdump -C -n 512 -v /dev/sda 查看分区表

磁盘管理——Linux基本命令(14)_第1张图片

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

 

·备份

dd if=/dev/sda of=/dev/sdx bs=1 count=512

wKiom1mgDE_wm5J_AABs_4YSSa4460.png

然后使用hexdumo -C mbr查看分区,就跟sda一样了。

 

·破坏分区,格式化

dd if=/dev/zero of=/dev/sdx bs=1 count=512

wKioL1mgDEKRzRXTAABzly9-bpc864.png

就是将zero复制过去,因此分区就没了。

磁盘管理——Linux基本命令(14)_第2张图片

使用fdisk查看,果然没有了。

使用hexdump -C -n 512 -v /dev/sda 查看分区表也空了。磁盘管理——Linux基本命令(14)_第3张图片


2MBR分区结构磁盘管理——Linux基本命令(14)_第4张图片

扩展分区指向另外一个扇区,那个扇区也有512个字节,前446个字节未使用,后两位为55AA,中间的64个字节存储着扩展分区中的逻辑分区。扩展分区自身存储着第一个EBR的位置,一个EBR只对应一个逻辑分区,第二个分区用来指向下一个EBR的位置,以此类推。因此删除一个逻辑分区,不会影响下一个逻辑分区。

逻辑分区的信息不存在MBR中,使用dd复制的时候不会复制逻辑分区的内容。

磁盘管理——Linux基本命令(14)_第5张图片

磁盘管理——Linux基本命令(14)_第6张图片


3MBRDPT结构

磁盘管理——Linux基本命令(14)_第7张图片

磁盘管理——Linux基本命令(14)_第8张图片

磁盘管理——Linux基本命令(14)_第9张图片

4GPT分区

GPT:GUIDGlobals Unique Identifiers partition table 支持128个分区,使用64位,支持8Z512Byte/block 64Z 4096Byte/block

使用128UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位

UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动

 

GPT分区结构:

(分为4部分)

磁盘管理——Linux基本命令(14)_第10张图片


3.管理分区

1)列出和创建

·列出块设备

方法一:lsblk

磁盘管理——Linux基本命令(14)_第11张图片

以树状结构列出块设备(包括光驱),可以看到每个硬盘的分区,设备号,挂载点,类型

wKioL1mgDEqje1fJAAAXCyM9bN8901.png

也可以指定列出某一块设备某个分区

 

方法二:ls /dev/sd*wKiom1mgDFehz8k5AAAUKjvAtFg461.png

方法三:cat /proc/partitions

磁盘管理——Linux基本命令(14)_第12张图片


·创建分区:

fdisk 创建MBR分区

gdisk 创建GPT分区

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

 

2fdisk分区

fdisk -l /dev/sdX 查看硬盘分区信息

磁盘管理——Linux基本命令(14)_第13张图片

7里面显示的start End是以扇区数为单位


磁盘管理——Linux基本命令(14)_第14张图片

6里面显示的start End是以柱面数为单位

如果两个分区用的同一个柱面,就会显示一段话提示我们,我们管这种模式叫DOS模式。

 

-c  打开或禁用dos模式centos6)

-c=dos  -c=nondos   打开、禁用dos模式(centos7)

磁盘管理——Linux基本命令(14)_第15张图片

本来默认有dos模式的CentOS6在使用-cdos模式就被禁用了磁盘管理——Linux基本命令(14)_第16张图片

本来默认没有dos模式的CentOS7在使用-c=dosdos模式被开启了

  

  -u  切换显示的单位(扇区/柱面)(centos6)

  -u=cylinders  -u=sectors    切换显示的单位(扇区/柱面)(centos7)

 

·fdisk /dev/sdX  进行分区

子命令:

  帮助

    n 建立分区

    d 删除分区

    p 显示分区信息

    t 转换分区类型

    a 将指定分区设置/取消活动分区

    L 查看分区类型

    o 重建分区表

    v 验证分区表,显示剩余没有被分区划分的扇区数量

    g 创建GPT格式的分区(centos7)

    q 退出不保存

    w 退出并保存,不保存,所有的修改都不生效

 

3)使用fdisk进行MBR格式分区

·下面我们来试试分区(此分区默认为MBR格式):

磁盘管理——Linux基本命令(14)_第17张图片

磁盘管理——Linux基本命令(14)_第18张图片

磁盘管理——Linux基本命令(14)_第19张图片

磁盘管理——Linux基本命令(14)_第20张图片

同样的,我们给第三个主分区分5G磁盘管理——Linux基本命令(14)_第21张图片

然后我们分了两个扩展分区

磁盘管理——Linux基本命令(14)_第22张图片

使用p查看分区情况

磁盘管理——Linux基本命令(14)_第23张图片

最后输入w保存分区

磁盘管理——Linux基本命令(14)_第24张图片

查看一下分区,这样就已经分好了。

 

·除了系统盘之外的盘就可以按照上面的方式成功分区了,但是当我们给系统盘sda)分区的时候w保存之后会出现下面的话,说让你重启才能生效。

此时我们如果不方便重启的话,也可以使用命令来同步分区表。磁盘管理——Linux基本命令(14)_第25张图片


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

cat /proc/partations

 

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

Centos6新增分区用

partx -a /dev/DEVICE

kpartx -a /dev/DEVICE -f:force

删除分区用 partx -d --nr M-N /dev/DEVICE

CentOS 57: 新增或删除均使用partprobe[/dev/DEVICE]


磁盘管理——Linux基本命令(14)_第26张图片

6中我们在系统盘中新增了几个分区,但是保存之后并没有显示,于是我们使用partx -a /dev/sda 就有新增分区了。

磁盘管理——Linux基本命令(14)_第27张图片

同理CentOs7或者5里面使用partprobe /dev/sda 就可以了。

 

4)使用fdisk进行GPT格式分区

CentOS7

我们使用分区命令fdisk /dev/sdb磁盘管理——Linux基本命令(14)_第28张图片

输入g,然后保存,查看一下发现已经转化成了GTP分区格式。磁盘管理——Linux基本命令(14)_第29张图片

然后我们就可以开始分区了。磁盘管理——Linux基本命令(14)_第30张图片

MBR不同的是,GTP显示的是分区的编号(共128个分区)wKiom1mgEIKRp4dvAACtaqYLbgs048.png

先分一个2G大小。查看一下磁盘管理——Linux基本命令(14)_第31张图片

然后我们再分一个500M磁盘管理——Linux基本命令(14)_第32张图片

保存并退出。

磁盘管理——Linux基本命令(14)_第33张图片

sdb分区成功。

 

使用hexdump -C -n 512 -v /dev/sdb查看分区表wKioL1mgEHaibzZ8AADdaoRW5H4591.png

跟我们之前讲过的一样,只有最后两位是55aa,模拟出一个MBR,表示这是一个分过区的硬盘。

 

·fdisk也可以使用echo导入fdisk进行非交互式分区,命令如下:

echo -e "n\np\n1\n\n+1G\nw\n" |fdisk /dev/sdb 

代表给第一个分区分1G的大小。

 

5parted

我们一般不推荐使用fdisk来进行GTP分区,可以使用parted更方便的分区。

parted的操作都是实时生效的,小心使用

 用法:parted [选项]... [设备 [命令 [参数]...]...]

parted /dev/sdb mklabel gpt|msdos

parted /dev/sdb print

parted /dev/sdb mkpart primary 1 200 (默认M

parted /dev/sdb rm 1

parted -l

 

磁盘管理——Linux基本命令(14)_第34张图片

输入过后是一个交互式界面,等待你输入

磁盘管理——Linux基本命令(14)_第35张图片

可以输入help查看一下帮助文档,这个帮助文档只是一个大目录,如果想看某个具体的内容,继续使用help

如果想看mklabel的帮助,就输入help mklabel

磁盘管理——Linux基本命令(14)_第36张图片

根据帮助文档可以知道想要使用GPT格式分区,就输入mklabel gpt

磁盘管理——Linux基本命令(14)_第37张图片

如图,变成了GPT格式了。

传统的分区叫msdos分区,我们先使用msdos分区创建。磁盘管理——Linux基本命令(14)_第38张图片

使用help查看帮助文档磁盘管理——Linux基本命令(14)_第39张图片

看到新建分区命令。

wKiom1mgFsyTg02iAAArx9GCfaM085.png

只输入mkpart,会一步一步提示磁盘管理——Linux基本命令(14)_第40张图片

按照提示分区之后(默认单位为M),查看一下,已经分好了。磁盘管理——Linux基本命令(14)_第41张图片

删除命令为rm,如图,删除成功。

一般我们用fdisk分区MSDOS格式,我们现在用parted来分gpt格式。

首先还是使用mklabel gpt转化成gpt分区磁盘管理——Linux基本命令(14)_第42张图片

然后我们创建分区(在这里不会问你是主分区扩展分区,因为gpt格式没有主分区扩展分区一说)磁盘管理——Linux基本命令(14)_第43张图片

如图,创建成功

 

6gdisk

gdisk是类fdiskGPT分区工具,与fdisk类似,只能分GPT格式。

磁盘管理——Linux基本命令(14)_第44张图片

输入?查看帮助文档

磁盘管理——Linux基本命令(14)_第45张图片

o是创建一个GTP格式磁盘管理——Linux基本命令(14)_第46张图片

如图,创建成功

查询帮助文档,新建命令为n

磁盘管理——Linux基本命令(14)_第47张图片

让我们新建一个

看,这里类似于fdisk磁盘管理——Linux基本命令(14)_第48张图片

这个也不是实时生效的,同样使用w保存磁盘管理——Linux基本命令(14)_第49张图片

输入y确认保存。分区完成。

 


4.文件系统

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

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

1)文件系统类型

 查看支持的文件系统:在/lib/modules/`uname -r`/kernel/fs 目录下

 

Linux文件系统:ext2(Extended file system), ext3, ext4, xfsSGI, btrfsOracle, reiserfs,jfsAIX, swap

 光盘:iso9660

 WindowsFAT32,exFAT,NTFS

 Unix: FFSfast,UFSunix,JFS2

 网络文件系统:NFS,CIFS

 集群文件系统:GFS2,OCFS2oracle

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

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

 

2)文件系统分类

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

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

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

文件系统的组成部分:

内核中的模块:ext4,xfs,vfat

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

Linux的虚拟文件系统:VFS

磁盘管理——Linux基本命令(14)_第50张图片

查看当前支持的文件系统:cat /proc/filesystems

 

3)创建文件系统(格式化)

每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,创建文件系统,以成为操作系统能够利用的文件系统格式。

linux的文件格式为Ext2/Ext3,Ext4windows 操作系统为vfat或者NTFS

 

·mkfs命令(有两种方法)

mkfs.FS_TYPE /dev/DEVICE

支持格式:ext4  xfs  btrfs  vfat

 

mkfs -t FS_TYPE /dev/DEVICE

-L 'LABEL': 设定卷标

 

方法一:

磁盘管理——Linux基本命令(14)_第51张图片

使用blkid可以查看文件系统信息磁盘管理——Linux基本命令(14)_第52张图片

 

方法二:

磁盘管理——Linux基本命令(14)_第53张图片

再使用blkid查看,果然变成ext3类型

wKioL1mgGU2hMQG1AAFE4LqJLdA621.png

同样的,也可以改成xfs格式磁盘管理——Linux基本命令(14)_第54张图片

4)创建ext文件系统

mkfs可以创建多种系统类型,而使用mke2fs专门用于ext系列文件系统管理。只能创建ext文件系统。

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

默认创建ext2类型

-t {ext2|ext3|ext4}

-b {1024|2048|4096}  block

-L 'LABEL'  设置卷标

-j: 相当于 -text3   创建一个ext3类型

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

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

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

-I 一个inode记录占用的磁盘空间大小,128---4096

-m #: 默认5%,为管理人员预留空间占总空间的百分比

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

-O ^FEATURE:关闭指定特性

 

inode:记录文件属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;

block:实际记录文件的内容,若文件太大时会占用多个block ;

super block:记录文件系统的整体信息,包括inode/block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等。

每个inodeblock都有编号,而每个文件系统都会占用一个inode,inode中有文件数据放置的block号码。我们可以找到文件的inode,然后找出文件所放置数据的block号码,之后读出数据。这种数据访问方式成为索引式文件系统。这种文件系统一般不太需要经常进行磁盘碎片整理。

 

 

5)查看与重置文件系统信息

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

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

(这里面记录文件系统的整体情况。比如文件系统的挂载时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间等。还有一个validbit数值,若此文件系统已经被挂载,validbit的值为0,若未被挂载,则validbit值为1。)

-L 'LABEL':修改卷标

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

-j: ext2升级为ext3

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

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

-U UUID: 修改UUID
dumpe2fs

-h:查看超级块信息,不显示分组信息 tune2fs -l一致

 

使用tune2fs -l /dev/sdx 查看文件系统信息

磁盘管理——Linux基本命令(14)_第55张图片

其中第一行表示卷标

 

我们刚才说过-L'LABEL'可以设定卷标(卷标其实就是一个磁盘名称)磁盘管理——Linux基本命令(14)_第56张图片

现在我们设置卷标为lky磁盘管理——Linux基本命令(14)_第57张图片

果然修改成功

 

不仅可以使用tune2fs查看信息,也可以使用tune2fs -L修改卷标。

磁盘管理——Linux基本命令(14)_第58张图片

如图,修改成功。

 

设置了卷标之后,我们就可以使用卷标进行挂载了

磁盘管理——Linux基本命令(14)_第59张图片

mount后面写上LABEL=”xxx”即可挂载成功。(只可以使用卷标挂载,不能卸载)

 

当然,也可以使用UUID挂载。

磁盘管理——Linux基本命令(14)_第60张图片


centos5 系统中,安装时所创建的文件系统会自动将挂载点路径命名为卷标名。因为开机自动读取一个/etc/fstab文件

磁盘管理——Linux基本命令(14)_第61张图片

如图,里面放了开机自动挂载的信息并定义了卷标号。

 

6)文件系统标签

指向设备的另一种方法,与设备无关

blkid:块设备属性信息查看(默认不显示光盘,但可以指定/dev/sr0查看)

wKioL1mgGVGTn0iNAAASruSaOQw863.png

blkid [OPTION]... [DEVICE]

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

        -L  LABEL:根据指定的LABEL来查找对应的设备磁盘管理——Linux基本命令(14)_第62张图片

我们新建一个分区

磁盘管理——Linux基本命令(14)_第63张图片

使用lsblk查看,有sdb3磁盘管理——Linux基本命令(14)_第64张图片

但是使用blkid没有查到sdb3,因为它还没有格式化,还不是块设备。磁盘管理——Linux基本命令(14)_第65张图片

使用mkfs格式化之后再次查询磁盘管理——Linux基本命令(14)_第66张图片

查到了sdb3

 

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

  e2label DEVICE  查询卷标

e2label DEVICE[LABEL]  设置卷标

wKiom1mgGWGx6gSLAAAbRD8AeDo251.png


findfs:查找分区

findfs [options] LABEL=

findfs [options] UUID=wKiom1mgGWHx91PtAABy-AgZEvE310.png


5.超级块

启动Unix操作系统后,发现某个文件系统无法使用,很有可能就是超级块出现了问题。主要是因为在超级块中保存了全局文件信息,如硬盘已用空间、数据块可用空间、inode结点信息等等。

磁盘管理——Linux基本命令(14)_第67张图片


使用dumpe2fs /dev/sda1查看超级块信息和block分组信息

 

我们来看分组信息:

一共从0-78

第一组中,整个分区第一个块放超级块信息

磁盘管理——Linux基本命令(14)_第68张图片

group1,3,5,7奇数的块都存放着备份的超级块

 


6.文件系统检测和修复

常发生于死机或者非正常关机之后。此时使用的就是备份的超级块。

挂载为文件系统标记为“no clean”

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

wKioL1mgGVbCWWTgAABm_HdviMM855.png

fsck: File System Check

fsck.FS_TYPE

fsck -t FS_TYPE

-p: 自动修复错误

-r: 交互式修复错误

FS_TYPE一定要与分区上已经文件类型相同

e2fsckext系列文件专用的检测修复工具

-y:自动回答为yes

-f:强制修复(当破坏力度比较小时,可能会检测不到,不给修复,使用-f可以强制修复)


wKioL1mgHQaxM-ALAACDt0RILt8645.png

我们使用dd先破坏一下磁盘管理——Linux基本命令(14)_第69张图片

已经破坏成功,sda10下面没有东西了wKiom1mgHRPQ70-hAACSK3V0zp4237.png

也不能查看sda10的状态


磁盘管理——Linux基本命令(14)_第70张图片

能卸载,但是卸载了之后就再也挂不上了

 

我们使用e2fsck来修复一下

wKioL1mgHQiDyv-2AAAkQF2PgWc800.png

磁盘管理——Linux基本命令(14)_第71张图片

大概看一下修复过程磁盘管理——Linux基本命令(14)_第72张图片

最后修复完成。

 

然后我们使用tune2fs -l查看一下磁盘管理——Linux基本命令(14)_第73张图片

已经修复好了磁盘管理——Linux基本命令(14)_第74张图片

df也可以查看到了

wKioL1mgHQvx0XD2AABdT82ri0g528.png

也可以挂载并查看里面的数据了。磁盘管理——Linux基本命令(14)_第75张图片


7mount挂载

1)基础

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

卸载:为解除此关联关系的过程

把设备关联挂载点:mount Point

mount

卸载时:可使用设备,也可以使用挂载点

umount

挂载点下原有文件在挂载完成后会被临时隐藏,因此挂载点目录一般为空

 

2)挂载方法

挂载方法:mount DEVICE MOUNT_POINT

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

磁盘管理——Linux基本命令(14)_第76张图片

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:挂载点

事先存在;建议使用空目录

进程正在使用中的设备无法被卸载

 

3mount常用命令选项

-t 指定要挂载的设备上的文件系统类型(其实正常不需要指定会自动识别,挂载的时候一般不用-t

-r 只读挂载磁盘管理——Linux基本命令(14)_第77张图片

如图,只读挂载后不能进行文件下的写操作

磁盘管理——Linux基本命令(14)_第78张图片

-w 读写挂载

   --remount,ro|rw  也会更新/etc/fstab中的选项,如果与指定的冲突,则后指定的优先。

  -n隐藏挂载信息不显示,不更新/etc/mtab,但在/proc/mounts可以查到

  -a读取/etc/fstab,自动挂载其中没有挂载的设备

磁盘管理——Linux基本命令(14)_第79张图片

/etc/fstab是开机之后自动读取的文件,因为开机的时候会自动执行命令mount -a,因此每次开机有些目录已经自动挂载了。

 

(如图,如果/etc/fstab已经配置好了一个挂载的选项,则使用mount挂载的时候不需要指定两个参数了

wKioL1mgHiLCnF-LAACDRIWKRkc906.png

使用mount /dev/sda10 或者/mount /app/sda10 都可以挂载成功)

 

注:如果输入mount不指定选项,则会去读文件中指定的选项,如果输入的选项与文件中的选项冲突,以输入的为准。如果不冲突,则将手动输入的和文件中的选项结合。

 

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

   -U 'UUID'  UUID指定要挂载的设备

   -B --bind  目录挂目录,绑定一个目录到另一个目录上

 查看内核追踪到的已挂载的所有设备:

cat /proc/mounts

 

-o  options(挂载文件系统的选项,决定挂载的功能),多个选项使用逗号分隔

   sync,async 同步,异步(defaults)

   atime(defaults),noatime  是否在读访问时更新atime

   diratime(defaults),nodiratime 目录的访问时间戳

   auto(defaults)/noauto 写在/etc/fstab当中的分区,表示是否在mount -a时被挂载

   exec(defatuls)/noexec 在该分区所挂载的目录中的脚本是否可以执行。

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

   suid(defaults)/nosuid 是否支持suidsgid权限

   remount:重新挂载

磁盘管理——Linux基本命令(14)_第80张图片

 ro:只读

 rw:读写(defaults)

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

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

Defaults 默认,见以上中的(defaults)

wKiom1mgHnmSJh9BAAB3sPe9lPI333.png

如图,选项也可以直接写到/etc/fstab中进行配置

 

4)卸载命令

findmnt [MOUNT_POINT] 查看挂载情况

wKioL1mgHRCCY3KzAADj5azty_8562.png

 

lsof MOUNT_POINT 查看正在访问指定文件系统的进程(查到后可以使用kill杀掉)磁盘管理——Linux基本命令(14)_第81张图片


 fuser -v MOUNT_POINT  查看所有在正访问指定的文件系统的进程

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

磁盘管理——Linux基本命令(14)_第82张图片


卸载:

 umount DEVICE

 umount MOUNT_POINT

 

5)文件挂载配置文件

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

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

设备文件

LABELLABEL=""

UUIDUUID=""

伪文件系统名称:proc, sysfs

挂载点

文件系统类型

挂载选项:defaults(如果没有其他选项必须写defaults,因为要占位。如果有其他选项的话,可以不写defaults也是默认值。)

转储频率:0:不做备份 1:每天转储 2:每隔一天转储

自检次序: 0:不自检  1:首先自检(一般只有根文件系统才用1   2:其次自检 (数字越小越先检测)

磁盘管理——Linux基本命令(14)_第83张图片

 

网络地址挂载:

172.17.253.164:/common   /mnt/nfs   nfs    defaults    0 0

 

在服务器配置/etc/export  添加可以共享的文件夹和允许的客户端地址

wKioL1mgw12hliE7AAAUjNRxoXw791.png

如图就是共享的文件夹为/common 客户端地址任意

再使用以下命令添加到/etc/fsta文件中挂载:

//172.17.X.X/shares  /mnt/share  cifs  defaults,username=test,password=test  0 0 

 


8、处理交换文件和分区

1)基本设置

创建交换分区或者文件,并将类型改为swap(记得要更新分区表)

wKiom1mgw2uDQTyTAAA7mGWQuIk199.png

使用mkswap写入特殊签名(格式化)。也可以对文件做。

wKioL1mgw12zzLDhAAB1TSexRGU422.png

可以再加个卷标

wKiom1mgw2ygjLf7AACGT58c2z4152.png

/etc/fstab文件中添加适当的条目使其开机自动激活(第一列也可以使用分区名和UUIDwKiom1mgw2zyQvWQAAAYjiZ8B0Y239.png

使用swapon -a 激活交换空间wKioL1mgw16RyxZ0AAC0ZWA0L1E660.png

激活成功

 

2)手动挂载交换分区

启用:swapon

swapon[OPTION]... [DEVICE]

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

-s 查看优先级(默认随机分配的一般都是负值)

wKiom1mgw22zeh8CAACJtD-DnHc829.png


-p PRIORITY:指定优先级(可以指定范围是0-32767

wKiom1mgxS_wJOzGAADRTJ4dCLc597.png

也可以写到/etc/fstab文件中:pri=value

磁盘管理——Linux基本命令(14)_第84张图片


禁用:swapoff [OPTION]... [DEVICE]wKioL1mgw2CgV807AAClOKMccSs854.png

使用free查看内存信息使用状态,显示都为0

 


9、移动介质

1U

wKiom1mgw27QeHhLAAAajpLgVNE517.png

右键这个图标

磁盘管理——Linux基本命令(14)_第85张图片

点击第一项

磁盘管理——Linux基本命令(14)_第86张图片

点击确定

磁盘管理——Linux基本命令(14)_第87张图片

过一会,桌面上就有U盘了

 

在命令行界面下,查看到U盘格式为HPFS/NTFSwKiom1mgw3DxYCDwAABCzO2gECY291.png

此时不能直接挂载,需要安装包

在百度上搜索ntfs3q rpm

磁盘管理——Linux基本命令(14)_第88张图片

分别下载el6el7

wKiom1mgw3CCLy9yAAAcxLx0lBo152.png

wKioL1mgw2PT9xaNAAAaeimOez4642.png

安装之后就能挂载了。wKioL1mgw2Owm-7-AAEXeuKq-bQ921.png

磁盘管理——Linux基本命令(14)_第89张图片

2)光盘

在图形环境下自动启动挂载/run/media//

否则就必须被手工挂载:mount /dev/cdrom /mnt/

 

eject命令 卸载或弹出磁盘

 

创建ISO文件

cp /dev/cdrom/root/centos7.iso   将设备做成ISO文件

mkisofs -r -o/root/etc.iso /etc  将目录/etc做成ISO文件

挂载ISO文件

mount -o loop/root/centos69_1.iso /mnt/centos69 (对于光驱设备要加选项-o loopwKiom1mgw3LyGK2zAACSpLHOeik772.png

写到/etc/fstab文件中:

/root/centos69_1.iso    /mnt/centos69    iso9660 defaults,loop 0 0  

 

刻录光盘

wodim –v –eject centos.iso

 


10、常见工具                   

1)内存空间使用状态:

free [OPTION]

-m  MB为单位

-g  GB为单位

磁盘管理——Linux基本命令(14)_第90张图片

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

df [OPTION]... [FILE]...

-h 以人类阅读方式(就是单位显示的便于阅读)

磁盘管理——Linux基本命令(14)_第91张图片

  -H 以人类阅读方式 1000为单位(计算结果大小会与1024有不同)

磁盘管理——Linux基本命令(14)_第92张图片

-T 文件系统类型

-i 显示inodes的使用信息

-a 显示所有的挂载信息,包含bind

 

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

du [OPTION]... DIR

-h  以人类阅读方式

-s  显示总和

如果目录下有目录会被列出,如果没有的话只显示总和。

磁盘管理——Linux基本命令(14)_第93张图片

 


11、工具dd

1)用法

dd命令:convert and copy a file

用法:

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

bs=#block size, 复制单元大小

count=#:复制多少个bs

 

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

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

bs=size  指定块大小(既是是ibs也是obs)

ibs=size  一次读sizebyte

obs=size 一次写sizebyte

cbs=size 一次转化sizebyte

skip=blocks  从开头忽略blocksibs大小的块

seek=blocks  从开头忽略blocksobs大小的块

count=n  只拷贝n个记录

 

备份MBR

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

破坏MBR中的bootloader

dd if=/dev/zeroof=/dev/sda bs=64 count=1

seek=446

 

2)示例

有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,实现如下:

#dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

 

·备份:

dd if=/dev/sdx of=/dev/sdy

将本地的/dev/sdx整盘备份到/dev/sdy

 

dd if=/dev/sdx of=/path/to/p_w_picpath

/dev/sdx全盘数据备份到指定路径的p_w_picpath文件

 

dd if=/dev/sdx | gzip >/path/to/p_w_picpath.gz

备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径

 

·恢复:

dd if=/path/to/p_w_picpath of=/dev/sdx

将备份文件恢复到指定盘

 

gzip -dc /path/to/p_w_picpath.gz | dd of=/dev/sdx

将压缩的备份文件恢复到指定盘

 

·拷贝内存资料到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024

将内存里的数据拷贝到root目录下的mem.bin文件

 

·从光盘拷贝iso镜像

dd if=/dev/cdrom of=/root/cd.iso

拷贝光盘数据到root文件夹下,并保存为cd.iso文件


·销毁磁盘数据

dd if=/dev/urandom of=/dev/sda1

利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行

 

3)得到最恰当的block size

dd if=/dev/zerobs=1024 count=1000000 of=/root/1Gb.file

dd if=/dev/zerobs=2048 count=500000 of=/root/1Gb.file

dd if=/dev/zerobs=4096 count=250000 of=/root/1Gb.file

通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小

 

测试硬盘写速度:

dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

测试硬盘读速度:

dd if=/root/1Gb.file bs=64k | dd of=/dev/null

 

4)修复硬盘

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

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