磁盘分区格式化:

一、根下文件目录介绍:

二进制文件:

/bin,/sbin:二进制程序;操作系统自身运行所需要用到的程序;

/usr/bin,/usr/sbin:二进制程序;系统管理所需要用到程序;

/usr/local/bin,/usr/local/sbin:二进制程序;第三方提供的程序,给系统运行、管理没有关系;

库文件

/lib:库文件;主要为/bin,/sbin提供所需要的库;通常也为/usr/bin,/usr/sbin提供库,

/usr/lib:库文件此案;用到的很少,为/usr/bin,/usr/sbin提供库;

/usr/local/lib:库文件;主要为/usr/local/bin,/usr/local/sbin提供库;

配置文件:

/etc/:配置文件目录;/bin,/sbin,/usr/bin,/usr/sbin的配置文件一般存放在这里;

/usr/local/etc:配置文件;/usr/lcoal/bin,/usr/lcoal/sbin配置文件一般放在这里;

临时文件:

/tmp:程序运行时产生的临时文件存放目录;

经常发生变化的文件:如日志

/var

    /var/log;/var/mail/;/var/cache;

内核特性的输出目录:也叫内核映像 (伪文件)

/proc:

输出硬件信息:如硬盘(伪文件)

/sys

挂载目录:(不是一定的,只是一般做法)

/media  :关联便携性设备;

/mnt :关联硬盘

引导目录:

/boot:主要用来放置内核;

用户家目录:

/home

/root:

设备文件:(b块设备(支持随机访问)、c字符设备(线性设备)

/dev:linux所能识别的设备都在此目录下;



二、硬盘相关指标(i/o、接口、转速、文件表示)

硬盘设备:随机存取设备;

I/O,

I/O controller:主要控制设备间通信的信号转换,如cpu和硬盘,cpu和内存;集成的,也叫控制器

I/O adapter:非集成的,也叫适配器


硬盘设备接口:

IDE,ATA:并行的; 133MB/s;

SCSI:small computer system interface;并行的;ultrascsi:320MB/s;10000转/M,15000转/M、

SATA:serail ata;串行的;STAT1:300MB/s、STAT2:600MB/s、STAT3:6Gbps

SAS:串行的;

USB:

SSD:solid-state disk;


硬盘在linux下表示:

IDE,ATA : /dev/hd[a-z];第一块硬盘用hda表示,一次向下排;

    并行线上一般有两个接口,一个是主:master,hda;一个是辅:slave,hdb

    第一个IDE控制接硬盘,第二个IDE控制接光驱:hdc   

SCSI,SAS,STAT,USB:/dev/sd[a-z],第一块硬盘用sda表示;一次向下排; 

    sda、sdb,也可以改变udev文件来自定义格式;


磁盘分区:每个独立的磁盘分区可以当做单独的文件系统来使用;

文件系统:通常由内核提供;文件系统用来管理磁盘分区;

    windows:NTFS、FAT32

    linux:ext2,ext3,ext4,xfs,reiserfs,nfs,iso9600,jfs,brtfs


格式化的过程就是创建文件系统的过程;

低格:低级格式化;用来创建磁道的,

高格:高级格式化:用来创建文件系统的;


分区是按照柱面来化分的;0磁道0扇区不属于任何分区,它被化为MBR(master booot record:主引导记录,512字节)

MBR:512字节,前446字节存放bootloader;接下来64字节存放分区表(每16字节来标示一个分区,所以只能有4个主分区);接下来2个字节:标示当前硬盘是不是可引导,用5A来标示;


扩展分区:不是指向一个分区,而是指向一个分区表,然后分区表里在划分分区(逻辑分区);


linux磁盘分区表示:(主分区只能有四个)

sda1:第一个主分区

sda2.。。。。。依次类推

sda5:第一个逻辑分区;


三、实现分区 (查看分区、创建分区、格式化分区、挂载分区、卸载挂载、查看挂载

1、创建分区命令有:fdisk、sfdisk、part;

    fdisk:一般最多能划分15各分区;

查看分区信息:fdisk -l

[root@promote ~]# fdisk -l    //查看所有分区信息;

[root@promote ~]# fdisk -l /dev/sda       //查看第一块磁盘分区信息;

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors        //磁盘1大小21.5G,21474836480个字节,41943040个扇区(磁道上一段弧);

Units = sectors of 1 * 512 = 512 bytes        //单位一个扇区,大小512字节;

Sector size (logical/physical): 512 bytes / 512 bytes        //扇区大小512字节;

I/O size (minimum/optimal): 512 bytes / 512 bytes      //i/0大小512字节;每次执行i/o,大小为512字节;

Disk label type: dos

Disk identifier: 0x00078891

   Device Boot      Start         End      Blocks   Id  System       //ID表示:分区类型;

/dev/sda1   *        2048     1026047      512000   83  Linux   //从2048扇区到1026047是第一个分区

/dev/sda2         1026048    41943039    20458496   8e  Linux LVM

[root@promote ~]#

[root@promote ~]#


[root@promote ~]# fdisk -l /dev/sd[a-z]    //显示sd开头的所有磁盘

[root@promote ~]# fdisk -l /dev/sd[a-z]    //显示hd或sd开头的磁盘

创建分区:fdisk;

    fdisk [DEVICE]:创建磁盘分区,是一个交互式命令;

步骤:

1、 [root@promote proc]# fdisk /dev/sdb    //借助交互式命令创建磁盘分区;需要注意的是:如果创建分区小于等于4,创建主分区即可,如果所需的分区大于4,则要创建扩展分区,扩展分区创建后不能直接使用,必须在扩展分区基础上再次创建逻辑分区;

2、[root@promote proc]# cat /proc/partitions    //查看创建分区信息是否被内核所识别,没识别执行3;

3、[root@promote proc]# partprobe /dev/sdb    //RHEL5让内核重新读取硬盘分区表

或: [root@promote proc]# partx -a  [分区]  /dev/sdb        //RHEL6让内核重新读取硬盘分区表;


[root@promote ~]# partx /dev/sdb      //查看分区是否被内核识别;

格式化分区(创建文件系统):mkfs、 mke2fs、tune2fs、e2label;

mke2fs主要用来是创建ext系列文件系统;mkfs是通用的,可以创建其他类型文件系统;

分区要注意两点:

a、文件系统必须被内核支持才能使用,即内核有相应的内核模块,或者已经整合进内核:

b、要有相应文件系统创建工具,通常是mkfs.fstype


4、以上为创建分区,分区没有文件系统是不能被使用的因此要创建文件系统,即格式化分区:

    方法一: mkfs [options] [-t type] [fs-options] device [size]

        [root@promote proc]# mkfs -t ext4 /dev/sdb1   //将sdb1以ext4文件系统方式格式化; 

    方法二:mke2fs -t {ext2 | ext3 | ext4} /dev/sdb1    //将sdb1以ext4文件系统方式格式化;     


[root@promote proc]# blkid /dev/sdb1        //显示sdb1格式化的信息(uuid、type);

/dev/sdb1: UUID="43812552-22c6-4d6d-b975-f5afbb41c4af" TYPE="ext4"

[root@promote proc]#

注意:  mkfs -t ext4=mkfs.ext4=mke2fs -t ext4

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

             mkfs -t ext2=mkfs.ext2=mke2fs=mke2fs -t ext2


mke2fs:设定相关文件系统参数;tune2fs:修改相关文件系统参数;e2label:显示或设定卷标:

可以修改mke2fs配置文件/etc/mke2fs.conf来改变其文件系统默认参数; 

 mke2fs常用选项:

    -t:文件类型;

    -b {1024 | 2048 | 4096}:块大小;

    -L label:设置卷标;

    -m #:预留给管理员使用的块所占用总空间的比例;磁盘一般都会预留一些空间给root用(一般默认为5%),防止全部填满数据不能使用;

    -r # :调整预留给管理使用的块个数;

    -E:设定文件系统的扩展属性;

tune2fs:常用选项: 不能调整块大小,

    -l:显示文件系统超级块相关信息;

    -L:重新设定分区卷标;

    -m #:重新设定预留空间比例;

    -r # :调整预留给管理使用的块个数;

    -o:设定挂载默认选项;

    -O:设定文件系统默认特性;

    -E:修改文件系统的扩展属性;

e2label:显示或设定卷标:

    用法:#e2label 分区 卷标    //设定卷标

                #e2label 分区            //查看卷标;

格式化分区事例:

如:

[root@promote proc]# e2label  /dev/sdb2

test

[root@promote proc]# e2label /dev/sdb2 mylove

[root@promote proc]# e2label  /dev/sdb2

mylove

[root@promote proc]#

   

块大小:取决于cpu对内存页框大小的支持,x86系统默认的页框大小为4k;块大小可以为1024、2048、4096;

[root@promote proc]# tune2fs -l /dev/sdb2 | grep Block\ size    //过滤显示块大小

Block size:               4096

[root@promote proc]# mke2fs -t ext4 -b 2048 /dev/sdb2        //-b改变块大小;

[root@promote proc]# tune2fs -l /dev/sdb2 | grep Block\ size

Block size:               2048

[root@promote proc]# mke2fs -t ext4 -b 2048 -L mydata /dev/sdb2        //-L设定卷标;

[root@promote proc]# blkid  /dev/sdb2        

/dev/sdb2: LABEL="mydata" UUID="f4fd44ce-001c-48d4-b74b-8ab4e7d8ac44" TYPE="ext4"

[root@promote proc]#


磁盘一般都会预留一些空间给root用(一般默认为5%),防止全部填满数据不能使用;

[root@promote proc]# tune2fs -l /dev/sdb2 | grep Reserved       //查看预留空间信息 

Reserved block count:     26214

Reserved GDT blocks:      512

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

[root@promote proc]#

[root@promote proc]# mke2fs -t ext4 -b 2048 -L mydata -m 1 /dev/sdb2    //-m调整预留比例1%

[root@promote proc]# tune2fs -l /dev/sdb2 | grep Reserved

Reserved block count:     5242

Reserved GDT blocks:      512

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)


[root@promote ~]# fdisk /dev/sda

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Command (m for help): m

Command action

   a   toggle a bootable flag    //设定可启动标记;

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition                            //删除一个分区;

   g   create a new empty GPT partition table

   G   create an IRIX (SGI) partition table

   l   list known partition types        //列出各分区类型所对应的sysytem id;

   m   print this menu

   n   add a new partition                //新建一个分区;

   o   create a new empty DOS partition table

   p   print the partition table        //显示当前的分区信息;

   q   quit without saving changes    //不保存退出;

   s   create a new empty Sun disklabel

   t   change a partition's system id   //修改分区类型;(83:linux分区;82:linux swap;8e:Linux LVM ;fd;)

   u   change display/entry units

   v   verify the partition table

   w   write table to disk and exit            //保存退出;

   x   extra functionality (experts only)

Command (m for help):


挂载分区:建立关联关系;将某文件系统关联到根文件系统上;

注意:如果以个目录在挂载其他文件系统(分区)以前,已经有了文件,那么挂载之后,这些文件将被隐藏,但是不会被删除;当卸载(反挂载)后,这些文件就可以访问了,不要挂载在常用目录下,建议挂载在/media或/mnt或自己常见的目录下。


挂载命令介绍:mount

mount [option] device mount_point

option:

    -o:用于指定挂载选项;

             常用指定挂载选项有

                 ro:只读挂载;

                 rw:读写,默认读写;

                 noatime:关闭更新访问时间;

                 auto:是否能有有“mount -a”挂载;

                 sync:同步写入

                 async:异步写入,异步性能好

                 noexec:不允许设备上的二进制文件执行;

                 remount:重新挂载

                 defaults:相当于 rw, suid, dev, exec, auto, nouser, and async.   ,默认default

                 loop:本地回环设备;挂载本地镜像用

    -n:挂载文件系统时,不更新/etc/mtab文件;

    -r:相当于“-o ro”,只读挂载;

    -a:挂载所有fstab中的支持auto挂载选择的文件系统;//mount -a   ;后不跟任何参数



如:

[root@promote ~]# mount -o rw /dev/sdb1 /test/

[root@promote ~]# mount | grep sdb1

/dev/sdb1 on /test type ext4 (rw,relatime,seclabel,data=ordered)

[root@promote ~]# mount -o remount,ro /dev/sdb1    //重新挂载不需要指定挂载点

[root@promote ~]# mount | grep sdb1

/dev/sdb1 on /test type ext4 (ro,relatime,seclabel,data=ordered)

[root@promote ~]#


fuser:查看正在访问某挂载点的进程: 

 fuser [-fuv] [-a|-s] [-4|-6] [-c|-m|-n space] [ -k [-i] [-M] [-w] [-SIGNAL] ] name ...

fuser -km  [mount_point]:强行杀死正在访问此挂载点的进程


5、挂载分区:

    方法一:直接挂载设备分区

格式:#mount [-t fstype] DEVICE MOUNT_POINT      //mount 设备 挂载点

  方法二:以卷标方式挂载

格式: #mount [-t fstype] LABEL="卷标" MOUNT_POINT   //mount 卷标 挂载点

 方法三:以UUID方式挂载:

格式:#mount [-t fstype] UUID="uuid " MOUNT_POINT   //mount UUID 挂载点


如:[root@promote proc]# mount  -t ext4 /dev/sdb1 /test/    //将sdb1分区以ext4文件系统挂载到/test下,-t ext4 可以省略,如果省略mount会调用blkid来判断以什么格式挂载


[root@promote /]# blkid /dev/sdb1

/dev/sdb1: UUID="43812552-22c6-4d6d-b975-f5afbb41c4af" TYPE="ext4"

[root@promote /]# tune2fs -L mydata /dev/sdb1

tune2fs 1.42.9 (28-Dec-2013)

[root@promote /]# blkid /dev/sdb1

/dev/sdb1: LABEL="mydata" UUID="43812552-22c6-4d6d-b975-f5afbb41c4af" TYPE="ext4"

[root@promote /]# mount LABEL="mydata" /test    //以卷标挂载;

[root@promote /]# mount       //验证挂载


[root@promote /]# mount UUID="43812552-22c6-4d6d-b975-f5afbb41c4af" /test    //以UUID挂载


6、卸载:umount(卸载只需指一个:设备或挂载点)

    方法一:#umount DEVICE    //指定设备卸载

    方法二:#umount  MOUNT_POINT        //指定挂载点卸载;

7、查看挂载:

格式:#mount    //不带任何参数,查看所有挂载设备;


注意:以上挂载在系统重新启动后不会自动挂载的,

/ets/fstab文件中定义的挂载会在重启后自动挂载;

[root@promote ~]# cat /etc/fstab

# /etc/fstab

# Created by anaconda on Tue Nov 29 20:13:44 2016

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

/dev/mapper/centos-root                /                       xfs     defaults        0 0

UUID=47c2d0d2-2c32-4a36-89e7-420739594a95 /boot                   xfs     defaults        0 0

/dev/mapper/centos-swap           swap                    swap    defaults        0 0

[root@promote ~]#

解释:

/dev/mapper/centos-root :挂载的设备(可以是设备文件、卷标、UUID,建议使用uuid)  

/:挂载点 

xfs:文件系统类型;

default:挂载选项,default表示默认选项,多个选项之间逗号分隔;

0:转储频率:dump,多长时间多一次备份,0表示不备份,1表示每天备份,2表示隔天备份;

0:自检次序:检测文件系统,先检测根,0表示不检测,1表示第一个检测,






四、文件系统:

文件系统通过函数调用(open(),read(),write(),close())来对文件进行管理;但是由于文件系统有很多种,如:ext1\ext2\ext3\ext4\xfs\jfs等,为了对调用不同层次文件系统统一管理,加一个中间层(VFS:virtual file system)


linux内核支持的文件系统:

    光盘文件系统:iso9660;

    网络文件系统:nfs、cifs

    单机文件系统:ext{1,2,3},xfs,jfs,reiserfs,vfat

    集群文件系统:GFS,GFS2,OCFS2

    分布式文件系统:


交换分区:swap

 作为内存不够用时的替代方案,将磁盘的一段容量拿来格式化成和内存一样格式的文件系统,供系统使用。linux上的交换分区必须是独立分区(独立文件系统)。

交换分区大小合适?(以下是建议做法,没有什么准则)

    科学计算器类的服务器:交换分区可以尽可能大,比如为物理内存的两倍;

    应用程序类的服务器:交换分区尽可能小,让他使用物理内存,如:只给1个G,如oracel数据、web等;

    物理内存小于2G,swap=memory*2

    物理内存大于2G小于4G,swap=memory*1.5

    物理内存大于4G,swap=4G

查看内存大小: free

    

free [options]

Options:

     -b, --bytes         show output in bytes

     -k, --kilo          show output in kilobytes

     -m, --mega          show output in megabytes    //以MB为单位显示大小

     -g, --giga          show output in gigabytes

     --tera          show output in terabytes

     -h, --human         show human-readable output    //显示人可读的输出

     --si            use powers of 1000 not 1024

     -l, --lohi          show detailed low and high memory statistics

     -t, --total         show total for RAM + swap

     -s N, --seconds N   repeat printing every N seconds

     -c N, --count N     repeat printing N times, then exit

     -w, --wide          wide output

     --help     display this help and exit

     -V, --version  output version information and exit

    For more details see free(1).

    [root@promote ~]# 

如:

[root@promote ~]# free

                  total              used        free             shared  buff/cache   available

Mem:        1001332      199348      534872        7196      267112      624508

Swap:       2097148           0     2097148

    //            总大小           已用        可用            共享内存    缓冲缓存    可用的

[root@promote ~]#



创建分区,并作为交换分区:

步骤1、创建swap分区,

[root@promote ~]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x88cbdb2a

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     2099199     1048576   83  Linux

/dev/sdb2         2099200     4196351     1048576   83  Linux

/dev/sdb3         4196352     6293503     1048576   83  Linux

Command (m for help): l            //列出分区的文件格式的对应编码

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris

 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-

 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-

 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-

 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx

 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data

 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .

 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility

 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt

 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access

 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O

 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor

 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs

 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT

 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/

10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b

11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor

12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor

14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary

16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS

17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE

18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto

1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep

1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT

1e  Hidden W95 FAT1 80  Old Minix

Command (m for help): t    //修改分区文件格式

Partition number (1-3, default 3): 3        //指定要修改的分区

Hex code (type L to list all codes): 82    //指定分区对应的编码

Changed type of partition 'Linux' to 'Linux swap / Solaris'

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x88cbdb2a

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     2099199     1048576   83  Linux

/dev/sdb2         2099200     4196351     1048576   83  Linux

/dev/sdb3         4196352    10485759     3144704   82  Linux swap / Solaris

Command (m for help):w

保存退出;

步骤2、参看swap分区是否被内核所识别;

[root@promote ~]# cat /proc/partitions        //查看分区是否被内核所识别,如果没有被识别需要重启,或重新读取内核,用命令:# partprobe  /dev/sdb或# partx -a /dev/sdb3 /dev/sdb;

major minor  #blocks  name

   8        0   20971520 sda

   8        1     512000 sda1

   8        2   20458496 sda2

   8       16    5242880 sdb

   8       17    1048576 sdb1

   8       18    1048576 sdb2

   8       19    3144704 sdb3

  11        0    1048575 sr0

 253        0   18317312 dm-0

 253        1    2097152 dm-1

[root@promote ~]#

步骤3、格式化swap分区

[root@promote ~]# mkswap /dev/sdb3            //用mkswap格式化sdb3

Setting up swapspace version 1, size = 3144700 KiB

no label, UUID=d23f4399-8512-4e97-a8ae-291b7ee5f1c6

[root@promote ~]#

或:

[root@promote ~]# mkswap -L newswap /dev/sdb3        //指定卷标为newswap

mkswap: /dev/sdb3: warning: wiping old swap signature.

Setting up swapspace version 1, size = 3144700 KiB

LABEL=newswap, UUID=6b7b2807-ec13-45e3-bb2d-139b18a052c3

[root@promote ~]#

步骤4、启用交换分区:

[root@promote ~]# swapon /dev/sdb3    //启用指定交换分区

[root@promote ~]# swapon -a                //启用所有交换分区

[root@promote ~]# free         //验证swap挂载成功

              total        used        free      shared  buff/cache   available

Mem:        1001332      177860      485788        7220      337684      644088

Swap:       3144700           0     3144700


步骤5、禁用交换分区:

[root@promote ~]# swapoff /dev/sdb3    //禁用指定交换分区

[root@promote ~]# swapoff -a                //禁用所有交换分区

步骤6、开机自动启用交换分区,可定义于/etc/fstab:

[root@promote ~]# vim /etc/fstab       //在里面输入:

/dev/sdb3       swap                          swap     defaults       0 0

/dev/sdb3:分区类型,也可以用卷标

swap:挂载点

swap:分区类型


五、文件系统:

0磁道0扇区不属于任何分区,它被化为MBR(master booot record:主引导记录,512字节)

MBR:512字节,前446字节存放bootloader;接下来64字节存放分区表(每16字节来标示一个分区,所以只能有4个主分区);接下来2个字节:标示当前硬盘是不是可引导,用5A来标示可引导;


    MBR:引导整个磁盘上的操作系统;一个磁盘上可以有多个操作系统,MBR决定引导哪个分区上的系统;

    每个分区有boot block(1024字节,用来引导当前分区上的系统的;),后面跟文件索引,然后分区后面的空间用来存储数据(空间划分成块来存储数据)。

    分区中的文件索引中的每一个条目称为index node(简称inode),每个inode都有自己的编号,简称为inode号码;文件索引也叫源数据(Metadata),它包含:大小、权限、属主、属组、时间戳、数据对应的磁盘块(通过块指针来实现的)等信息,但是不包含文件名

block bitmap

inode bitmap

block group:块组

#tune2fs -l /dev/sda3         //显示sda3的超级块信息

[root@promote ~]# dumpe2fs /dev/sdb1        //显示ext文件系统信息;

[root@promote ~]# dumpe2fs -h /dev/sdb1        //显示超级块信息;

du:disk usage;查看文件大小;

     du [OPTION]... [FILE]...

     du [OPTION]... --files0-from=F

OPTION:

    -s:summary:显示某指定路径下所有文件的大小之和;

    -h:human-readable;以人类易读的方式显示;

[root@promote ~]# du -sh /var            //显示var目录下文件大小之和;

1.6G    /var

[root@promote ~]#

[root@promote ~]# du -sh /var/*        //显示var目录下所有子文件、及目录大小之和

0       /var/account

0       /var/adm

1.3G    /var/cache

0       /var/crash

8.0K    /var/db


df:disk free;显示磁盘空余量

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

OPTION:

    -l:local;显示本地文件系统空闲  

    -h:human-readable;人类易读的方式

    -P:posix兼容的风格显示;

    -i:显示inode使用信息;默认是块使用信息;


[root@promote ~]# df -l        //显示本地文件系统空闲

Filesystem              1K-blocks    Used Available Use% Mounted on

/dev/mapper/centos-root  18307072 7090144  11216928  39% /

devtmpfs                   485248       0    485248   0% /dev

tmpfs                      500664       0    500664   0% /dev/shm

tmpfs                      500664    7184    493480   2% /run

tmpfs                      500664       0    500664   0% /sys/fs/cgroup

/dev/sdb1                  999320    2564    927944   1% /test

/dev/sda1                  508588  162676    345912  32% /boot

tmpfs                      100136       0    100136   0% /run/user/0

[root@promote ~]#

[root@promote ~]# df /dev/sda

Filesystem     1K-blocks  Used Available Use% Mounted on

devtmpfs          485248     0    485248   0% /dev

[root@promote ~]# df -h /dev/sda

Filesystem      Size  Used Avail Use% Mounted on

devtmpfs        474M     0  474M   0% /dev

[root@promote ~]#



六、文件删除、移动、复制与文件系统的关系

文件删除只是删除了文件目录的inode信息,inode所指向的数据块上的数据并没有真正删除;此时只是将inode置为未使用inode,块数据置为未使用数据块;

文件复制相当于新建一个文件的inode信息,并将数据复制到inode所指向的数据块;

文件的移动,如果在同一分区,只是将数据块中的inode及文件名替换掉,,没有真正移动文件索引中的数据;


链接文件:

    硬链接:指向同一个inode的两个文件路径;如果删除一条文件路径中的系统,只要不是最后一条路径中的文件,那么所指向的inode信息和块信息不会改变;

        硬链接特性:硬链接不能跨分区;硬链接不能指向目录;删除原文件路径,不影响链接文件的使用;链接文件与原文件指向同一个inode,因此,他们是同一个文件;

如:

[root@promote ~]# ls -l

total 13380

-rw-r--r--.  1 root   root     16627 Dec 14 16:49 abc.txt        //此处的1即是硬链接的次数;

[root@promote ~]# ls -i        //显示文件的inode

 67832961 abc.txt                   105633742 httpd-2.4.25

[root@promote ~]#

  创建硬链接文件:

    #ln 原文件  链接文件


    软链接(符号链接):

用命令ls -l查看文件类型为l的文件就是软链接文件;bash中测试文件是否为符号链接文件,使用-L或-h;

    软链接特性:不受分区限制;能够对目录创建链接;删除原文件路径,链接文件将无法使用;链接文件与原文件指向不同的inode,因此,他们不是同一个文件,因此可以跨分区;软链接文件的大小是他指向原文件的字符的个数;本身不占用磁盘块;文件类型取决于原文件

 创建软链接文件:

    #ln  -s  原文件  链接文件

            -v:显示创建过程


七、文件系统其他的相关操作:

查看文件系统隐藏的属性:

[root@promote ~]# lsattr

---------------- ./anaconda-ks.cfg

---------------- ./first.sh

[root@promote ~]#

修改文件系统隐藏的属性:


SYNOPSIS

       chattr [ -RVf ] [ -v version ] [ mode ] files...

DESCRIPTION

       chattr changes the file attributes on a Linux file system.

       The format of a symbolic mode is +-=[aAcCdDeijsStTu].


 The letters 'aAcCdDeijsStTu' select the new attributes for the files: append only (a), no  atime

       updates  (A),  compressed  (c), no copy on write (C), no dump (d), synchronous directory updates(D), extent format (e), immutable (i), data journalling (j), secure  deletion  (s),  synchronous

       updates (S), no tail-merging (t), top of directory hierarchy (T), and undeletable (u).




[root@promote ~]# lsattr

---------------- ./anaconda-ks.cfg

---------------- ./first.sh


[root@promote ~]# chattr +i ./first.sh     //给文件加上只读属性

[root@promote ~]# !ls     //执行最近一次以ls开头的命令

lsattr

---------------- ./anaconda-ks.cfg

----i----------- ./first.sh

文件的压缩:

gzip、bzip2、xz只能压缩文件不能压缩目录;

linux上常用的压缩程序有:gzip、bzip2、xz,三中程序的压缩能力gzip<bzip2<xz;

#gzip  文件名:压缩后的文件后缀为:.gz;解压缩使用#gunzip 文件名;压缩和解压缩会删除元文件 ;#gzip -c 文件名 > message.gz:压缩时不删除原文件;

#bzip2  文件名:压缩后的文件后缀为:.bz2;解压缩使用#bunzip2 文件名;压缩和解压缩会删除元文件;# bzip2  -k 文件名 :压缩不删除原文件;

#xz  文件名:压缩后的文件后缀为:.xz;解压缩使用#unxz 文件名;压缩和解压缩会删除元文件 

以上压缩命令后跟 -d选项可以直接解压缩,如#gzip -d 文件名 就等同于#gunzip 文件名,其他类似

以上压缩命令后跟 -#选项可以设置压缩比,如#gzip -9 文件名 按此比例压缩,其他类似


不解压查看压缩文件中文件列表:

gzip对应:zcat;

bzip2对应:bzcat;

xz对应:xzcat;

文件的归档一:tar:将多个文件归档到一个文件中,并能还原回来;归档不进行压缩

  tar [OPTION...] [FILE]...

OPTION:

    -c:创建归档;

    -x:展开归档;

    -f:filename ;指定归档后的文件名称,一般以.tar作为文件的后缀名;

    -t:不用展开归档,查看文件列表;

    -z:调用gzip进行压缩或解压缩,看和哪个选项搭配(-c | -x)

    -j:调用bzip2进行压缩或解压缩,看和哪个选项搭配(-c | -x)

    -J:调用xz进行压缩或解压缩,看和哪个选项搭配(-c | -x)

当然也可以不指定-z、-j、或-J,tar会自己判断相应的格式并调用相应的命令进行解压缩并展开归档;


如:

[root@promote ~]# cd init.d/

[root@promote init.d]# ls

functions  netconsole  network  README

[root@promote init.d]# tar -cf test.tar ./*        //将当前目录下所有文件归档为文件名为test.tar的文件;

[root@promote init.d]# ls

functions  netconsole  network  README  test.tar

[root@promote init.d]# tar -tf test.tar        //不展开归档文件查看所含有的文件;

./functions

./netconsole

./network

./README

[root@promote init.d]#

[root@promote init.d]# tar -xf test.tar -C /tmp      //展开到指定目录tmp中,如不加-C,则在原来压缩的原目录中;

文件的归档二:zip

zip:压缩后的文件后缀为.zip

unzip:解压缩;

如:

[root@promote init.d]# ls

12.tar  functions  netconsole  network  README  test.tar

[root@promote init.d]# cd ..

[root@promote ~]# ls init.d/

12.tar  functions  netconsole  network  README  test.tar

[root@promote ~]# zip init.zip init.d/

  adding: init.d/ (stored 0%)

[root@promote ~]# ls

 init.d                

 init.zip

[root@promote ~]#



八:hdparm:IDE或 STAT磁盘属性管理工具:


dd:绕过文件系统直接进行复制底层数据(0,1代码);

用法:dd if= of=

    dd if=/etc/inittab  of=/tmp    //if=/etc/inittab是输入的数据;of=/tmp表示输出文件保存在什么位置

dd可以复制文件的部分数据,而不用复制完;指定复制的块大小和复制的次数;  

    bs=1024:表示复制的块大小;block size

    count=2:表示复制几个块大小;


[root@promote ~]# dd if=/dev/sda of=/root/sda_mbr.backup bs=512 count=1    //mbr备份

1+0 records in

1+0 records out

512 bytes (512 B) copied, 0.000756293 s, 677 kB/s

[root@promote ~]#

[root@promote ~]# dd if=/root/sda_mbr.backup of=/dev/sda bs=512 count=1    //mbr备份恢复;慎用

1+0 records in

1+0 records out

512 bytes (512 B) copied, 0.000245834 s, 2.1 MB/s

[root@promote ~]#


/dev/zero:0生成器;

dd if=/dev/zero of=/root/tefile bs=4k count=10        //创建一个40k以0填充的文件;









九、sysV:服务脚本;

如:[root@promote ~]# service network restart    //此命令等同于([root@promote ~]# /etc/rc.d/init.d/network restart 或 [root@promote ~]# /etc/init.d/network restart);service是一个命令,调用network脚本,network脚本位于/etc/rc.d/init.d/network;


script.sh {start | stop | restart | status}

如果参数为start,创建空文件/var/lock/subsys/script,并显示“starting script sucessfully"

如果参数为stop,则删除文件/var/lock/subsys/script,并显示"stop script finished"

如果参数为restart,则删除文件/var/lock/subsys/script后重现创建,并显示“restarting script sucessfully”

如果参数为status,那么:

    如果/var/lock/subsys/script文件存在,则显示为"script is running"

    否则,则显示为“script is stopped”

其他任何参数:则显示“script.sh {start | stop | restart | status}"