磁盘级文件系统管理

Linux磁盘及文件系统管理

硬盘介绍

1.硬盘的接口类型  读写速度

IDE(ata):并口,133MB/s

SCSI:并口,Ultrascsi320, 320MB/S, UltraSCSI640, 640MB/S

SATA:串口,6gbps

SAS:串口,6gbps

USB:串口,480MB/s


2.每一种硬盘接口接的硬盘数量:

                             并口:同一线缆可以接多块设备;

                            IDE:两个,主,从

                            SCSI:宽带:16-1    窄带:8-1

                            串口:同一线缆只可以接一个设备;

3.硬盘:机械硬盘,固态硬盘;

机械硬盘:track:磁道      sector:扇区,512bytes    cylinder:柱面  分区划分基于柱面:

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





Linux的哲学思想:一切皆文件-------设备文件

设备类型:

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

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


设备文件:FHS  /dev     设备文件:关联至设备的驱动程序;设备的访问入口;

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

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

mknod命令:make block or character special files  创建设备文件的命令

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

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

举例:mknod -m 755 www b 5 1

磁盘的标识:

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

SCSI, SATA, USB, SAS: /dev/sd[a-z]

分区标识:/dev/sda#:  /dev/sda1, ...

注意:CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]#

引用设备的方式:设备文件名    卷标     UUID



磁盘分区表:MBR, GPT   

磁盘分区表介绍-----MBR

MBR:0 sector 在磁盘的第0号扇区 Master Boot Record

分为三部分:

第一部分:446bytes:bootloader, 程序,引导启动操作系统的程序;

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

          4主分区   3主1扩展:   n逻辑分区   

第三部分:2bytes:MBR区域的有效性标识;55AA为有效;

主分区和扩展分区的标识:1-4     逻辑分区:5+

课外作业:GPT

      在使用fdisk建立分区时,我们最大只能建立2TB大小的分区,如果你的磁盘(阵列)大于2TB,只能通过划分多个分区的方法才能充分利用磁盘容量,但对于使用大于2TB分区(比如5TB的分区)的朋友就会遇到问题了,要突破这个限制;我们先来了解下MBR(Master Boot Record)和GPT(GUID Partition Table).

GPT分区方法:

1.  parted /dev/sda  选择分区的磁盘

2.  mklabel  gpt 将MBR磁盘格式化为GPT

3.  mkpart primary 0 100  创建一个100M主分区

4.  mkpart primary 0  -1  将整块磁盘分成一个分区

5.  print 打印当前分区  然后quit退出  

注:mklabel msdos 将GPT磁盘转化成为MBR磁盘

分区创建工具:parted是GPT使用, sfdisk为ext系列硬盘使用;

磁盘分区

fdisk命令:

1、查看磁盘的分区信息:

fdisk -l [-u] [device...]:列出指定磁盘设备上的分区情况;

2、管理分区  fdisk  device

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

                常用命令:

n:创建新分区

d:删除已有分区

t:修改分区类型

l:查看所有已经ID

w:保存并退出

q:不保存并退出

m:查看帮助信息

p:显示现有分区信息

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

查看内核有没有识别分区:cat  /proc/partitions

通知内核强制重读磁盘分区表:CentOS 5:partprobe [device]

   CentOS 6,7:partx -a [device]  或者  kpartx -af [device]







创建文件系统mkfs工具使用介绍


1.  数据以及文件系统类型介绍

创建文件系统:格式化:低级格式化(分区之前进行,划分磁道)、高级格式化(分区之后对分区进行,创建文件系统)

文件系统里元数据区,数据区

元数据区:文件元数据:inode (index node)大小、权限、属主属组、时间戳、数据块指针

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

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

链接文件:访问同一个文件不同路径;

      硬链接:指向同一个inode的多个文件路径;

  特性:(1) 目录不支持硬链接;

        (2) 硬链接不能跨文件系统; 

(3) 创建硬链接会增加inode引用计数;       创建:ln  src  link_file

     符号链接:指向一个文件路径的另一个文件路径;

  特性:

        (1) 符号链接与文件是两人个各自独立的文件,各有自己的inode;对原文件创建符号链接不会增加引用计数;

        (2) 支持对目录创建符号链接,可以跨文件系统;

(3) 删除符号链接文件不影响原文件;但删除原文件,符号指定的路径即不存在,此时会变成无效链接;  注意:符号链接文件的大小是其指定的文件的路径字符串的字节数;

创建:ln -s  src link_file


1.1  VFS: Virtual File System

Linux的文件系统: ext2(无日志功能), ext3, ext4, xfs, reiserfs, btrfs

光盘:iso9660

网络文件系统:nfs, cifs

