磁盘和文件系统管理述

    我们知道一块磁盘是可以被分区成多个分区的(partition),以Windows的观点来看,你可能会有一颗磁盘并且将他分区成为C:, D:, E:盘,那个C, D,E就是分区。Linux的设备都是以文件的型态存在,磁盘设备接口的不同也早就了磁盘文件名的不同。即IDE接口的磁盘设备文件名都是/dev/hd[a-z]的格式,例如:/dev/hda./dev/hdb。SCSI, SATA, SAS, USB接口的磁盘设备文件名都是:/dev/sd[a-z],例如sda.sdb,磁盘设备的命名主要是根据Linux核心侦测到磁盘的顺序来进行的,例如你有两块SATA接口的硬盘要插在有六个SATA插槽的主板上,一块插在SATA1接口上一块插在STAT3接口上,因为是使用侦测到的顺序来决定设备文件名,并非与实际插槽代号有关,所以这两块磁盘的命名就是SATA1插槽上为/dev/sda,而SATA3插槽上的为/dev/sdb。那么同一设备上的不同分区表示就是1.2.3.4.5这样,/dev/sda磁盘上的分区命名为/dev/sda1,/dev/sda2….注意:centos6和centos7统统将硬盘设备文件标识为/dev/sda[a-z]#

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



磁盘分区

    两种分区方式: MBR, GPT

    早期的 Linux 系统为了兼容Windows的磁盘,因此使用的是支持 Windows 的 MBR(Master Boot Record, 主要开机纪录区)的方式来处理开机管理程序与分区表!而开机管理程序纪录区与分区表则通通放在磁盘的第一个扇区, 这个扇区通常是512Bytes的大小(旧的磁盘扇区是512Bytes)所以说,第一个扇区及(0扇区)512Byte会有两个数据;

    主要开机记录区(Master Boot Record, MBR):主要用于引导系统启动,有446 Bytes
    分区表(partition table):记录整颗硬盘分区的状态,有64 Bytes

    由于分区表所在区块仅有64 Bytes容量,而每个分区要占用16Bytes,因此最多仅能记录4个分区,每个记录区记录了该区段的启始与结束的柱面号码。假设这个设备名称为/dev/sda/那么这个4个分区的命名分别是/dev/sda1,sda2,sda3,sda4.而这4个分区又被称为主分区和扩展分区,通常这4个分区为3个主分区和一个扩展分区,而扩展分区又可延伸N个逻辑分区(注意;一旦运用扩展分区,即此扩展分区不在存储实际数据,而是存储指向逻辑分区的信息,逻辑分区的设备名只能从5开始。)

    GPT支持128个分区,已经没有所谓的主、延伸、逻辑分区的概念,每个都可以视为是主分区,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block)GPT磁盘分区结构解决了MBR只能分4个主分区的的缺点,并且支持大硬盘,分区结构清晰简单而且有备份。

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

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

    结构如;

    blob.png

    保护MBR区:与 MBR 模式相似的,记录开机引导信息程序。

    GPT头:这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的GPT分区放置的位置,同时放置了分区表的检验码(CRC32),操作系统可以根据这个检验码来判断GPT是否正确。若有错误,还可以通过这个纪录区来取得备份的GPT(磁盘最后的那个备份区块) 来恢复GPT的正常运行!

    分区表:实际记录分区信息处        



管理分区  

    工具;fdisk,parted,sfdisk

    fdisk 创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15分区
    gdisk 创建GPT分区
    GNU parted 高级分区操作(创建、复制、调整大小等等)
    partprobe-重新设置内存中的内核分区表版本
    fdisk /dev/sdb
    gdisk /dev/sdb 类fdisk 的GPT分区工具

    lsblk:查看当前所有磁盘分区情况
  fdisk命令

    fdisk -l [-u] [device…]:列出指定磁盘设备上的分区情况;查看磁盘的分区信息

]# fdisk -l /dev/sda
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       15666   125316096   8e  Linux LVM

上面可看到设备名称是/dev/sda,大小为128G,等信息….,下边一栏则显示的是分区信息,可看到目前有两个分区,分别sda1和sda2,而sda1作为了系统的引导分区,开始柱面为1,结束柱面为64,块大小,分区类型ID等等…(注意;对cenots6来说start是开始柱面,End是结束柱面,对centos7来说start是开始扇区,End是结束扇区)


