Linux 磁盘、文件系统管理

2016-08-25



本章内容

□磁盘结构

分区类型

管理分区

管理文件系统

挂载设备

管理虚拟内存



第一篇:Linux磁盘管理

概述:

计算机的五大组成部件:输入设备、输出设备、存储器、运算器、控制器,其中,输入、输出设备称之为I/O设备,运算器和控制器称之为CPU ,存储器如内存、硬盘等。计算机只有CPU和内存其实就可以独立完成计算任务了,只是其输入输出都在内存中实现,但是,内存属于随机存储单元,断点就会导致数据丢失,因此,我们就通过其他辅助设备来弥补内存的不足,这些辅助设备称之为外存,如:磁盘,光驱等。



一、硬盘

1.硬盘接口类型:

2.硬盘:固态硬盘和机械硬盘

3.硬盘存储术语:

head:磁头

track:磁道

平均寻道时间:5400rpm,7200rpm,10000rpm,15000rpm

cylinder: 柱面 (分区划分基于柱面)

secotr: 扇区,512bytes




二、设备文件

1.一切皆文件:

open(), read(), write(), close()

2.设备类型:

块设备(block):随机访问,数据交换单位是“块”;

字符设备(character):线性访问,数据交换单位是“字符”;

3.设备文件:FHS  /dev

关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

4.设备号:

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

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

5.mknod命令

make block or character speclal files

语法:mknod [OPTION]... NAME TYPE [MAJOR MINOR]

-m MODE :创建后的设备文件的访问权限;




三、设备文件名:ICANN

1.磁盘:

IDE:/dev/hd[a-z]  例如:/dev/hda,/dev/hdb

SCSI,SATA,USB,SAS:

不同设备:/dev/sd[a-z]

2.分区:

同一设备上的不同分区:1,2...

/dev/sda#:  如:/dev/sda1...

CentOS 6和7统统将硬盘设备文件表示为/dev/sd[a-z]

3.引用设备的方式:

设备文件名、卷标、UUID




四、磁盘分区:MBR、GPT

MBR: 0 sector

1.Master Boot Recor,1982年,使用32位表示扇区数,分区不超过2T

2.如何分区:按柱面

3.0磁道0扇区:512bytes,分为三部分

446bytes: bootloader,程序,引用启动操作系统程序;

64bytes:分区表,每16bytes: 标识一个分区,一共只能有4个分区;

2bytes: MBR区域的有效标识,一般55AA为有效;

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

主分区和扩展分区的标识:1-4

逻辑分区只能从5开始(5+)



GPT分区:

GUID(Globals Unique Identifiers)partition table

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

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

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




五、管理磁盘:

1.列出块设备:lsblk

2.创建分区使用:

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

gdisk创建GPT分区

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

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



fdisk命令

1.语法fdisk -l [-u] [device...]

列出指定磁盘设备上的分区情况

2.管理分区

fdisk device

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

3.常用命令

n:创建新分区

d:删除已有分区

t:修改分区类型

l:查看所有分区ID

           w:保存并退出

q:不保存并退出

m:查看帮助信息

p:显示现有分区表

注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别



同步分区表

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

cat /proc/partations

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

新增分区用

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

partprobe [/dev/DEVICE]




六、创建文件系统

相关概念:

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

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



1.格式化:

低级格式化(分区之前进行,划分磁道)

高级格式化(分区之后进行,创建文件系统)

2.磁盘分区划分为元数据区和数据区

元数据区:

文件元数据(inode):

包含文件的大小、权限、属主属组、时间戳、数据块指针

符号链接文件(软链接):

存储数据指针的空间当中存储的是真实文件的访问路径;

设备文件

存储数据指针的空间当中存储的是设备号(major,minor)

3.文件系统组织结构中的常见术语

block groups(块组),块组内分为元数据区(inode table中又存放indoe)和数据区(block)

bitmap index :位图索引 (了解哪些inode已经使用,哪些还没使用)

block bitmap:了解哪些磁盘块已经使用,哪些还没有使用;

superblock:记录当前整个分区上有哪些块组,以及块组的划分



Linux 的文件系统

1.VFS虚拟文件系统接口,当两个层次之间不衔接时,所加的中间层。因此linux可以引入众多的文件系统类型。

2. 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:未经处理或者未经格式化产生的文件系统

3.根据其是否支持"journal"功能

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

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

4.文件系统的组成部分:

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

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

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



内核及文件系统的组成部分:

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

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




七、文件系统管理工具


1.创建文件系统的工具

mkfs命令:(按两次Tab键)

   (1) # mkfs.FS_TYPE /dev/device

ext4,xfs,btrfs,vfat

示例:

创建ext2文件类型

在ext2基础上创建ext3文件类型(区别:多了一个创建日志的功能)

(2) # mkfs -t FS_TYPE /dev/DEVICE  如:(mkfs -t ext2=mkfs.ext2)

-L ‘LABEL‘: 设定卷标



mke2fsext系列文件系统专用管理工具

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

-b {1024|2048|4096}:指明块大小,默认为4K,最大不超过4K

-L ‘LABEL‘ :指明卷标

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

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

-i#: 指明indoe与字节的比率;即每多少个字节创建一个inode;此大小不应该小于block的大小

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

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

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

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

-O ^FEATURE:关闭指定特性



e2label命令:卷标的查看,预设定

查看:e2label device



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

adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems;注意:块大小不可修改

语法:tune2fs [options] devicd

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

      -L ‘LABEL‘:修改卷标

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

-j: 将ext2升级为ext3

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

      -o: 开启或关闭文件系统的默认挂载选项,–o ^acl

      -U UUID: 修改UUID号



dumpe2fs命令

显示ext系列文件系统的属性信息

语法:dumpe2fs [-h] device

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




用于实现文件系统检测的工具

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

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

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



fsck命令

fsck - check and repair a Linux file system

fsck.FS_TYPE

fsck -t FS_TYPE  如:fsck -t ext4=fsck.ext4

-a: 自动修复错误

-r: 交互式修复错误

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



e2fsckext系列文件专用的检测修复工具

语法:e2fsck [OPTIONS] device

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

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



blkid:块设备属性信息查看

语法:blkid[OPTION]...[DEVICE]

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

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

findfs:查找分区

findfs[options] LABEL=<label>

findfs[options] UUID=<uuid>




八、其他文件系统

1.swap文件系统

Linux上的交换分区必须使用独立的文件系统;且文件系统的System ID必须为82;

创建swap设备:mkswap命令

语法:mkswap [OPTIONS] device

-L LIBEL:指明卷标

-f:强制

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

# mkfs.vafat device




第二篇:文件系统的使用:挂载

一、相关概念

1.首先要"挂载":mount和unmount卸载命令

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

3.挂载点:mount_point,作为另一个文件系统的访问入口

1)事先存在;

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

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

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

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



二、mount命令

挂载方法:mount DEVICE MOUNT_POINT

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

语法:mount [-fnrsvw] [-t vfstype] [-o options] device dir

device:指明要挂载的设备;

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

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

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

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

dir:挂载点

事先存在;建议使用空目录

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



mount命令用法

语法:mount [-nrw] [-t vfstype] [-o options] device dir

命令选项:

-r: readonly,只读挂载

 -w: read and write, 读写挂载

-n: 在默认情况下,设备挂载或卸载的操作同时会更新至/etc/mtab文件中,-n 用于禁此特性

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

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

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

mount -L LABEL dir

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

mount -U UUID dir

-B, --bind: 将目录绑定至另一个目录上,作为其临时访问入口



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

async:异步模式

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

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

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

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

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

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

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

remount:重新挂载

ro:只读

rw:读写

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

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

# mount -o acl device dir

# tune2fs -o acl device

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



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

# mount

# cat /etc/mtab

# cat /proc/mounts

挂载光盘:

mount -r /dev/cdrom mount_point

光盘设备文件:/dev/cdrom,/dev/dvd

挂载U盘:

事先识别U盘的设备文件

挂载本地回环设备:

# mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT



unmount命令

正在被进程访问到的挂载点无法被卸载

查看挂载情况:

# findmnt MOUNT_POINT

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

lsof MOUNT_POINT

# fuser -v MOUNT_POINT

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

fuser -km MOUNT_POINT

卸载:

umount DEVICE

umount MOUNT_POINT




交换分区的启用和禁用:

创建交换分区的命令:mkswap

启用:swapon

swapon [OPTION][DEVICE]

-a:所有设备

禁用:swapoff

swapoff DEVICE



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

/etc/fstab每行定义一个要挂载的文件系统及相关属性;

6个字段:

1)要挂载的设备

设备文件;

LABEL(LABEL="")

UUID(UUID="")

伪文件系统

2)挂载点

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

3)文件系统类型

4)挂载选项

defaults:使用默认挂载选项

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

5)转储频率

0:从不备份

1:每天备份

2:每隔一天备份

6)自检次序

0:不自检;

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

2:次级自检

...

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




df命令:文件系统空间占用等信息的查看工具:

df [OPTION]... [FILE]...

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

-H 以1000为单位

-T 文件系统类型

-h: human-readable

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

-P: 以Posix兼容的格式输出

du命令查看某目录总体空间占用状态:

du [OPTION]... DIR

-h: human-readable

-s: summary

时间: 2024-10-13 00:16:16

Linux 磁盘、文件系统管理的相关文章

Linux之文件系统管理

文件系统不仅包含着文件中的数据而且还有文件系统的结构,不同Linux发行版本之间的文件系统差别很少,主要表现在系统管理的特色工具以及软件包管理方式的不同,文件目录结构基本上都是一样的. Linux的文件结构是单个的树状结构,根目录是"/",其他目录都要位于根目录下.每个目录一般都存放 特定类型的文件,下表常见目录: /  根目录,只能包含目录,不能包含具体文件 /bin  存放可执行文件.很多命令就对应/bin目录下的某个程序,例如 ls.cp.mkdir./bin目录对 所有用户有效

linux高级文件系统管理概述:处理交换分区、设置文件系统配额、配置raid和逻辑卷

8月26号,学习了linux(CentOS6.8)文件系统管理,内容颇多,主要分为如下几个部分: 一.处理交换分区和文件及移动介质的使用 二.常见工具free,df,du,dd的使用 三.设置文件系统配额 四.配置raid 五.配置逻辑卷 六.btrfs文件系统 一.处理交换分区和文件及移动介质的使用 交换分区是系统RAM的补充 基本设置包括: 创建交换分区或者文件 使用mkswap写入特殊签名 在/etc/fstab文件中添加适当的条目 使用swapon -a 激活交换空间 1.挂载交换分区

linux高级文件系统管理——btrfs

