8.25_Linux磁盘管理(一)

磁盘,计算机最常见的存储硬件设备。对Linux而言,其哲学思想之一就是一切皆文件,因此linux之上所有设备的操作都是通过文件接口来实现的,也就是说在访问设备的时候就如同访问一个文件一样,因为他们使用的都是文件系统接口。

向磁盘中写入数据的操作过程

首先硬件设备在系统上会映射成一个一个文件,我们在对硬件中写入数据就相当于在打开一个文件中去执行读写操作,对于程序而言会先open()一个文件,然后执行read()或者write()操作,最后关闭文件close()。

设备类型

块设备:block,存取单位“块”,如磁盘/dev/sda

字符设备:char,存取单位“字符”,如/dev/null(linux里面的黑洞设备,放什么进去都会消失)

设备文件

每一个设备都有一个文件作为它的访问入口,此文件我们称之为设备文件;该文件关联至一个设备驱动,进而能够跟与之对应的硬件设备进行通信。

设备号码

用来标识设备,不同类别的设备有不同的设备号,同一类别的设备有不同的设备或多个设备,因此就有主设备号和次设备号。

主设备号:major number,标识设备类型

次设备号:minor numbei,标识同以类型下的不同设备

磁盘的接口类型:每一种的接口传输速率都是不同的

并口:数据传输有n根线并行传输的

IDE:133MB/S

SCSI:640MB/S

串口:数据传输有一根线按照顺序传输

SATA:6Gbps(第三代sata传输速度)

SAS:6Gbps

USB:480MB/s

磁盘设备的设备文件命令:

IDE:/dev/hd

SCSI、SATA、SAS、USB:/dev/sd

不同设备表示方法:在设备文件名后面追加一些字母a-z来表示

/dev/sda,/dev/sdb,/dev/sdc

同一设备上的不同分区,采用数字递增的方式

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

硬盘结构

head:磁头

track:磁道,是由厂商划分好的

secotr: 扇区,每一个512bytes,固定角速度的设备,任意磁盘上的任意扇区,读取的平均时间称为平均寻道时间

cylinder: 柱面chs

磁盘分区

为什么要分区?

优化I/O性能

实现磁盘空间配额限制

提高修复速度

隔离系统和程序

安装多个OS

采用不同文件系统

两种分区方式:MBR,GPT

MBR: Master Boot Record,1982年创建,使用32位表示扇区数,分区不超过2T

MBR使用legacy的引导方式启动

如何分区?:按柱面

0磁道0扇区:512bytes

446bytes: boot loader 系统引导

64bytes:分区表,其中每16bytes:标识一个分区,可以有4个主分区,或者3个主分区1个扩展分区

2bytes: 55AA,判断有无分区

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

GPT:GUID(Globals Unique Identifiers)partition table

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

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

支持2TB以上的硬盘分区

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


分区管理

列出块设备

lsblk

创建分区使用:

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

gdisk创建GPT分区

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

partprobe-重新设置内存中的内核分区表版本

分区工具fdisk和gdisk

fdisk /dev/sd*

gfisk /dev/sd* 类fdisk 的GPT分区工具(gdisk命令参考fdisk,大体是一样的)

# fdisk -l [-u] [device...]

fdisk子命令:

p 分区列表

t 更改分区类型

n 创建新分区

d 删除分区

w 保存并退出

q 不保存并退出

示例:创建一个分区

输入fdisk /dev/sdb对sdb磁盘进行分区,按m表示查看帮助信息

分区前按p查看一下磁盘信息

按n,创建一个新的分区,按p,创建一个主分区,1表示主分区编号 ,+10G表示该分区为10G

创建然查看一下确认一下创建的磁盘信息

最后按w,保存退出,如果不店保存退出的话,上面的操作是不会生效的,然后再输入lsblk再确认

同步分区表

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

# cat /proc/partations

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

CentOS 6使用:

新增分区用

partx -a /dev/DEVICE

kpartx -a /dev/DEVICE -f: force

CentOS 6新增分区同步示例:

删除分区用(CentOS 6用)

partx-d --nr N-M /dev/DEVICE (N-M指分区的minor,如果要删1-5的话就输入1-5)

CentOS 5,7: (CentOS5和7新增和删除都一条命令即可,CentOS 6此命令有bug不能用)

