wKiom1e-US7R3x0tAAAn5m79Or4031.jpg-wh_50


1.磁盘结构

 硬盘是什么?在电脑中扮演的角色是什么?
   有人把电脑比喻成剧院,内存比喻成舞台,硬盘就是后台,程序就是演员。
内存:
舞台大了可以一起表演的演员就多啦,所以舞台大小决定演员的活动能力,如果有个足球场那么大的舞台,只表演对口相声,也没有啥用。所以内存大点好,但是也要看用来做什么,根据需要选择合适的内存。

硬盘:
当演员在准备和休息时,就在会在后台歇着,你的节目越多,种类越多就需要越大的后台,但他们不要同时出现在舞台,所以舞台不太那么大。后台没有舞台那么好的装修和灯光等,所以成本也要低些。



wKiom1e9ieTBoTjDAABNg6F_p9Y158.png-wh_50


head:磁头

track:磁道

cylinder: 柱面

secotr: 扇区,512bytes

        硬盘是一种采用磁介质的数据存储设备,数据存储在密封于洁净的硬盘驱动器内腔的若干个磁盘片上。这些盘片一般是在以的片基表面涂上磁性介质所形成,在磁盘片的每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干个同心圆就被划分成磁道(track),每个磁道又被划分为若干个扇区(sector),数据就按扇区存放在硬盘上。在每一面上都相应地有一个读写磁头(head),所以不同磁头的所有相同位置的磁道就构成了所谓的柱面(cylinder)。传统的硬盘读写都是以柱面、磁头、扇区为寻址方式的(CHS寻址)。硬盘在上电后保持高速旋转,位于磁头臂上的磁头悬浮在磁盘表面,可以通过步进电机在不同柱面之间移动,对不同的柱面进行读写。

文件存储在硬盘若干个扇区中,操作系统读取硬盘是不会一个一个扇区来读,而是一次读取多个扇区,也就是一次读取一块儿(block),种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。







2.分区方式


划分分区优点

实现磁盘空间配额限制

提高修复速度(按分区)

隔离系统和程序

使用不同文件系统

优化IO性能 日志一类实时性的可以单独划分一个分区



》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》



分区方式分类

MBR         GPT



MBR

MBR 使用32位表示扇区数,分区不超过2T

分区不能超过2T

分区按柱面划分,8M

MBR位于0磁道0扇区共512字节:

              446字节存放计算机引导脚本    bootloader->grub/grub2

              DPT 64个字节来存放分区表

              16个字节标识一个分区

              2个字节表示位 55AA(表示有分区)

              所以导致了主分区只能有4个

              逻辑分区引导使用EBR,一个逻辑分区一个EBR



早的时候一个柱面一个扇区

centos6 划分是按柱面划分分区

centos7 划分是按扇区划分分区

fdisk -l -u=cylinders将centos7版本按照磁道划分


》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》


GPT

GPT:GUID partition table

支持128分区

采用64位结构

最大支持8Z

block

128位uuid表示分区磁盘 分区表存放于头部和尾部


UEFI硬件接口支持GPT

头部LBA 0存放伪MBR

    LBA 1-128 存放GUID头和分区和备份信息




3.管理分区


分区管理


分区查看

查看内存已识别的硬盘及分区信息

