磁盘和文件系统管理述

    我们知道一块磁盘是可以被分区成多个分区的(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

相关推荐

  • case条件判断语句

    条件判断: case语句     在shell编程中,对于多分支判断,用if 虽然也可以实现,但有些时候,写起来很麻烦,也不容易代码理解。这个时候,可以考虑case。 case 变量引用 in PAT1) 分支1 ;; PAT2) 分支2 ;; … *) 默认分支 ;; esac case语句结构特点如下:…

    Linux干货 2016-08-16
  • Mariadb数据库复制系列(四):复制过滤器的实现

       实验四:复制过滤器的实现 复制过滤器的作用是让从节点仅复制主节点的指定的库,或指定数据库的指定表,而不是全部复制。其配置方式有两种,一种是在主节点上配置,通过定义主节点只记录部分库或表产生的二进制日志时间来实现;一种是通过从节点上配置,当复制了主节点的所有的二进制日志数据后,在SQL线程执行时,只执行指定的库或表相关的二进制日志时间;一般采取在从节点上…

    Linux干货 2016-11-24
  • Homework Week-8 网络及脚本编程

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 设备 功能 使用场景 网桥 用于连接不同网段,将相似的网络连接起来,隔离信息。 连接不同部门间的局域网;连接地理位置分散并且相距较远的局域网,可以增加工作的物理距离;采用由网桥连接的多个局域网调节负载;网桥可以设置在局域网的关键部位,防止单点失常而破坏整个系统等。 集线器 对接收…

    Linux干货 2016-10-09
  • 计算机基础知识(第一天)

    一、计算机的硬件组成         冯诺依曼体系结构:             CPU、存储器、输入设备、输出设备       &nbsp…

    Linux干货 2016-07-26
  • Linux下搭建路由器

    客户端1:CentOS6.9 客户端2:CentOS7.3 路由器:router1(CentOS7.3)、router2(CentOS7.3) r router3(CentOS7.3) 1 准备工作 为了避免干扰,最好建立独立的网络。 打开VMvare的虚拟网络编辑器,点击添加网络按钮,添加VMnet11并且将左下角使用“本地DHCP服务将IP地址分配给虚拟…

    Linux干货 2017-08-20
  • N21沉舟第六周作业

    N21沉舟第六周作业 1、  复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit %s/^[[:space:]]\+/#&…

    Linux干货 2016-08-08

评论列表(1条)

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

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