使用partprobe 示例 partprobe [/dev/DEVICE]

此处因为上面分区已经同步完成,所以这里没什么用,一般来说,只有旧硬盘同步的时候会报错,新的硬盘一般报错的机率比较少,所以旧的硬盘可能要同步多次才会显示出来

parted命令

parted的操作都是实时生效的,小心使用,建议不要使用,大家了解即可

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

parted /dev/sdb mklabel gpt|msdos 此命令用于创建gpt或者msdos的分区

parted /dev/sdb print 显示/dev/sdb磁盘信息

parted /dev/sdb mkpart primary 1 200 (默认M) 创建一个200M的分区

parted /dev/sdb rm 1 删除/dev/sdb序列号为1的分区

parted -l 显示所有分区

此命令不建议使用,所以这里就不做示例说明了,需要使用的话大家参考以上命令格式即可

文件系统

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

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

文件系统类型

Linux文件系统: :ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle)              reiserfs, jfs(AIX), swap(虚拟内存),VFS(虚拟化文件系统)

光盘:iso9660

Windows:fat32, ntfs

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

网络文件系统:NFS, CIFS

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

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

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

文件系统分类

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

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

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

文件系统的组成部分:

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

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

Linux的虚拟文件系统:VFS

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

VFS作用:

VFS的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。在古老的DOS操作系统中,要访问本地文件系统之外的文件系统需要使用特殊的工具才能进行。而在Linux下,通过VFS,一个抽象的通用访问接口屏蔽了底层文件系统和物理介质的差异性。

每一种类型的文件系统代码都隐藏了实现的细节。因此,对于VFS层和内核的其它部分而言,每一种类型的文件系统看起来都是一样的。

创建文件系统

mkfs命令:(make file system)

(1) # mkfs.FS_TYPE /dev/DEVICE  =mkfs -t FS_TYPE (FS-TYPE ext4、xfs、btrfs 等)

示例:msfs.ext4 /dev/sda

(2) # mkfs -t FS_TYPE /dev/DEVICE

-L ‘LABEL‘: 设定卷标

示例:将/dev/sda1的文件系统创建为ext4

注意:CentOS 7默认的文件系统是xfs,如果转成ext4,有可能会造成文件系统破坏导致开不了机

创建ext文件系统

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

-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

-I 一个inode记录大小128---4096

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

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

-O ^FEATURE:关闭指定特性, 示例.关闭日志功能 mke2fs -O ^has_journal /dev/sdb1

示例:常用选项说明

文件系统标签

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

blkid:块设备属性信息查看

blkid [OPTION]... [DEVICE]

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

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

示例:


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

# e2label DEVICE [LABEL]

示例:


findfs:查找分区

findfs[options] LABEL=<label>

findfs[options] UUID=<uuid>

tune2fs

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

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

-L ‘LABEL‘:修改卷标

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

-j: 将ext2升级为ext3

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

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

-U UUID: 修改UUID号,可以使用uuidgen命令获取一个随机的UUID

dumpe2fs [option] DEVICE:此命令相当于 tune2fs -l DEVICE

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

超级块

什么是超级块?

超级块(superblock)的作用是存储文件系统的大小、有多少是空的和已经填满的占多少,以及它们各自的总数和其他诸如此类的信息。要使用一个分区来进行数据访问,那么第一个要访问的就是超级块。所以,如果超级块坏了,那磁盘基本就没救了。

超级块占用第一号物理块,是文件系统的控制块,超级块包括:文件系统大小、空闲块数目、空闲块索引表、空闲inode节点数目、空闲inode节点索引表、封锁标记等。超级块是系统为文件分配存储空间、回收存储空间的依据。

所以为了防止超级块数据损坏,就需要对超级块数据进行备份,以便于损坏时可以恢复。

超级快和inode_table关系图

什么是超级块?

超级块(superblock)的作用是存储文件系统的大小、有多少是空的和已经填满的占多少,以及它们各自的总数和其他诸如此类的信息。要使用一个分区来进行数据访问,那么第一个要访问的就是超级块。所以,如果超级块坏了,那磁盘基本就没救了。

超级块占用第一号物理块,是文件系统的控制块,超级块包括:文件系统大小、空闲块数目、空闲块索引表、空闲inode节点数目、空闲inode节点索引表、封锁标记等。超级块是系统为文件分配存储空间、回收存储空间的依据。