集群文件系统:gfs2, ocfs2

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

windows的文件系统:vfat, ntfs

伪文件系统:proc, sysfs, tmpfs, hugepagefs

Unix的文件系统:UFS, FFS, JFS

交换文件系统:swap

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

2. 文件系统管理工具mkfs  文件系统驱动:由内核提供

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

2.1 创建文件系统的工具mkfs

mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat, ...


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

mke2fs [OPTIONS]  device

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

mkfs.ext4 = 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与字节的比率;即每多少字节创建一个Indode; 

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

                 -m #:指定预留的空间,百分比;

 -O [^]FEATURE:以指定的特性创建目标文件系统; 


2.2检测及修复文件系统的工具fsck

fsck.ext2, fsck.ext3, ...

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

ext系列文件系统的专用工具:

       e2fsck [OPTIONS]  device

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

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

-t fstype:指明文件系统类型;fsck -t ext4 = fsck.ext4

-a:无须交互而自动修复所有错误;

-r:交互式修复;


2.3查看其属性的工具

        dumpe2fs, tune2fs

       dumpe2fs命令:显示ext系列文件系统的属性信息  dumpe2fs  [-h] device


2.4调整文件系统特性:tune2fs  注意:块大小创建后不可修改;

tune2fs [OPTIONS] device

-l:查看超级块的内容;

-j:ext2 --> ext3;修改指定文件系统的属性:

-L LABEL:修改卷标;

-m #:调整预留空间百分比;

-O [^]FEATHER:开启或关闭某种特性;

        -o [^]mount_options:开启或关闭某种默认挂载选项 例如acl(开启)^acl 关闭

内容补充板块

1.blkid命令:用来查看块设备的uuid和label

blkid device

blkid  -L LABEL:根据LABEL定位设备

blkid  -U  UUID:根据UUID定位设备 

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

# mkfs.vfat device





        swap文件系统

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

     1.创建swap设备:mkswap命令

mkswap [OPTIONS]  device

-L LABEL:指明卷标

-f:强制

     2.交换分区的启用和禁用:

swapon  [OPTION]  [DEVICE]

-a:定义在/etc/fstab文件中的所有swap设备;

禁用:swapoff DEVICE



文件系统的使用:

首先要“挂载”:mount命令和umount命令

什么是挂载?

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

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

(1) 事先存在;

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

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

mount命令:mount  [-nrw]  [-t vfstype]  [-o options]  device  dir

   命令选项:-r:readonly,只读挂载; 

     -w:read and write, 读写挂载; 

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

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

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

      -U UUID:挂载时以UUID的方式指明设备;mount -U UUID dir

       -o options:挂载选项

   sync/async:同步/异步操作;

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

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

remount:重新挂载; 

acl:支持使用facl功能;

# mount -o acl  device dir 

# tune2fs  -o  acl  device 

ro:只读 

rw:读写 

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

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

auto/noauto:

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

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

扩展板块:

1.一个使用技巧可以实现将目录绑定至另一个目录上,作为其临时访问入口;

      mount --bind  源目录  目标目录

2.查看当前系统所有已挂载的设备:# mount   # cat  /etc/mtab    # cat  /proc/mounts

3.挂载光盘:mount  -r  /dev/cdrom  mount_point

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

4.挂载U盘:事先识别U盘的设备文件;

挂载本地的回环设备:# mount  -o  loop  /PATH/TO/SOME_LOOP_FILE   MOUNT_POINT 

umount命令:umount  device|dir

注意:正在被进程访问到的挂载点无法被卸载;

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

              # lsof  MOUNT_POINT

      # fuser -v  MOUNT_POINT

       终止所有正在访问某挂载点的进程:

      # fuser  -km  MOUNT_POINT




              文件系统开机启动 /etc/fstab文件 

每行定义一个要挂载的文件系统及相关属性:

            6个字段:

(1) 要挂载的设备:

设备文件;

LABEL

UUID

伪文件系统:如sysfs, proc, tmpfs等

(2) 挂载点 

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

(3) 文件系统类型;

(4) 挂载选项

defaults:使用默认挂载选项;

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

defaults,acl,noatime,noexec

(5) 转储频率

0:从不备份;

1:每天备份;

2:每隔一天备份;

(6) 自检次序

0:不自检;

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

2:次级自检

...

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

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

练习:1、创建一个10G的分区,并格式化为ext4文件系统; 

(1) block大小为2048;预留空间为2%,卷标为MYDATA;

(2) 挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;

(3) 可开机自动挂载;

     2、创建一个大小为1G的swap分区,并启动之;

















本文出自 “学而思” 博客,谢绝转载!

你可能感兴趣的:(详解,磁盘管理)