[root@localhost ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0             2:0    1    4K  0 disk 
sda             8:0    0  100G  0 disk 
├─sda1          8:1    0   30G  0 part /boot
└─sda2          8:2    0   32G  0 part 
  ├─centos-root
              253:0    0   10G  0 lvm  /
  ├─centos-swap
              253:1    0    2G  0 lvm  [SWAP]
  └─centos-testdir
              253:2    0   20G  0 lvm  /testdir
sdb             8:16   0   20G  0 disk 
└─sdb1          8:17   0    1G  0 part 
sdc             8:32   0   20G  0 disk 
sdd             8:48   0   20G  0 disk 
sr0            11:0    1  7.2G  0 rom


查看是否写入内存

[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name

   2        0          4 fd0
   8        0  104857600 sda
   8        1   31457280 sda1
   8        2   33562624 sda2
   8       16   20971520 sdb
   8       17    1048576 sdb1
   8       32   20971520 sdc
   8       48   20971520 sdd
  11        0    7587840 sr0
 253        0   10485760 dm-0
 253        1    2097152 dm-1
 253        2   20971520 dm-2


直接查看设备文件

[root@localhost ~]# ls /dev/sd*
/dev/sda   /dev/sda2  /dev/sdb1  /dev/sdd
/dev/sda1  /dev/sdb   /dev/sdc


创建分区

交互式: 

   工具一:fdisk

   创建分区 fdisk 磁盘 fdisk /dev/sdb

   ps:建议用于MBR分区格式

   fdisk -l [-u] [device...]    

 

 fdisk /dev/sab

 ps:一定要跟上硬盘

 进入交付式

 

[root@localhost ~]# 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.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xefaff5f4.
Command (m for help): m
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
   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
      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): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
p 主分区
e扩展分区

Select (default p): p 1
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 
创建分区类型及分区第几个分区
柱面起始

Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
分区大小 格式是 +size[K|M|G]
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +10G
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0xefaff5f4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux

保存退出查看

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk 
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0   30G  0 part /boot
└─sda2   8:2    0   32G  0 part 
  ├─centos-root
       253:0    0   10G  0 lvm  /
  ├─centos-swap
       253:1    0    2G  0 lvm  [SWAP]
  └─centos-testdir
       253:2    0   20G  0 lvm  /testdir
sdb      8:16   0   20G  0 disk 
└─sdb1   8:17   0   10G  0 part 
sdc      8:32   0   20G  0 disk 
sdd      8:48   0   20G  0 disk 
sr0     11:0    1  7.2G  0 rom

退出可能会出现如下错误

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

Syncing disks   

ps:如果保存退出报错说分区表未写入

这种情况是出现在这块磁盘的有分区已经被使用,也就是分区旧表正在被使用,要生效需要重新更新。

解决方法

partx -a /dev/sdb

ps:cetnos6使用partx,-a只用于增加分区


解决删除分区后不同步:

partx -d --nr 7-8 /dev/sdb

连续范围使用 - 例如分区6,7,8可以使用 6-8

如果删除不连续需要一个一个指定范围

使用-d 加上范围 

同步至分区表


注:以上为centos 6 


CentOS 5和7: 使用partprobe

partprobe 



》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》


   工具二:gdisk 

   管理GPT分区格式

   命令交互式一样

  创建分区 按扇区划分

[root@localhost ~]# gdisk /dev/sdc 
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): ?#帮助信息
b	back up GPT data to a file
c	change a partition's name
d	delete a partition
i	show detailed information on a partition
l	list known partition types
n	add a new partition
o	create a new empty GUID partition table (GPT)
p	print the partition table
q	quit without saving changes
r	recovery and transformation options (experts only)
s	sort partitions
t	change a partition's type code
v	verify disk
w	write table to disk and exit
x	extra functionality (experts only)
?	print this menu

Command (? for help): n
Partition number (2-128, default 2): 2
First sector (34-41943006, default = 4196352) or {+-}size{KMGTP}: +1G
Last sector (6293504-41943006, default = 41943006) or {+-}size{KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): P
Disk /dev/sdc: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): CC081A97-F46D-4835-8650-02C6F0D615FA
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 37748669 sectors (18.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1         2099200         4196351   1024.0 MiB  8300  Linux filesystem
   2         6293504         8390655   1024.0 MiB  8300  Linux filesystem

Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name

   2        0          4 fd0
   8        0  104857600 sda
   8        1   31457280 sda1
   8        2   33562624 sda2
   8       16   20971520 sdb
   8       17    1048576 sdb1
   8       32   20971520 sdc
   8       33    1048576 sdc1
   8       34    1048576 sdc2
   8       48   20971520 sdd
  11        0    7587840 sr0
 253        0   10485760 dm-0
 253        1    2097152 dm-1
 253        2   20971520 dm-2


》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》


非交互式

    工具三: parted

 parted /dev/sdb mklabel gpt

 parted /dev/sdb mklabel primary 1 1024


  parted /dev/sdb print

  查看

  parted /dev/sdb rm 2

   删除

ps:因为parted操作是实时性,所以请谨慎操作




4.文件系统

文件系统是操作系统上明确设备或分区上的文件的方式和数据结构。

   不同文件系统功能不一样

linux文件系统包括:ext2 ,ext3 ,ext4 xfs{SGI公司},btrfs{oracle公司},reiserfs(世界上最老的文件系统)jfs{aix},swap:交换分区 光盘:iso9660;

windows:fst32,ntfs;

Unix:FFS{FAST} UFS JFS2;

网络文件系统:NFS,CIFS{Windows文件共享};

集群文件系统:GFS2,OCFS2{oracle};

分布式文件系统ceph ,moosefs,mogilefs,glusterfs;

Linux的虚拟文件系统:VFS

RAW:未经处理或者未经格式化产生的文件系统{oracle数据库};


文件系统分类:

按 has_journal日志功能分类

日志型:ext3,ext4,xfs

非日志型:ext2,vfat

   当用户操作磁盘上某一文件将文件首先调入内存,进行处理,然后查看其是否支持日志功能,如果支持则将其修改的最终动作{修改多次是不会马上写入硬盘,在内存中存储一段时间}记录进日志文件,然后将其写入硬盘。


lsmod命令: 用于显示已经加载到内核中的模块的状态信息。

通常在使用lsmod命令时,都会采用类似

lsmod | grep -i ext3

这样的命令来查询当前系统是否加载了某些模块。


文件系统组成部分:

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

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



》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》


文件系统的使用

linux系统支持的文件系统


mkfs.cramfs   mkfs.ext3    mkfs.fat      mkfs.msdos   mkfs.xfs     

mkfs.btrfs    mkfs.ext2    mkfs.ext4     mkfs.minix   mkfs.vfat   



设置分区文件系统

命令一:mkfs.ext4


mkfs.ext4 -b 1024 更改文件系统并指定块大小


mkfs.ext3 /dev/sdb1 设置文件系统为ext3


mkfs.ext4 -L  卷标名

修改分区文件系统并设置卷标名字


命令二:mke2fs 

ps:只支持EXT文件系统

mke2fs /dev/sdb1 

设置文件系统默认ext2


mke2fs -j /dev/sdb1 

将分区文件系统设置成ext3


-i为数据空间与inode之比

-N 指定inode个数

-I 一个inode大小设置

-m 保留的块数量设置单位为%


mke2fs -t ext4 /dev/sdb1 ext4

设置分区文件系统



命令三:查看分区属性;更改文件系统默认功能

tune2fs -l /dev/sdb1查看分区文件系统超级块


tune2fs -O ^has_journal /dev/sdb3

blkid


-O ^取消功能

-O 更改文件系统功能 

-U 更改UUID

uuidgen随记生成UUID

-i为数据空间与inode之比

-N 指定inode个数

-I 一个inode大小设置

-m 保留的块数量设置单位为%

-L 设置分区卷标名

tune2fs --help


命令四:块设备属性信息

blkid /dev/sdb1 

[root@localhost ~]# blkid  /dev/sdb1
/dev/sdb1: UUID="62cb0b57-358a-4f6a-a6db-049548880ece" TYPE="ext2"

blkid -L 

卷标名搜索

blkid -U UUID

搜索UUID对应的分区



命令五查看超级块信息

超级块 存储分区原数据

[root@localhost ~]# dumpe2fs /dev/sdc1 
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          32eb5152-4552-4e76-bbd3-121ce38b0380
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              65536
Block count:              262144
Reserved block count:     13107
Free blocks:              249500
Free inodes:              65525
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      63
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Filesystem created:       Wed Aug 24 20:53:44 2016
Last mount time:          n/a
Last write time:          Wed Aug 24 20:53:44 2016
Mount count:              0
Maximum mount count:      -1
Last checked:             Wed Aug 24 20:53:44 2016
Check interval:           0 (<none>)
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      e68e14db-7b45-4115-8b89-fc9fca1fae19
Journal backup:           inode blocks
Journal features:         (none)
Journal size:             32M
Journal length:           8192
Journal sequence:         0x00000001
Journal start:            0


centos 6 默认挂载后没有一些挂载选项功能,例如acl。

需要使用tune2fs -O acl 增加功能

增加后需要重新挂载


命令六:fsck修复文件系统 修复逻辑性错误

交互式恢复

-a自动修复

-r 交互式修复


命令七mknod 命令用于创建Linux中的字符设备文件和块设备文件。

#语法
mknod 选项 参数
#选项
-Z:设置安全的上下文; 
-m:设置权限模式; 
-help:显示帮助信息; 
--version:显示版本信息。 
#参数 
###文件名:要创建的设备文件名; 
###类型:指定要创建的设备文件的类型; 
###主设备号:指定设备文件的主设备号; 次设备号:指定设备文件的次设备号。

#例子
[root@localhost testdir]# ll /dev/sr0 
brw-rw----+ 1 root cdrom 11, 0 Aug 24 19:18 /dev/sr0
[root@localhost testdir]# mknod /testdir/sr0 b 11 0
[root@localhost testdir]# ll sr0 
brw-r--r--. 1 root root 11, 0 Aug 24 22:30 sr0







五.挂载

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

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

mount

遵循:多个设备不能挂载在一个挂载点

      一个设备可以挂载在多个挂载点

      最好使用挂载都挂载在根文件系统下

手动挂载选项


-L 按卷标挂载 

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="/mnt/sdb1" UUID="721a1978-3862-47da-92cd-9c3c701ec775" TYPE="ext2" 
[root@localhost ~]# mount -L /mnt/sdb1 /mnt/sdb1
[root@localhost sdb1]# ll
total 16
drwx------. 2 root root 16384 Aug 24 21:06 lost+found


-U 按UUID挂载

[root@localhost mnt]# mount -U 721a1978-3862-47da-92cd-9c3c701ec775 /mnt/sdb1
[root@localhost mnt]# ls /mnt/sdb1
lost+found


-t 挂载使用的文件系统默认不用写

-r 只读挂载

-w =rw 读写挂载默认为w

mount可直接查看其权限

-n 不更新/etc/mtmp

-B 绑定目录到另一个目录上

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



mount -o (挂载文件系统选项)


async 异步模式defaults

sync  同步模式,开启同步模式同步每一次修改

mount -o  sync 

atime/noatime  访问时间,都包含目录文件时间

diratime/nodiratime 目录访问时间戳

auto/noauto 是否支持自动挂载

exec/noexec 是否支持运行程序

suid/nosuid    sgid/nosgid   是否支持特殊权限;默认不启用

remount 重新挂载

user/nouser 普通用户是否支持挂载

dev/nodev 挂载的设备文件是否能够使用


卸载

umount 挂载点

umount卸载报错

umount: /mnt/sdb1: target is busy.

        (In some cases useful info about processes that use

         the device is found by lsof(8) or fuser(1))


处理:

fuser -v /mnt/sdb1

查看用户使用的挂载点

lsof /mnt/sdb3 查看进程

fuser -km /mnt/sdb3

强制踢出使用其用户{杀用户登录的进程}



》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》


自动挂载配置文件

/etc/fstab   

ps:设备写入配置文件建议写UUID /dev/sdb1

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

自动挂载

文件格式:每行定义一个要挂在的文件系统

一共6个字段:

1)要挂载的设备(可以包含:设备文件;卷标;UUID)

2)挂载点

swap类型设备的挂载点为SWAP

3)文件系统类型

4)挂载选项

defaults:使用默认挂载选项

如果要指明多个挂载选项彼此间以,分割

defaults,acl

5)转储频率

0:从不备份

1:每天备份

2:每隔一天备份

6)自检次序

   0:不自检

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

   2:初次自检

vim /etc/fstab
/dev/sdb1       /mnt/sdb1         ext3         defaults,acl           0 0
#自动挂载sdb1为ext3文件系统格式,并且支持acl

 

vim /etc/fstab
/dev/sr0       /mnt/cdrom        iso9660      defaults     0 0
#自动挂载光盘



mount -a
#重新挂载文件中支持自动挂载的设备





六.常用处理工具

df

      用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

 #语法
 df 选项 参数
 #选项
 -a或--all:包含全部的文件系统;
 --block-size=<区块大小>:以指定的区块大小来显示区块数目; 
 -h或--human-readable:以可读性较高的方式来显示信息; 
 -H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes; 
 -i或--inodes:显示inode的信息; 
 -k或--kilobytes:指定区块大小为1024字节; 
 -l或--local:仅显示本地端的文件系统; 
 -m或--megabytes:指定区块大小为1048576字节; 
 --no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值; 
 -P或--portability:使用POSIX的输出格式; 
 --sync:在取得磁盘使用信息前,先执行sync指令; 
 -t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息; 
 -T或--print-type:显示文件系统的类型; 
 -x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息; 
 --help:显示帮助;

 #举例
 1.查看文件系统类型并以易读方式输出
 [root@localhost mnt]# df -hT