所以为了防止超级块数据损坏,就需要对超级块数据进行备份,以便于损坏时可以恢复。

文件系统检测和修复

常发生于死机或者非正常关机之后(windows操作系统崩溃后系统也会开机自检原理一样)

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

fsck: File System Check

fsck.FS_TYPE [option] DEVICE

-t FS_TYPE

-a: 自动修复错误

-r: 交互式修复错误

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

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

-y:自动回答为yes

-f:强制修复

示例:修复损坏的磁盘

挂载mount

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

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

把设备关联挂载点:mount DEVICE MOUNT_POINT

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

挂载点下原有文件在挂载完成后会被临时隐藏

挂载点目录一般为空

用mount命令挂载文件系统

挂载方法:mount DEVICE MOUNT_POINT

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

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

cat /proc/mounts

mount [option]...[-t FSTYPE] [-o option] DEVICE MOUNT_POINT

DEVICE:指明要挂载的设备;

(1) 设备文件:例如/dev/sda5

(2) 卷标:-L ‘LABEL‘,例如-L ‘MYDATA‘

(3) UUID, -U ‘UUID‘:例如-U ‘0c50523c-43f1-45e7-85c0-a126711d406e‘

(4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs

固定挂载点MOUNT_POINT:/mnt /media

挂载点需要具备以下两点

1.挂载点事先存在,并且使用空目录

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

mount常用命令选项

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

-r: readonly,只读挂载

-w: read and write, 读写挂载

-n: 不更新/etc/mtab,相当于#mount

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

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

-U UUID=‘UUID‘: 以UUID指定要挂载的设备

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

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

async:异步模式,内存更改时,不会马上写入磁盘,以节省IO资源

sync:同步模式,内存更改时,同时写磁盘

atime/noatime:包含目录和文件

diratime/nodiratime:目录的访问时间戳

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

exec/noexec:是否支持将文件系统上运行应用程序

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

suid/nosuid:不否支持suid和sgid权限

remount:重新挂载

ro:只读

rw:读写

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

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

注意:1、上述选项可多个同时使用,彼此之间使用逗号分隔。

2、默认挂载选项:rw, dev, exec, auto, nouser, async

示例1:挂载/dev/sdb1到/mnt/sdb1目录下面

示例2:取消/dev/sdb1的挂载

示例3:重新挂载设备/dev/sdb1且为只读

示例4:挂载目录具有suid权限的目录(此操作过于危险,请谨慎使用)

当挂载具有suid的目录后,假如目录下面有某些系统命令在该目录下面,使用这些命令,可以直接查看到或修改到系统的文件,所以需要我们谨慎操作此命令。

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

cat /proc/mounts

时间: 2024-08-25 22:08:32

8.25_Linux磁盘管理(一)的相关文章

Windows下的磁盘管理(二)

续Windows下的磁盘管理(一) 六.跨区卷 跨区卷是由几个位于不同磁盘的未分配空间所组成的一个逻辑卷.即用户可以将几个磁盘内的未分配空间,合并成一个跨区卷,分配一个共同的驱动器,这样可能更有效地利用空间.     用户可以选择2-32个磁盘:     每个磁盘的容量可以不相同:     不可以包括系统卷与活动卷:     系统存储数据时,是先将数据存储在其成员中的第一个磁盘内,待其空间用完后,才会用到第二个磁盘,依次类推:     跨区卷不能提高磁盘的访问效率:     跨区卷不具有容错功能

Windows Server 2012 磁盘管理之 简单卷、跨区卷、带区卷、镜像卷和RAID-5卷

今天给客户配置故障转移群集,在Windows Server 2012 R2的系统上,通过iSCSI连接上DELL的SAN存储后,在磁盘管理里面发现可以新建 简单卷.跨区卷.带区卷.镜像卷.RAID-5卷等: 之前从来没接触过这些,于是上网学习了一番,下面分别是他们的介绍 简单卷 简单卷是在单独的动态磁盘中的一个卷,它与基本磁盘的分区较相似.但是它没有空间的限制以及数量的限制.当简单卷的空间不够用时,您也可以通过扩展卷来扩充其空间,而这丝毫不会影响其中的数据. 创建简单卷的方法: 右键单击"我的电

磁盘管理—进步之路

引导目录: *磁盘分区 *分区工具 *磁盘格式化 *文件系统类型 *磁盘修复 *磁盘修复工具 *分区的挂载 *挂载实例 *RAID *主要对RAID0.1.5进行介绍 *LVM(逻辑卷) *逻辑卷的创建 *快照 通过近乎两周的磁盘管理学习,从对磁盘懵懂的认识,到对磁盘真正的了解,可谓收获颇深,快来看看小编学习的心路历程吧. 一.磁盘分区 磁盘的分区有两种类型: *DOS分区方式 *GPT分区方式 在平常的windows系统之中,我们很熟悉C盘.D盘等各个字母开头的盘区,但是我们可能没有在意过,其

磁盘管理

逻辑磁盘管理: 创建物理卷: pvcreat /dev/sdb 查看:pvs .pvdisplay 创建卷组: vgcreat   vgmage26(组名) /dev/sdb (物理卷) 查看卷组:vgs.vgdisplay 创建逻辑卷  : lvgcreat -n lv0 -L 10G (-l 50%FREE) vg0 vgchange -s 16M /dev/vg0  修改PE大小 ll /dev/vg0/lv0  (软连接) 格式化逻辑卷:mkfs.xfs /dev/vg0/lv0 挂载逻

linux 磁盘管理

linux磁盘管理 I/O Port: I/O 设备地址 块设备:block, 存取单位"块",磁盘 字符设备:char, 存取单位"字符", 键盘 设备文件:关联至一个设备驱动程序,使能够与之对应的硬件设备进行通信 设备号:主设备号   次设备号 设备文件只有源数据(属性),没有数据,都是特殊类型的文件,目录也是 /dev/dev_file都在这儿 硬盘的接口类型: 并行(慢于串口): IDE   133MB/S(接口速率) SCSI  640MB/S 串口: S

Linux基础之磁盘管理

 Linux基础之磁盘管理         关于Linux中磁盘管理我们应该从以下四个方面入手,去了解和学习磁盘管理的知识. 第一点 磁盘的结构--硬盘         硬盘的参数 结构:磁盘的盘片,磁头,马达(机械键盘) 类型:固态硬盘(SSB)和机械硬盘 接口:早期的IDE接口,现在的SATA,SCSI,SAS 还有容量,转速,传输速度,缓存等. 硬盘存储术语 head: 磁头 track: 磁道 cylinder: 柱面 secotr: 扇区  512bytes(字节) 第二点 磁盘的分区

第十一章 linux磁盘管理(1)

Linux磁盘管理 涉及到的命令如下: fdisk -l              查看当前磁盘使用情况 fdisk /dev/sdb        划分分区 mkfs.ext4 /dev/sdb1   给分区格式化 mkdir /data           创建挂载目录 mount /dev/sdb1 /data 将新划分的分区挂载到/data目录 vi /etc/fstab         将挂载信息卸载配置文件里,开机启动挂载信息 /dev/sdb1 /data  ext4 defaul

Windows下的磁盘管理(三)

续Windows下的磁盘管理(一).Windows下的磁盘管理(二). 八.镜像卷 用户可以将一个动态磁盘内的简单卷与另一个动态磁盘内的未分配空间组成一个镜像卷,也可将两个未分配的可能空间组成一个镜像卷.系统会给予一个逻辑驱动器号,这两个区域内存储完全相同的数据. 1.由2块磁盘组成,必须位于动态磁盘内: 2.使用RAID-1的技术: 3.组成卷的两个卷的容量必须相同: 4.可以包含系统卷与活动卷: 5.成员不能包括GPT磁盘的EFI系统分区: 6.系统会将数据同时存储到两块磁盘内.因此当一块磁

Windows下的磁盘管理(四)

续Windows下的磁盘管理(一).Windows下的磁盘管理(二).Windows下的磁盘管理(三). 九.RAID-5卷 和带区卷有一些类似,也是将几个分别位于不同磁盘的未分配空间组成一个逻辑卷. 不同的是,RAID5卷在存储数据时,会另外根据数据内容计算出其奇偶校验,并将奇偶校验一并写入到RAID5卷.当某块磁盘出现故障时,系统可以根据奇偶校验,推算生成出现故障的数据.因此RAID5卷具有容错功能. 1.由3-32块磁盘内分别选择未分配空间来组成RAID卷: 2.每个成员的容量大小相同: