磁盘分区及创建文件系统

机械式硬盘

1.平均寻道时间:ns

2.磁盘转速:rpm 5400 7200 10000rpm 15000rpm

track:磁道

sector:扇区,512Bytes,现在我们所说的扇区实际上是平均值

cylinder:柱面,从磁道向所有盘面做投影

partition:分区,基于柱面来划分的存储空间

head:磁头,每个磁盘表面都有一个磁头

设备文件:/dev

设备文件是关联到硬件设备的驱动程序和设备的访问入口

设备号:

major:主设备号,区分设备的类型,用于标明设备所需的驱动程序

mijor:次设备号,区分两种类型下的不同设备,是特定设备的访问入口

mknod命令:

mknod - make block or character special files 制造一个块或者字符类型的文件

mknod [OPTION]... NAME TYPE [MAJOR MINOR]

设备类型:

块设备:b(block) 用于随机访问的设备,数据存储和交换的单位是块。

字符设备:c(character) 用于线性访问的设备,数据的交换单位一般是字符。

设备文件名:IANA--->ICANN

所有设备放在/dev/下面

IDE:hd[a-d]

SCSI/SATA/SAS/USB:sh[a-z]  sdab

RHEL,Centos6开始:所有的接口类型的硬盘设备统一命名为sd[a-z]

设备的引用方式:

设备的文件名

卷标(Volume Lable)

UUID:全局唯一标识符,128bit

如何使用一个新的硬盘设备?

分区

创建文件系统(格式化)

挂载分区

为何分区?

1.优化I/O性能

2.实现磁盘空间的配额限制

3.可以进行高速修复

4.隔离系统文件和其他程序文件

5.安装多个操作系统

如何分区?

MBR分区:硬盘空间小于2TB

MBR:Master(Main) Boot Record,主引导记录,起源于1982年。

0磁道0扇区:整个磁盘的最开始的位置 512Byte

446Byte:boot loader,引导加载程序,默认是GRUB

64Byte:Partition table,分区表,每16Bytes表明一个分区的内容:因此一个有四个主分区

注意:

1.主分区加扩展分区最多可以有四个,其分区表位的编号依次为1.2.3.4

2.逻辑分区的编号从5开始,不管前面的四个数字编号是否被占用

2Bytes:结束标记,55AA

GBT分区:硬盘空间大于2TB

GUID Partition Table, GUID分区表,支持128个分区

UEFI(统一扩展固件接口)的硬盘可以支持GPT

通常使用的分区工具:

fdisk:用于管理和创建MBR分区,对于一块硬盘来说只能管理十五个分区

gdisk:GNU disk 用于创建和管理GPT分区

如果使用fdisk或者gdisk命令对于已有分区并挂载使用的磁盘的剩余空间进行再次分区的信息,即便是保存了,也不会被内核重新读取,如果要让内核识别此类分区:

1.重启计算机

2.partprobe命令或者partx命令强制内核重读分区表,

在centos5/7 partprobe [device] 如果省略了设备名,则表示重读所有磁盘的分区表

在centos6/7 partx -a [device]

kpartx -af [device]

查看分区后内核有没有识别的目录: cat /proc/partitions