Filesystem                 Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root    xfs        10G  4.1G  5.9G  42% /
devtmpfs                   devtmpfs  898M     0  898M   0% /dev
tmpfs                      tmpfs     913M   96K  913M   1% /dev/shm
tmpfs                      tmpfs     913M  9.0M  904M   1% /run
tmpfs                      tmpfs     913M     0  913M   0% /sys/fs/cgroup
/dev/sda1                  xfs        30G  165M   30G   1% /boot
/dev/mapper/centos-testdir xfs        20G   77M   20G   1% /testdir
tmpfs                      tmpfs     183M     0  183M   0% /run/user/0
tmpfs                      tmpfs     183M   12K  183M   1% /run/user/1000
/dev/sdb1                  ext2     1008M  1.3M  956M   1% /mnt/sdb1
/dev/sr0                   iso9660   7.3G  7.3G     0 100% /mnt/cdrom
2.查看所有文件系统
[root@localhost mnt]# df -a
Filesystem                 1K-blocks    Used Available Use% Mounted on
rootfs                             -       -         -    - /
sysfs                              0       0         0    - /sys
proc                               0       0         0    - /proc
devtmpfs                      918792       0    918792   0% /dev
securityfs                         0       0         0    - /sys/kernel/security
tmpfs                         934332      96    934236   1% /dev/shm
devpts                             0       0         0    - /dev/pts
tmpfs                         934332    9152    925180   1% /run
tmpfs                         934332       0    934332   0% /sys/fs/cgroup
cgroup                             0       0         0    - /sys/fs/cgroup/systemd
pstore                             0       0         0    - /sys/fs/pstore
cgroup                             0       0         0    - /sys/fs/cgroup/net_cls
cgroup                             0       0         0    - /sys/fs/cgroup/cpuset
cgroup                             0       0         0    - /sys/fs/cgroup/blkio
cgroup                             0       0         0    - /sys/fs/cgroup/freezer
cgroup                             0       0         0    - /sys/fs/cgroup/devices
cgroup                             0       0         0    - /sys/fs/cgroup/cpu,cpuacct
cgroup                             0       0         0    - /sys/fs/cgroup/memory
cgroup                             0       0         0    - /sys/fs/cgroup/perf_event
cgroup                             0       0         0    - /sys/fs/cgroup/hugetlb
configfs                           0       0         0    - /sys/kernel/config
/dev/mapper/centos-root     10475520 4296232   6179288  42% /
selinuxfs                          0       0         0    - /sys/fs/selinux
systemd-1                          -       -         -    - /proc/sys/fs/binfmt_misc
debugfs                            0       0         0    - /sys/kernel/debug
hugetlbfs                          0       0         0    - /dev/hugepages
mqueue                             0       0         0    - /dev/mqueue
sunrpc                             0       0         0    - /var/lib/nfs/rpc_pipefs
nfsd                               0       0         0    - /proc/fs/nfsd
/dev/sda1                   31441920  168000  31273920   1% /boot
/dev/mapper/centos-testdir  20961280   78496  20882784   1% /testdir
tmpfs                         186868       0    186868   0% /run/user/0
tmpfs                         186868      12    186856   1% /run/user/1000
fusectl                            0       0         0    - /sys/fs/fuse/connections
gvfsd-fuse                         0       0         0    - /run/user/1000/gvfs
/dev/sdb1                    1032088    1284    978376   1% /mnt/sdb1
/dev/sr0                     7587292 7587292         0 100% /mnt/cdrom
binfmt_misc                        0       0         0    - /proc/sys/fs/binfmt_misc
3.查看文件系统类型和inode号,并以易读方式输出
[root@localhost mnt]# df -hTi
Filesystem                 Type     Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root    xfs         10M  137K  9.9M    2% /
devtmpfs                   devtmpfs   225K   408  224K    1% /dev
tmpfs                      tmpfs      229K     9  229K    1% /dev/shm
tmpfs                      tmpfs      229K   593  228K    1% /run
tmpfs                      tmpfs      229K    13  229K    1% /sys/fs/cgroup
/dev/sda1                  xfs         30M   330   30M    1% /boot
/dev/mapper/centos-testdir xfs         20M    90   20M    1% /testdir
tmpfs                      tmpfs      229K     1  229K    1% /run/user/0
tmpfs                      tmpfs      229K    25  229K    1% /run/user/1000
/dev/sdb1                  ext2        64K    11   64K    1% /mnt/sdb1
/dev/sr0                   iso9660       0     0     0     - /mnt/cdrom