fdisk device(设备)

    fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有操作均在内存中进行,没有直接同步到磁盘;直到使用w命令保存到磁盘上才会生效

n:创建新分区

d:删除已有分区

t:修改分区类型

l:查看所有已知id

w:保存并且退出

q:不保存并退出

m:查看帮助信息

p:显示现有分区信息

示例

~]# fdisk /dev/sda
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (7859-15665, default 7859): 
Using default value 7859
Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +10G
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Selected partition 4
First cylinder (9165-15665, default 9165): 
Using default value 9165
Last cylinder, +cylinders or +size{K,M,G} (9165-15665, default 15665): 
Using default value 15665
Command (m for help): n
First cylinder (9165-15665, default 9165): 
Using default value 9165
Last cylinder, +cylinders or +size{K,M,G} (9165-15665, default 15665): +10G
Command (m for help): w
~]# partx -a /dev/sda

重读分区表

创建后

partx -a /device

删除后
partx -d -n M:N /dev/DEVICE
centos6: –nr N-M
CentOS 5, 7: 使用partprobe
partprobe [/dev/DEVICE]

也可在fdisk交互界面进行删除分区动作


swap交换分区

交换分区是系统RAM的补充

linux上的交换分区必须使用独立的文件系统

且文件系统的system id 必须为82

创建swap设备:mkswap命令

mkswap [option] device

-L label:指明卷标

-f:强制

交换分区的启用和禁用:

启用:swapon

swap [option][option]

使用swapon -a 激活交换空间:定义在/etc/fstab文件中的所有swap设备

禁用:swapoff

swapoff device

findfs :查找分区
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>

]# findfs UUID=40ad1cd6-2e57-422d-9af7-1015a582636d
/dev/sdb1


管理文件系统

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

光盘: iso9660

Windows: fat32, ntfs

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

网络文件系统: NFS, CIFS

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

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

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

文件系统的组成部分:

文件系统驱动:由内核提供,

文件系统管理工具:由用户空间的应用程序提供

如果一个文件系统想要在系统上运行起来的话,必须要装载对应的模块

lsmod:查看当前系统内核已经装载的模块,如果内核相应识别一个文件系统,必须先装载这个模块


创建文件系统的工具

mkfs;

mkfs.ext2(无日志功能),mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.vfat…

centos6如果使用xfs文件系统,需要安装(xfsgrogs)

再次执行mkfs.ext3 /dev/sda6,将ext2文件系统格式化为ext3。

当然了也可以再次格式话为ext4格式,ext4格式同样支持日志功能,而且在单个文件和单个文件系统的大小比ext3性能更强大 

centos6 默认不支持xfs

如果要安装得先安装xfsprogs工具;可用yum进行安装,然后在执行]# mkfs.xfs /dev/sda6 -f 强制将文件系统格式化为xfs格式

检测及修复文件系统的工具

fsck:check and repair a Linux file system(通用所有文件系统)使用此修复功能必须先取消挂载,要不会然会破坏数据

修复的工作特性就是把不连续的文件删除进行的。

-t fstype:指明文件系统类型

fsck -t ext4 = fsck.ext4

-a:无需交互而自动档修复所有错误;(不建议)

-r: 交互式修复;

windows文件系统

#mkfs.vfat device

windows无法识别linux的文件系统;因此,存储设备需要两种系统之间交叉使用时,应该使用windows和linux同时支持的文件系统;fat32(vfat);


blkid命令可查看文件系统类型

blkid /dev/sda#

blob.png

blkid -L label:根据label定位为设备

blkid -U UUID:根据UUID定位设备

每一个设备都有一个随机的UUID;全局唯一标识符

lsblk命令

lsblk /device:查看磁盘分区类型

-f :磁盘分区类型和文件系统类型一起显示

blob.png


ext系列文件系统的管理工具:

mkfs.两次tab可看到多种文件系列

mkfs.ext2,mkfs.ext3,mkfs.ext4(向前兼容较老的版本)

mkfs -t ext2=mkfs.ext2

ext2:没有日志功能,ext3,4有日志功能,ext4性能有很大提升,建议使用ext4文件系统

命令

mkfs.ext2 /dev/sda#(敲下回车,及完成格式化文件系统)

mke2fs;

mke2fs  [ option] device