强制内核读取分区后的信息:partprobe /dev/*

fdisk分区实例:

fdisk -l [-u] [device...]  查看指定磁盘的分区表,如果省略device参数,则显示所有磁盘设备的分区表

fdisk device

fdisk子命令

d 删除分区

l 显示此磁盘的详细信息

m 帮助菜单

n 添加分区

n的子命令

e 扩展分区

p 主分区

l 逻辑的

p 在交互模式中显示分区表

q 不保存,退出编辑

t 修改Partition系统标识

w 保存并且退出

parted:GNU 高级分区工具,实时生效

parted - a partition manipulation program

parted [options] [device [command [options...]...]]

parted /dev/sdb mklabel gpt|msdos

parted /dev/sdb print

parted /dev/sdb mkpart primary 1 200

parted /dev/sdb rm 1

~]# echo ‘- - -‘ > /sys/class/scsi_host/host2/scan

强制内核识别在开机状态下插上的SCSI接口的磁盘

写一个脚本,将一个命令所依赖的共享库文件复制到/mnt/sysroot/lib64目录中,如果库文件已经存在于目标目录中,就不复制。

#!/bin/bash

#

DEST=/mnt/sysroot/lib64

if [ ! -d $DEST ] ; then

mkdir -p $DEST

fi

until [ "$CMD" == ‘quit‘ ] ; do

read -p "give me a command: " CMD

if which --skip-alias $CMD &> /dev/null ; then

for I in $(ldd $(which --skip-alias $CMD) | grep -o "/[^[:space:]]\+") ; do

SRCLIB=$(basename $I)

if [ ! -e ${DEST}${SRCLIB} ] ; then

cp $I $DEST

fi

done

else

echo "Command not invalid."

fi

done

4.30

创建文件系统:

FHS 文件系统层级标准

权限

文件的命名规则

为什么创建文件系统?

平面分类管理

空间分类管理

创建文件系统实际上就是给分区进行存储空间的逻辑编址。

格式化:

低级格式化

物理层面完成格式化,在磁盘设备出厂时,通过低级格式化来创建磁道,主要作用就是创建磁道

高级格式化

分区之后进行的,主要作用是用来创建文件系统,为分区构建逻辑编址单元

无论是簇还是块都是将一个或者多个扇区组织在一起,共同完成数据存储

簇: 512B 1024 2048 4096 8192 16384 32768 655536

块:1024 2048 4096

注意:

1.一个块只能放置一个文件的内容,一个文件可以占用多个块

2.如果在某个分区中,将创建大量的小文件,把块划分的小一些,反之,块就大一些

3.如果分区空间比较大,块也应该大一些

在一个分区中创建了文件系统:

首先,会将分区划分成大小相等的若干块

元数据块

元数据---inode(index node)

文件的属性:

文件的大小

文件的权限

文件的所有者

文件的时间戳

数据块指针

存放元数据的固定的存储空间称为:inode

每个inode都有其对应的inode编号

数据块

存放文件中所包含的流式数据

特殊文件:

设备文件:block special或者character special

仅仅是将元数据中的数据块指针换成了设备号

符号链接文件:symbolic link

仅仅是将元数据中的数据块指针换成了另一个文件的访问路径

这类文件只占据元数据区域,没有数据块占用。

随着磁盘空间越来越大,我们划分块的数量也越来越多,我们管理起来也越来越不方便,划分块组可以解决该问题。

块组:每个块组有独立的元数据块和数据块

存放数组的时候,以块组内的数据块优先选择,如果块数组内的数据块不够,可以通过存储策略来请多个块组协调存储

超级块:主要定义了有多少个块组,以及每个块组的边界。

为了防止超级块发生故障导致整个文件系统崩溃,要对超级块进行冗余备份。

日志区域:对于数据的写入操作做记录的块,防止数据不一致

数据不一致通常都是由于不洁关机,不洁断电导致的。

一个完整的文件系统:

超级块, inode, inode bitmap, block bitmap, data block, journal block。

想要查找/var/log/messages文件的内容,是怎样的过程?

首先查找/目录inode编号,从元数据区域中找到对应inode,再读取inode中的数据块指针,找到存放/目录内容的数据块;

然后,在数据块中查找名称为var的文件名,如果有,就定位其inode编号,再到元数据区域中查找对应编号的inode,再根据数据块指针找到保存var目录内容的数据块;

再然后,在该数据块中查找名称为log的文件名,如果有,就定位其inode编号,再到元数据区域中查找对应编号的inode,再根据数据块指针找到保存log目录内容的数据块;

之后,在该数据块中查找名称为messages的文件名,如果有,就定位其inode编号,再到元数据区域总查找对应编号的inode,再根据数据块指针找到messages文件对银的数据块,就可以读取数据;

系统调用

Linux支持的文件系统

位于内核空间的文件系统驱动

1.内核的一部分

2.内核的模块

位于用户空间的文件系统管理应用程序

Linux自己的文件系统:

ext ext2 ext3 ext4(支持最大分区50TB,可以做根分区,可以做启动分区)

xfs(目前为止企业级的64位文件系统,最大分区可以支持500TB,也可以做根和启动分区)

reiserfs(良好的反删除功能)

btrfs 平衡树文件系统(技术预览版)

光盘文件系统:iso9660

网络文件系统:NFS  CIFS

集群文件系统:gfs2  ocfs2

内核级的分布式文件系统:ceph

伪文件系统:proc  sysfs  tmpfs  hugepagefs

Windows的文件系统:vfat  vtfs

Unix文件系统:ufs  ffs  jfs  zfs

交换分区文件系统:swap

用户空间中的分布式文件系统:mogilefs  moosefs  glusterfs

对于不同的发行版的Linux:都有其默认的文件系统选择:

RHEL  centos

5   ext3

6   ext4

7   xfs

写一个脚本,如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中;

#!/bin/bash

#

if who | grep -q "\<hacker\>" ; then

for I in $(who | grep "\<hacker\>" | cut -d ‘ ‘ -f3-5 --output-delimiter=‘ ‘); do

echo -n $I >> /var/log/login.log

done

fi

管理文件系统:

创建文件系统:

mkfs

mkfs.ext3   mkfs.xfs    mkfs.btrfs   mkfs.ext2    mkfs.ext4

文件系统监测和修复系统:

fsck

fsck.ext3  fsxk.ext3  fsck.ext4

文件系统属性查看工具:

dumpe2fs

文件系统的属性调整工具:

tune2fs

创建文件系统工具:

mkfs命令:

mkfs - build a Linux filesystem

mkfs [options] [-t type] [fs-options] device [size]

mkfs -t ext2 /dev/sdb1

注意:

1.不要使用磁盘设备名称和扩展分区设备作为mkfs命令的参数,如果使用磁盘设备作为mkfs的参数,所有的分区都被删除。如果使用扩展分区作为mkfs的参数,所有的逻辑分区都将被删除

2.能够作为mkfs命令参数的设备,是主分区设备和逻辑分区设备

如果只是计划创建ext系列文件系统的话,可以使用mke2fs命令:

mke2fs:

mke2fs - create an ext2/ext3/ext4 filesystem

常用选项:

-b block-size  在创建文件系统时,调整块的大小

-i bytes-per-inode  指明inode与字节的比率,即:多少个字节可以建一个inode,默认为16384

-j  创建有日志功能的文件系统,就是ext3

-N number-of-inodes  直接指明要给此文件系统创建的inode的数量

-m reserved-blocks-percentage  指定为超级用户root保留的磁盘空间的百分比,默认值是5

-t fs-type  指定文件系统类型 ext2 ext3 ext4 默认是ext2

-O [^] feature[,...]   关闭或者开启文件系统的特性

-L volume-label   为文件系统指定卷标

-F  强制创建文件系统

-E  用户指定的额外文件系统属性

如果只是想要修改ext文件系统的卷标,可以使用e2label命令

e2label - Change the label on an ext2/ext3/ext4 filesystem

e2label device [ new-label ]

注意:如果不加卷标信息,表示查看指定设备的卷标

如果添加了卷标信息,表示修改指定设备的卷标

如果想要修改ext系列的文件系统的属性,可以使用tune2fs命令

tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems

调整那些在ext2.3.4文件系统上的可修改的参数:

常用的选项:

-j  将ext2文件系统修改为ext3

-m reserved-blocks-percentage  修改为超级用户root保留的磁盘空间的百分比

-o  [^]mount-options[,...]  修改文件系统的默认挂载选项

-r reserved-blocks-count  修改为超级用户预留的磁盘空间块的数量

-L volume-name  修改文件系统的卷标

-O [^]feature[,...]  修改文件系统的特性,将其关闭或者启用

-l  显示超级块的信息,相当于dumpe2fs -h

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

fsck

-t fstype 指定要检测的文件系统类型

-a 无需交互自动修复所有问题

-r 交互式修复问题,

ext系列文件系统专门的文件检测修复工具:

e2fsck

-y 在交互过程中的说有问题,都以yes来回答

-f 强制检测修复,即使文件系统处于clean状态,

blkid

查找和显示属性的工具

blkid -L label  根据卷标进行查找

blkid -U uuid  根据UUID进行查找

findfs

find a filesystem by label or UUID  查找一个文件通过卷标或者UUID

findfs LABEL=label

findfs UUID=uuid

创建swap文件系统:

前提:分区类型必须是swap类型

修改的方法:在fdisk交互模式中,使用t命令将指定分区的类型修改为82即可

mkswap

set up a Linux swap area

-L, --label  设置交互分区的卷标

-f  强制执行

使用文件系统:挂载

根文件系统之外的其他文件系统想要被访问,都必须通过某种方式关联到根文件系统上,具体做法就是把其他文件系统装载到根文件系统中的某个目录之中,这个过程称为“挂载”用于关联其他文件系统的那个目录,称为挂载点。

挂载点:mount point 也就是其他文件系统的访问入口 例如: /boot

要求:

1.作为挂载点的目录必须事先存在

2.作为挂载点的目录应该是没有被使用或者不能被其他进程使用的目录

3.作为挂载点的目录一旦挂载文件系统,其内原有的文件将被隐藏

完成挂载操作使用mount命令:

mount - mount a filesystem

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

常用选项:

-r, --read-only 以只读的方式挂载目录文件系统,

-w, --read-write  以读写的方式挂载目标文件系统

-n,默认情况下,设备挂载或者卸载的情况下会同步更新到/etc/mtab中,如果在挂载时使用了-n选项,则表示我们要禁用此特性,即不挂载成功,也不会更新到/etc/ntab中

-t  -vfstype 指明要挂载的设备上创建的文件系统类型,如果省略该选项,mount命令会通过blkid来判断要挂载的目标设备的文件系统类型

-L  -LABEL 挂载文件系统时,使用卷标代替设备名称

-U  UUID  挂载文件系统时,使用UUID代替设备名称

-a  mount -a   按照/etc/fstab文件中填写的设备进行自动挂载

-o  option:

sync/nosync:同步/异步 操作

atime/noatime:文件或者目录被读取访问时是否更新访问时间戳

diratime/nodiraname:目录被读取访问时是否更新访问时间戳

ro/rw:是否只读/读写的方式挂载文件系统

dev/nodev:在此文件系统中是否允许创建设备文件

exec/noexec:在此文件系统中是否允许运行程序文件

auto/noauto:是否允许使用mount -a方式的挂载/etc/fstab中的文件系统

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

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

relatime/norelatime:是否参考inode访问的时间来修改其修改时间和改变时间

remount:不经卸载实现直接挂载,可以应用到新的挂载选项

acl:可以使文件系统支持facl功能

defaults:默认选项,包括rw,suid,dev,exec,auto,nouser,async,relatime

loop: 使用环回设备:将镜像文件挂载到挂载点

-B --bind 将某个绑定到另一个目录

卸载文件系统:

umount mount_point|device

挂载光盘:

1.保证光盘镜像文件放入虚拟机光驱

2.保证光驱处于“已连接”状态

3.创建光驱挂载点 mount -r /dev/sr0 mount_point

挂载优盘:

需要事先让系统识别优盘设备,然后根据设备进行挂载,/etc/sdc1

挂载交互分区:

swapon swapoff  挂载和卸载

-a: 自动挂载存储于/etc/fstab文件中的交互分区设备

df

-h

-t

-p

free

-k

-n

-g

/etc/fstab文件的格式:

共六个字段,使用空白字符分隔,

1.要挂载的设备

设备文件名

LABEL

UUID

伪文件系统

2.挂载点

swap设备无需挂载点,指定swap即可

3.文件系统类型

4.挂载选项:defaults

5.转储频率

使用dump命令备份分区的频率

0 表示不备份

1 每天备份一次

2 每隔一天备份一次

6.自动次序

0 不自检

1 优先自检 通常只设置在根文件系统上

2 次级自检

...

9 最低优先级自检

时间: 2024-10-05 04:47:21

磁盘分区及创建文件系统的相关文章

[9-1]磁盘分区、创建文件系统、挂载以及链接文件

本文旨在复习磁盘分区.创建文件系统.挂载以及链接文件的基本概念 知识储备 硬盘出厂其实不能写入数据的,是"盲盘",需要处理后使用,格式化分为2种 低格:将空白磁盘划分出柱面.磁道及若干个扇区,每个扇区又划分出标识部分ID.间隔区GAP和数据区DATA等.现在大多出厂已经完成低格,只需要用户磁盘分区即可. 高格:真正意义上的创建文件系统,明确存储设备或分区上的文件方法和数据结构,即在存储设备上组织文件的方法. 文件系统是用户存取磁盘文件操作的"代理人" 不同类型的操作

linux(十三)之磁盘分区、创建文件系统、挂载

前面学习了linux的用户管理 ,感觉是不是linux的多用户多任务的系统感觉十分了解了,但是其实并不然的.你还需要了解更多.接下来给大家分享的是 在vmware中添加硬盘创建分区,然后挂载到指定目录. 记住永远不要放弃自己正在追求的东西,即使有可能会追不到,也要享受其中的乐趣. 一.vmware中添加硬盘 首先大家要先安装 一个vmware虚拟机,相信大部分的人要学习linux都会使用到这个工具,所以这里我就不在介绍vmware了.进入正题 第一步:进入指定linux系统在vmware的设置

磁盘使用:分区,创建文件系统,挂载

虚拟机添加新硬盘 先为虚拟机添加块新硬盘 在虚拟机上右键点击, 出现设置,下一步点下面的添加, 出现硬盘,点击下一步 出现SCSI,继续下一步 点击创建新虚拟盘 继续下一步 最大磁盘大小 看你需求 我选的是120G, 点击将虚拟盘存储为单个文件 继续下一步 出现对话框 点击完成 在虚拟机点设置 就能看到有个新的硬盘 重启虚拟机 之后继续我们要操作的创建分区 进行对新硬盘的分区 查看系统是否有新的硬盘: fdisk -l或者lsblk 我用的是lsblk 如下有新硬盘了 接下来就进行分区了 有两种

分区、创建文件系统和挂载

分区 分区命令主要有fdisk (主要使用).gdisk(创建gpt类型的分区).parted(可以创建任何类型的分区,但是分区过程提示对于分区大小的提示较少) fdisk -l /dev/sdX 查看硬盘分区信息 -c (centos6) 打开或禁用dos模式 -u  (centos6) 切换显示的单位(扇区/柱面) -c (centos7) -c=dos -c=nondos -u  (centos7)  -u=cylinders  -u=sectors gdisk 功能类似于fdisk fd

文件系统管理之分区与创建文件系统

对于机械式磁盘,首先会经过生产厂商的低级格式化(划分磁道的过程),然后需要创建分区(根据柱面划分),最后经过高级格式化(格式化成使用的文件系统),再挂载(将设备关联至根文件系统),之后就可以正常的使用这个磁盘设备了 分区命令:fdisk 这个命令是一个交互式命令 fdisk -l [device] 查看当前系统所有磁盘设备(或某磁盘设备)上的分区,输出内容形似: 可以看出,分区是根据柱面划分的 fdisk device 实现对某设备进行分区相关操作 进入交互式模式之后,使用m子命令可以查看可以使

创建磁盘分区,创建逻辑卷组。

1.1 查看新增磁盘fdisk -l 1.2 首先从空的硬盘sdb上创建一个分区sdb1. 为接下来做LVM做准备.[[email protected]_11_3_centos ~]# fdisk /dev/vdb 1.3 为了后期便于维护管理,记得给分区加上标示,这样即使你不在的情况下,别人看到标示了就不会轻易动这块区域了. LVM的标识是8e,设置完成后记得按w保存 1.4 创建逻辑卷将新创建的一个分区/dev/vdb1转化成物理卷,主要是添加LVM属性信息并划分PE存储单元. 1.5 创建

Linux 磁盘分区类型和文件系统

当前主流的操作系统磁盘分区类型主要有以下两种: MBR分区 主分区系统之中只能有四个主分区,以第一块磁盘为例,在没有扩展分区的情况下只能有sda1,sda2,sda3,sda4四个,当需要多个分区时,可以将第四个主分区变成扩展分区,从而在扩展分区下面建立更多的分区. 扩展分区 只能有一个加上主分区只能有四个 本身不能格式化和写入数据,只是包含逻辑分区 逻辑分区 Linux之中可以有无限多个 在Windows之中A,B作为软驱盘符,C作为系统盘符,所以理论上只能有23个逻辑分区 分区容量单个分区容

番外篇:硬盘分区、创建文件系统

ls /dev/sd + tab:列出现有分区 fdisk -l /dev/sda :查看第一块分区信息 fdisk /dev/sdb :使用sdb进行分区 添加一块硬盘 输入fdisk /dev/sdb                              输入n 新建分区,此时显示分区类型,p为主分区,e为扩展分区             输入p新建主分区,显示分区号,默认为1                                                        

Linux磁盘分区管理--ext2和ext3文件系统逻辑结构分析

本文出自 "Pavel" 博客,请务必保留此出处http://pavel86.blog.51cto.com/8349178/1688277 Linux系统支持多种文件系统, 文件系统间的区别在于: 不同文件系统对同一块磁盘分区存储文件的结构不同. 举例来说相当于某些土豪买了500平住房: 有些工作狂会隔出1间卧室,1间客厅,1间厨房和5个工作间; 有些美食家会隔出3间卧室,3间客厅,4间厨房等等. 文件系统就相当于对于分割出不同性能的区域用于使用各自不同的方式存储数据. Ext(ext