前几天,关于高级文件系统方面也给大家分享过RAID和LVM,今天给大家分享的这款文件系统可能比这两者更先进,可以将其二者合二为一.第一,它可以使用磁盘或者分区大小不一样的设备组建RAID:第二,它可以做到像LVM一样,随时扩展以及缩减使用空间,LVM支持在线扩展,但不能支持在线缩减,btrfs同时支持在线扩展和在线缩减:并且支持一条命令直接创建出带RAID功能的LV.所以个人体验之后觉得相当不错,分享于大家. 一.btrfs文件系统定义 1.Btrfs (B-tree, Butter FS, B

谢烟客---------Linux之文件系统管理创建与挂载

文件系统在哪实现? 内核 内核级文件系统的组成?模块.用户空间中的程序 哪些是内核级文件系统?除了分布式文件系统 模块的定义 中间层定义 文件如何按名存取 查找文件.创建文件.存储文件文件系统.格式化 swap,虚拟内存 日志型文件系统和非日志型文件系统工作原理 超级块 文件按名存取的实现 文件系统实现按名存取将分区后的存储空间划分为数据区和元数据区. 数据区:   存储大小相同的数据块    元数据区:有多个inode块,每个inode块中存储:filename,perm,owner,grou

linux高级文件系统管理——RAID

作为大型企业,很多时候数据量相当庞大,由此以来对磁盘空间的要求比较高,更重要是的对数据的完整性的追求.所以单独的磁盘不仅空间使用满足不了,数据的完整性更是无从谈起,所以也就出现了专业的数据存储技术,而RAID是其中应用比较广泛,也是历史比较悠久的存数据储技术了.今天就给大家分享一下RAID的一些基本概念以及软件RAID的实现方法. 一.RAID的定义 RAID:Redundant Arrays of Inexpensive(Independent) Disks 1988年由加利福尼亚大学伯克利分

linux高级文件系统管理——LVM

在企业里面,很多时候,我们也无法估量应用程序对磁盘空间的使用量,如果我们使用用传统的文件系统,磁盘分区一旦确定下来以后,就再也无法更改使用空间了,如果需要更改就必须让应用程序离线后,对原有分区的数据进行备份,然后再对磁盘进行重新分区格式,重新复制原来的数据放回新的磁盘分区上,由此带来的麻烦是不言而喻的,如果是可以离线的业务,到也好说,如果是不允许离线的业务,那就影响更大.所以一代全新的文件系统LVM的问世,打破了这一技术瓶颈.它允许用户使用容量不不统一的硬盘和分区组合在一起,构成一个逻辑空间,用

Linux 第15天: (08月29日) Linux高级文件系统管理

本章内容设定文件系统配额设定和管理软RAID设备配置逻辑卷设定LVM快照btrfs文件系统 配置配额系统综述在内核中执行以文件系统为单位启用对不同组或者用户的策略不同根据块或者节点进行限制执行软限制(soft limit)硬限制(hard limit)初始化分区挂载选项:usrquota.grpquota初始化数据库:quotacheck 为用户设定配额执行开启或者取消配额:quotaon.quotaoff直接编辑配额:edquota username在shell中直接编辑:setquota u

谢烟客---------Linux之文件系统管理挂载

思路 只能挂载在根分区,根由谁来挂载? mount命令详解 分区, 创建.调整.查看文件系统,挂载文件系统.显示挂载信息.验证挂载 写时复制和原处读写 同步IO和异步IO的区别 在创建文件系统之后,如果要使用此文件系统,应该将设备/分区关联至根设备的某个目录之下 根由内核管理,是一切的起始 根的由来 1)刚开机时,post加电自检 2)自检后,装载bootloader 3)bootloader装载用户 所选择的操作系统内核(系统启动装载的第一个程序) CentOS 7 :/etc/grub2.c

Linux:文件系统管理

分区: 类型: 主分区: 最多只能分四个. 扩展分区: 最多只能分一个.算作主分区的一种.所以,主分区加扩展分区最多只能有四个. 但是扩展分区不能储存数据和格式化.必须划分为逻辑分区才能使用. 逻辑分区: 逻辑分区是在扩展分区中划分的. 如果是IDE硬盘,Linux最多支持59个逻辑分区. 如果是SCSI硬盘,Linux最多支持11个逻辑分区. 分区号:1-4留给 主分区和扩展分区.逻辑分区从5开始. 文件系统: ext2:   是ext文件系统的升级版本. RedHat Linux 7.2版本

Linux基础之磁盘及文件系统管理(二)

磁盘和文件系统管理 文件系统管理工具: 创建文件系统的工具 mkfs mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat, ... 检测及修复文件系统的工具 fsck fsck.ext2, fsck.ext3, ... 查看其属性的工具 dumpe2fs, tune2fs 调整文件系统特性: tune2fs 内核级文件系统的组成部分: 文件系统驱动:由内核提供 文件系统箮理工具:由用户空间的应用程序提供 ext系列文件系统的管理工具: mkf