-t{ext2|ext3|ext4}:指明要创建的文件系统类型

mkfs.etx4=mkfs -t ext4=mke2fs -t ext4

-b{1024|2048|4096}:指明文件系统的块大小;

-L LABEL:指明卷标;

-j:创建有日志功能的文件系统ext3;

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

-i#:bytes-per-inode:指明inode与字节的比率;即每多少字节创建一个inode

-N#:直接指明要给此文件系统创建的inode的数量;

-m#:指定预留的空间,百分比;

-O[^]FEATURE:以指定的特性创建目标文件系统,不加^表示启用此特性,加^表示关闭此特性

创建文件系统后回显信息;

blob.png

e2label命令:卷标的查看与设定

查看:e2label device

blob.png

设定:e2label device LABEL

blob.png

tune2fs命令:查看或修改ext系统文件系统的某些属性

adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems:

注意:块大小创建后不可修改

tune2fs [option]device

-l:查看超级块的内容;

blob.png

修改指定文件系统的属性

-j:ext2 –>ext3

blob.png增加了日志功能,实际操作就是把ext2改为ext3

-L:LABEL:修改卷标

blob.png

-m #:调整预留空间百分比

blob.png

-O[^]FEATHER:开启或关闭某种特性;

-o[^]mount_option:开启或关闭某种默认挂载选项

blob.png

acl

^acl

dumpe2fs命令:显示ext系列文件系统的属性信息

dumpe2fs [-h]device和tune2fs -l /device效果一样    

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

实现文件系统检测的工具

因进程意外终止或系统崩溃等原因导致写入操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统;建议,离线进行

e2fsck:check a Linux ext2/ext3/ext4 file system(ext系列文件专用的检测修复工具)

e2fsck[option]device

-y:对所有问题自动回答为yes

-f:强制修复;即使文件系统处于clean状态,也要强制进行检测



使用文件系统:

首先要挂载:mount(挂载)命令和umount(卸载)命令

跟文件系统之外的其他文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”;

挂载点需要具备一下条件:mount_point,用于作为另一个文件系统的访问入口

(1)事先存在

(2)应该使用未被或不会被其他进程使用到的目录

(3)挂载点下原有的文件将会被隐藏;

mount命令:

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

使用不带任何选项的mount命令可以显示当前所有已经挂载了的文件系统

设备挂载或卸

命令选项:

-r:readonly,只读挂载;

-w:read and write,读写挂载

blob.png

-n:默认情况下,载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性;

-t vfstype:指明要挂载的设备上的文件系统类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型

-L LABEL:挂载时以卷标方式指明设备;

mount -L LABEL dir

blob.png

-U UUID:挂载时以UUID方式指明设备;

-o option:挂载选项,多个选项之间用逗号隔开

默认挂载选项以外的选项才会显示在/etc/mtab和/proc/mounts中

sync/async:同步/异步操作;

atime/noatime:文件或目录在被访问时是否更新其访问时间戳;

diratime/nodirname:目录在被访问时是否更新其访问时间戳;

remount:重新挂载

acl:支持使用facl功能

#mount -o acl device dir

#tune2fs -o acl device

ro:只读

rw:读写

dev/nodev:此设备上是否允许创建设备文件;

exec/noexec:是否允许运行此设备上的程序文件;

auto/noauto:是否支持自动挂载,是否支持-a选项

user/nouser:是否允许普通用户挂载此文件系统;

suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效

blob.png

mount –bind 源目录 目标目录(可以实现将目录绑定在另一个目录上,作为其临时访问入口;)

defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.(不加任何选项的默认挂载生效的选项)

查看当前系统上所有已挂载的设备

#mount

#cat /etc/matb

#cat /proc/mounts


挂载光盘;

mount -r /dev/cdrom mount_point

===================================================================

光盘设备文件:/dev/cdrom

挂载U盘:

实现识别u盘的设备文件;

====================================================================

umount卸载命令:

umount device|dir

注意:正在被进程访问到的挂载点无法被卸载;

查看被哪个或者哪些进程所用:

#lsof mount_point

#fuser -v mount_point

=====================================================================

终止所有正在访问某挂载点的进程

#fuser -km mount_point

blob.png

=====================================================================

挂载本地的回环设备;

#mount -o loop /path/to/some_loop_file mount_point

======================================================================

