linux磁盘ssd机械硬盘分区,Linux磁盘管理——磁盘分区、文件系统和设备挂载

计算机有五大组成部件:输入设备、输出设备、存储器、运算器、控制器。输入输出设备我们统称为IO设备,运算器和控制器称为CPU,存储器有断电丢失数据的内存和数据持久存储的磁盘等。对于企业而言,用户数据就是资本,由此可见,一个合理的磁盘管理方案显得至关重要。如何创建一个符合特定业务的磁盘管理方案呢?下面就让我们一起来看看吧。

一、硬盘结构

对于Linux而言,一切设备皆文件,对于磁盘的访问就如同访问文件一样,因为磁盘使用的是文件系统接口。每一个文件都有一个文件作为它的访问入口,此文件称之为设备文件。如果同一个设备有两个,它们如何于文件系统相关联呢?Linux中将同一种设备文件用主设备好来标识,对于同种设备的多个设备则用次设备号来表示。[root@linux ~]# ls -l /dev/sda

brw-rw---- 1 root disk 8, 0 Aug 25 17:21 /dev/sda

上面中的8就是主设备号(major number),0是次设备号(minor number)。

硬盘有多种接口类型:

并行接口:IDE:133MB/S,SCSI:640MB/S

串行接口:SATA:6Gbps,SAS:6Gbps,USB:480MB/S

硬盘由盘片、主轴马达、磁头和磁臂等组成,盘片上有磁性的存储介质,我们将盘片划分为磁道(track)、柱面(cylinder)和扇区(sector:512bytes)等几个部分,在centos6中分区以柱面为单位,而在centos7中则以扇区为单位。

除了机械硬盘外,还有更快速的固态硬盘(ssd),和传统硬盘技术不同,固态硬盘没有马达和盘片,厂商用适当的闪存配合一些控制芯片就可以制造固态硬盘,其耗电量仅有传统机械硬盘的5%,读取速度是机械硬盘的3倍,写入速度是传统磁盘的1.5倍,如果采用pcie的接口甚至可以达到内存的存取速度,且没有任何噪音。

二、磁盘分区

为什么要对磁盘分区呢?磁盘分区的主要作用是保护数据,同一个磁盘如果文件系统发生故障必须重新格式化(这样的情形应该很少),如果只有一个分区则整个硬盘的数据都会丢失,如果磁盘分为了好几个区则只会丢失当前分区的数据。但是对于异常稳定的Linux系统,其文件系统并不是那么容易出问题,而且Linux的数据一般都会备份,所以单从数据安全来说,Linux并没有必要将硬盘分为多个区。但是Linux经常面临复杂的业务环境,有的业务可能有很多小文件,有的业务会生成大文件,当他们运行在同一个系统上时就必须要有针对的进行分区。分区方式:

MBR:使用32位表示扇区数,分区不超过2T,最多有4个主分区,如果有需要可以将一个主分区替换为扩展分区,然后在扩展分区下创建逻辑分区。mbr是传统的分区方式,现在大多数的分区仍然采用mbr的方式。mbr在0磁道(盘片的最外层)0扇区,共512个字节。

mbr分为三个部分:

第一部分:446bytes,存储boot loader,系统开机要加载的程序文件

第二部分:64bytes,存储分区表,每16bytes标识一个分区,一共存储4个,扩展分区里存放的是指向逻辑分区所在的分区信息,它在磁盘的其他地方存储。

第三部分:2bytes标识信息,55AA表示前面的信息是有效的

4cb7e95dc358ad5217d24444abc3da4e.png

GPT分区方式:

GPT是一种较新的分区方式,目前在市面上购买的电脑都是采用的gpt分区方式。GPT:GUID patition table 支持128个分区,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)。使用128位UUID 表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位。UEFI (统一扩展固件接口)硬件支持GPT。

38016f9cdd7a7bc0d93ca2d5e3839d75.png分区工具

根据不同的分区方式有不同的分区工具,mbr分区通常使用fdisk工具

fdisk:管理磁盘分区表

选项:

-b:指定扇区大小

-c:指定兼容模式,dos或nondos默认是nondos模式,在centos7中被废弃

-l:列出指定设备的分区表并退出

-s:打印指定分区的大小

-u:指定用扇区或柱面来表示磁盘大小

分区时的命令选项:

a:用*来表示启动分区

6ce76bea0844cb6feea058d764e11e9b.png

b:编辑BSD磁盘

c:标识dos标记

9e48aadb77952e91f4a1d168b9ad9eb1.png

d:删除一个分区

g:创建一个新的空GPT分区表,创建完重启虚拟机后提示重装操作系统

l:列出已知的分区类型

n:添加一个新的分区

o:创建新的空dos分区表

q:不保存退出

t:改变分区系统编号,给boot分区改变文件系统后系统无法启动

u:改变磁盘大小单位,在sector和cylinder间切换

v:校验分区表

w:将分区表写入磁盘并退出

x:专业人员使用选项

专业级的命令:

b:移动分区的起始位置

c:改变磁盘柱面数

d:打印mbr

e:列出扩展分区的信息

f:修复磁盘顺序

g:创建一个SGI的分区表

h:改变磁头的数量

i:改变磁盘标识符,十六进制

r:回到主菜单

s:改变每个磁道的扇区数

查看内核是否已经识别新的分区:[root@linux ~]# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda      8:0    0  200G  0 disk

├─sda1   8:1    0  500M  0 part /boot

├─sda2   8:2    0 48.8G  0 part /

├─sda3   8:3    0    4G  0 part [SWAP]

├─sda4   8:4    0    1K  0 part

└─sda5   8:5    0 19.5G  0 part /testdir

sr0     11:0    1  7.2G  0 rom

[root@linux ~]# cat /proc/partitions

major minor  #blocks  name