du 

   查看使用空间,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看


#语法
du 选项 参数
-a或-all 显示目录中个别文件的大小。 
-b或-bytes 显示目录或文件大小时,以byte为单位。 
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 
-k或--kilobytes 以KB(1024bytes)为单位输出。 -m或--megabytes 以MB为单位输出。 
-s或--summarize 仅显示总计,只列出最后加总的值。 
-h或--human-readable 以K,M,G为单位,提高信息的可读性。 
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。 
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。 
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。 
--exclude=<目录或文件> 略过指定的目录或文件。 
-D或--dereference-args 显示指定符号链接的源文件大小。 
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。 
-l或--count-links 重复计算硬件链接的文件。

#例子
显示/testdir目录下所有目录和文件的大小,且显示出所有大小的总和
[root@localhost mnt]# du -ch /testdir/
64K	/testdir/bin
236K	/testdir/testbin
4.0K	/testdir/Temporary Scripts folder
45M	/testdir/
45M	total


dd

    用于复制文件并对原文件的内容进行转换和格式化处理。

if 代表输入文件。如果不指定if,默认就会从stdin中读取输入;;
of 代表输出文件。如果不指定of,默认就会将stdout作为默认输出;
bs=<字节数>:将ibs(输入)与欧巴桑(输出)设成指定的字节数; 
cbs=<字节数>:转换时,每次只转换指定的字节数; 
conv=<关键字>:指定文件转换的方式; 
count=<区块数>:仅读取指定的区块数; 
ibs=<字节数>:每次读取的字节数; 
obs=<字节数>:每次输出的字节数; 
of=<文件>:输出到文件; 
seek=<区块数>:一开始输出时,跳过指定的区块数; 
skip=<区块数>:一开始读取时,跳过指定的区块数; 
--help:帮助; 
--version:显示版本信息。
#例子
1.文件拷贝
dd if=/dev/sda    of=/root/sda
2.备份MBR
dd if=/dev/sda   of=/tmp/mbr.bak  bs=512 count=1
3.测试硬盘读写速度
[root@localhost testdir]# dd if=/dev/zero of=/root/1.txt bs=1024 count=1000
1000+0 records in
1000+0 records out
1024000 bytes (1.0 MB) copied, 0.00501107 s, 204 MB/s




总结

   硬盘是计算机中用来对数据进行存储和读取的设备,在计算机中扮演着举足轻重的的角色,没有硬盘,就是一个不完整的计算机。计算机系统和分区都是存储在硬盘之中,常用硬盘分区采用 MBR32 位扇区数分区,一个分区大小不能超过2TB,MBR分区只能分四个主分区,包括三个主分区,一个逻辑分区。默认分区后分区使用需要进行挂载使用,挂载是为了建立与根文件系统某现存的目录建立起关联关系,进而使得此目录可做为其它文件访问入口。挂载可采用手动挂载和自动挂载,自动挂载直接将挂载信息写入配置文件,需要注意的是写入格式要正确,否则将会系统再次重新启动失败。