设定除了根文件系统以外的其他文件系统能够开机时自动挂载:/etc/fstab文件

]# cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Wed Aug 24 19:00:44 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
#
/dev/mapper/vg0-root    /                ext4    defaults         1 1
UUID=8eba0853-3403-459b-9021-b3fc0da22d99 /boot      ext4    defaults         1 2
/dev/mapper/vg0-usr     /usr              ext4    defaults         1 2
/dev/mapper/vg0-var     /var              ext4    defaults         1 2
/dev/mapper/vg0-swap     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

每行定义一个要挂载的文件系统及其相关属性

6个字段:

(1)要挂载的设备

设备文件

LABEL

UUID

伪文件系统:如sysfs,proc,tmpts

(2)挂载点

swap类型的设备的挂载点为swap

(3)文件系统类型:

(4)挂载选项

defaults:使用默认挂载选项:

如果要同时指明多个挂载选项,彼此间以逗号分隔

(5)转储频率(备份)

0:从不备份

1:每天备份

2:每隔一天备份

(6)自检次序

0:不自检

1:首先自检,通常只能是根文件系统可用1

2:次级自检

mount -a :可自动挂载定义在此文件中的所支持自动挂载的设备;

blob.png



df和du补充

df命令:

df[option]…[file]

-l:仅显示本地文件的相关信息

-h:human-readable

-i:显示inode的使用状态而非blocks

blob.png

============================================

du命令:查看目录大小

du[option]…[file]

-s:sumary

-h:human-readble

]# du -sh /root/
78M	/root/

命令整理                                                                           磁盘和文件系统管理.png             

原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/40037

(0)
M20-1马星M20-1马星
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • echo显示闪烁,screen用法及显示时间的前后

    我们这门今天学习的一些主要内容 标准的命令的格式 命令(COMMAND)  [选项(OPTIONS)….[参数(ARGUMENTS…)] 选项:启用或者关闭命令的某个或某些功能 参数:命令作用的对象,比如文件名,用户名等 首先我们来统计一下学习到的linux的一些基础的命令 who  查询当前用户 hostname 显…

    Linux干货 2016-08-04
  • Puppet学习之puppet的安装和配置

    一、Puppet简介 Puppet基于ruby语言开发的自动化系统配置工具,可以C/S模式或独立运行,支持对所有UNIX及类UNIX系统的配置管理,最新版本也开始支持对Windows操作系统有限的一些管理。Puppet适用于服务器管的整个过程 ,比如初始安装、配置更新以及系统下线。 二、Puppet的安装 Puppet的安装方式支持源码安装、yum安装以及r…

    2017-09-25
  • puppet代码分析

    这篇博客的目的是通过分析Forge上的Puppet模块来加深一些概念的理解,同时了解一些常用用法。 今天的例子是jfryman-nginx模块,它是原puppetlabs-nginx模块的升级版本,依赖3个Puppet公共模块:puppetlabs-apt,puppetlabs-stdlib和puppetlabs-concat。安装非常方便,puppet m…

    2017-03-18
  • select case的用法-函数练习-20160819

    §·select  case的用法 *介绍select 循环与菜单 ◎语法 select  variable  in  list[ ] do 循环体命令 Done  ◎select 循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示PS3 提示符,等待用户输 入 ◎用户…

    Linux干货 2016-08-19
  • linux中find命令的那些事

         概述:在介绍find这个强大的文件查找命令前,我们先介绍两个较简单的文件查找命令whereis和locate命令,通常我们都是先使用whereis或者是locate检查,如果真的找不到了,才用find来查找,因为whereis和locate是利用数据库来查找数据的,速度相当快,节约时间,缺点就是有可…

    Linux干货 2016-08-18
  • 19道小米网运维工程师笔试真题,你能通关吗?

    第一部分:Linux基础 题目1: 有一百个图片文件,它们的地址都是 http://down.xiaomi.com/img/1.png http://down.xiaomi.com/img/2.png … 一直到http://down.xiaomi.com/img/100.png 批量下载这100个图片文件,并找出其中大于500KB的文件。 题目2: 一个文…

    2017-09-08

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-29 09:52

    文章对各命令的作用,用法和常用选项总结的很完整,建议下来多加作,尝试着灵活运用这些工具来实现,分区的创建与格式化并挂载使用。多动手才能明白自己的不足哦。