8        0  209715200 sda

8        1     512000 sda1

8        2   51200000 sda2

8        3    4194304 sda3

8        4          1 sda4

8        5   20480000 sda5

11        0    7587840 sr0

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

新增分区用:

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

kpartx-a /dev/DEVICE -f: force

删除分区用:

partx-d --n M:N /dev/DEVICE

centos6: --nr N-M

CentOS 5,7: 使用partprobe

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

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

parted /dev/sdb mklabel gpt|msdos 将磁盘转换为GPT格式或MBR格式

parted /dev/sdb print 打印某个磁盘分区表

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

parted /dev/sdb rm 1 删除磁盘分区1

parted -l 打印所有磁盘的分区表分区格式化

(一)文件系统定义:

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

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

(二)常见文件系统类型

1、Linux文件系统:

ext2, ext3, ext4扩展文件系统

VFS:Linux的虚拟文件系统

xfs(SGI), btrfs(Oracle)

reiserfs, jfs(AIX), swap

交换分区:swap光盘:iso9660

2、Windows:fat32, ntfs

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

4、网络文件系统:NFS(linux常用网络文件系统), CIFS(windows局域网文件系统)

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

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

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

8、ext2和ext3、ext4的区别:

ext2:非日志文件系统ext3、ext4:日志文件系统

速度稍快    速度稍慢

数据安全性低    数据安全性高

9、查前内核支持的文件系统:cat /proc/filesystems

(三)文件系统分类

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

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

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

2、文件系统的组成部分:

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

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

(四)创建文件系统

mkfs命令:

(1) mkfs.FS_TYPE /dev/DEVICE

.ext4  格式化为ext4格式

.xfs   格式化为xfs格式

.btrfs 格式化为btrfs格式

.vfat  格式化为vfat格式

(2) mkfs -t FS_TYPE /dev/DEVICE

-L 'LABEL': 设定卷标

ext4  格式化为ext4格式

xfs   格式化为xfs格式

btrfs 格式化为btrfs格式

vfat  格式化为vfat格式

(3)创建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:关闭指定特性

(4)文件系统卷标

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

blkid:块设备属性信息查看

blkid [OPTION]... [DEVICE]

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

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

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

e2label DEVICE [LABEL]

(5)findfs :查找分区

findfs [options] LABEL=

findfs [options] UUID=

(五)调整文件系统

(1)tune2fs调整ext文件系统属性

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

-L "LABEL":修改卷标

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

-j: 将ext2升级为ext3(无损操作),不可逆操作

-o: 调整文件系统的默认挂载选项,–o ^acl(挂载文件系统访问控制列表)

-O: 文件系统属性启用或禁用, –O ^has_journal(启用或禁用日志功能)

-U UUID: 修改UUID号

-c #:指定挂载次数达到#次之后进行自检(0、-1关闭自检功能)

-i #:指定挂载使用#天后进行自检

-l:显示超级块中的信息

(2 )dumpe2fs:显示文件系统属性信息

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

(3)文件系统检测和修复

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

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

fsck: File System Check

fsck.FS_TYPE

fsck -t FS_TYPE

-a: 自动修复错误

-r: 交互式修复错误

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

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

-y:自动回答为yes

-f:强制修复

分区挂载

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

卸载:将某文件系统与当前根文件系统的关联关系移除

(1)mount设备 挂载点

设备:UUID、LABLE、/dev/sd#

1、设备文件:例如/dev/sda5

2、 卷标:-L 'LABEL', 例如 -L 'MYDATA'

3、 UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'

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

挂载点:

1、目录得事先存在

2、目录没有被其它进程使用

3、目录下原有文件在挂载完成后会被临时隐藏

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

(2)umount设备/挂载点

注意:挂载的设备(文件系统)没有被其它进程使用

(3)mount常用命令选项

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

-r: readonly,只读挂载

-w: read and write, 读写挂载

-n: 不更新/etc/mtab,隐藏挂载

只有cat /proc/mounts可以查看到实际是挂载中的

df -h cat /etc/mtab 都查看不到真实挂载状态

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

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

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

-B, --bind: 绑定目录到另一个目录上(写入fstab文件时,需要使用none bind)

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

async:异步模式

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

atime/noatime:是否每次更新atime

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

auto/noauto:是否支持自动挂载,需要与-a选项并用

exec/noexec:是否支持文件系统上的程序自动运行

dev/nodev:是否允许在此文件系统上启用设备文件访问设备内容

loop:挂载为本地回设备(挂载ISO镜像文件时)

remount:重新挂载

ro:只读

rw:读写

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

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

suid/nosuid:是否支持文件系统上程序的suid和sgid权限

Defaults:相当于rw, suid, dev, exec, auto, nouser, async

注意:默认挂载选项启用的权限是比较丰富的,作为管理员使用时要谨慎对待

对于外来设备挂载时一定要关闭suid和exec功能,防止病毒***与***自动提权

(4)查看挂载情况:

findmnt MOUNT_POINT

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

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

lsof MOUNT_POINT

fuser -v MOUNT_POINT

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

fuser -km MOUNT_POINT 正在访问当前目录的用户会被直接踢出登录终端

(6)文件挂载配置文件:/etc/fstab

每行定义一个要挂载的文件系统;

要挂载的设备或伪文件系统:UUID(UUID="")、LABEL(LABEL="")、设备文件名、伪文件系统名称(proc, sysfs)——当然使用UUID最专业,也最精确了,使用其它名称容易出错。

挂载点

文件系统类型

挂载选项:defaults    相当于rw, suid, dev, exec, auto, nouser, async功能集合

转储频率(每多少天做一次完全备份) 0:不做备份 1:每天转储 2:每隔一天转储

自检次序(只有根可以为1)0:不自检1:首先自检

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值