当我们拿到一块新磁盘后,该如果使用呢?一般需要经过如下步骤:

  1、对磁盘进行分割,建立可用的分区

  2、对分区格式化,以建立可用的文件系统

  3、在linux系统上建立挂载点,再将建立好的文件系统挂载上来

在详解这些过程之前,我们先来了解下磁盘的结构


一、磁盘结构(以传统机械磁盘为例)

       

wKioL1YaaQiDyllrAAIMhTS-nAQ537.jpg

  1、磁盘的最小单位为扇区(sector),处在同心圆的若干个扇区组成磁道(track),从外向内分别是0磁道、1磁道、2磁道...不同盘片的同一磁道组成柱面(cylinder),由外而内分别是0柱面、1柱面...

  2、扇区大小有512bytes和4K两种,目前仍以512bytes为主

  3、磁盘第一个扇区(0柱面0磁道1扇区)为MBR(master boot record),即主引导记录,这个扇区又包括boot loader分区表和3部分:

     1)boot loader代码区,主引导程序(如grub)446bytes,其主要任务有:

       ①提供菜单:使用者可使用不同的开机项

       ②指向开机所需的核心文件(内核、ramdisk)来启动操作系统

       ③还可将开机引导权交给其它loader,每个分区也拥有自己的开机扇区(boot sector),开机引导程序除了可以装在MBR外,还可装在分区的开机扇区。

     2)分区表:记录整个磁盘分区的状态,64bytes,每16个字节标记一个分区,因此最多可记录4个分区,分区的单位是柱面每个记录区记录了该分区从开始到结束的柱面号

wKioL1Yc8mawYQxJAACQE1_7XN0022.jpg          

       ①所谓的分区即是对该分区表所作的设置,当文件系统要写入磁盘时,首先会参考分区表

       ②这些分区为主分区(primary)或扩展分区(extend),扩展分区实为解决多分区的需求。因为primary+extend<=4,为解决多分区需要,可划分扩展分区,在扩展分区中再划分若干个逻辑分区。

       扩展分区只能有一个(操作系统的限制)且其本身不能格式化,必须划分逻辑分区后才能使用

       ④编号:主分区、扩展分区为1-4,逻辑分区从5开始

     3)MBR有效性标记,2bytes

  4、与支持最大2T磁盘且至多有4个主分区的MBR分区表相比,还有一种较新出现的GPT分区表,它能支持最大18EB磁盘且分区数没有限制,只受操作系统限制。它和UEFI相相辅助相成,UEFI将逐渐取代BIOS,而GPT也将逐渐取代MBR


二、安装系统之前的分区规划

  1、根分区当然是必需的,swap区通常也是需要的。swap是一段内存交换空间,一般分割为物理内存的两倍,以防内存不足的问题。当内存不足时,为了让后续的程序能够正常执行,内存中暂不使用的数据会被挪到swap中,需要时再挪回内存。

  2、对于一些读写较频繁或存放重要资料的大目录,也应单独分区,如/var,/home,/tmp

  3、经常访问的分区应尽量选择磁盘靠外的范围(编号较低的区),因为磁盘越靠外其圆周越大,磁头扫过一周所读取的数据也越多。我们可以注意到/boot若单独分区,总是默认为第一分区,因为/boot中存放着系统启动所需的核心文件(内核和ramdisk),这样处理可以加快系统启动速度    


二、设备文件

   linux中一切皆文件,硬件设备也会被当作文件来对待。设备文件是一种特殊文件,只有inode而没有数据,它们关联至一个驱动程序,进而跟对应的硬件设备打交道。

   ■设备文件一般在/dev目录下,在linux中,设备有“设备号”的概念:

       主设备号:major,用于标记设备类型

       次设备号:minor,用于标记同一类型中的不同设备

   ■设备文件一般是事先预置(linux 2.4-)或自动创建的(linux 2.6+),也可使用mknod命令手动创建:

     mknod [OPTION]... NAME TYPE [MAJOR MINOR],如mknod /dev/testdev b 120 1

        TYPE有:

           b:块设备,可随机读取

           c,u:字符设备,只能顺序读取

   ■以下为几种常见设备在linux系统中的命名

     ①SCSI/SATA/SAS/USB硬盘及U盘:/dev/sd[a-p]

       a-p表示设备号,若有多个设备,按照读取顺序依次命名,如/dev/sda,/dev/sdb...设备名后加上数字表示该设备的分区,如/dev/sda2表示sda的第2个分区

     ②IDE硬盘(旧式):/dev/hd[a-d]

     ③当前CD/DVD:/dev/cdrom

        

三、创建分区

  1、对于主流的MBR分区表使用fdisk命令(GPT分区表则使用gdisk命令)

     用法:

     ①fdisk -l [设备名]:查看所有磁盘或指定磁盘的分区表信息

     fdisk 设备名:在指定磁盘上创建分区

       交互式界面有许多子命令:

          m:查看帮助                                 

          p:显示磁盘分区表

          n:new,新建分区

          d:delete,删除分区

          l:列出所有已知的分区系统ID

          t:修改分区的系统ID

          w:保存并退出

          q:不保存退出

[root@localhost ~]# fdisk -l   # 查看所有磁盘分区信息,显示只有一个磁盘sda

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009f93a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1332    10485760   83  Linux
/dev/sda3            1332        1593     2097152   82  Linux swap / Solaris
[root@localhost ~]# fdisk /dev/sda   # 对磁盘sda创建分区

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

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   *
   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   # 创建新分区
Command action
   e   extended
   p   primary partition (1-4)
p   # 指定创建主分区
Selected partition 4   # 指定分区号
First cylinder (1593-3916, default 1593):    # 指定起始柱面号,选择默认起始号按回车键即可
Using default value 1593
Last cylinder, +cylinders or +size{K,M,G} (1593-3916, default 3916): +10G   # 指定分区大小

Command (m for help): p   # 显示分区表,相当于fdisk -l 设备名,可以看到新分区创建成功

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009f93a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1332    10485760   83  Linux
/dev/sda3            1332        1593     2097152   82  Linux swap / Solaris
/dev/sda4            1593        2898    10489449   83  Linux

Command (m for help): t   # 该命令可指定分区类型,如不指定,默认为Linux
Partition number (1-4): 4
Hex code (type L to list codes): L   # 注意,swap分区类型编号为82

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 ...
Hex code (type L to list codes): 6   指定分区类型编号
Changed system type of partition 4 to 6 (FAT16)

Command (m for help): p

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009f93a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1332    10485760   83  Linux
/dev/sda3            1332        1593     2097152   82  Linux swap / Solaris
/dev/sda4            1593        2898    10489449    6  FAT16

Command (m for help): n
You must delete some partition and add an extended partition first   # 因为已经有4个主分区,所以无法再创建新分区,剩余的空间也就浪费了

Command (m for help): d
Partition number (1-4): 4   # 将第4分区删除

Command (m for help): p
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1332    10485760   83  Linux
/dev/sda3            1332        1593     2097152   82  Linux swap / Solaris

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e   # 指定创建扩展分区
Selected partition 4
First cylinder (1593-3916, default 1593): 
Using default value 1593
Last cylinder, +cylinders or +size{K,M,G} (1593-3916, default 3916): 
Using default value 3916

Command (m for help): p
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1332    10485760   83  Linux
/dev/sda3            1332        1593     2097152   82  Linux swap / Solaris
/dev/sda4            1593        3916    18666534    5  Extended

Command (m for help): n
First cylinder (1593-3916, default 1593):    # 主分区加扩展分区已有4个,默认只能新建逻辑分区了
Using default value 1593
Last cylinder, +cylinders or +size{K,M,G} (1593-3916, default 3916): +10G

Command (m for help): p
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1332    10485760   83  Linux
/dev/sda3            1332        1593     2097152   82  Linux swap / Solaris
/dev/sda4            1593        3916    18666534    5  Extended
/dev/sda5            1593        2899    10490413+  83  Linux   

Command (m for help): w   # 注意保存退出
The partition table has been altered!

  2、parted是一个同时支持MBR和GPT的分区命令

     用法:parted [选项]… [设备 [命令 [参数]…]…]

     常用命令和参数:

        help [COMMAND]:查看帮助

        print [devices|free|list,all|NUMBER]:打印分区表

        select DEVICE:默认设置的是系统第一块磁盘,如果有多个磁盘,可用select选择要操作的磁盘,如select /dev/sdb

        mklabel,mktable LABEL-TYPE:创建新的分区表(mbr或gpt)

        mkpart PART-TYPE [FS-TYPE] START END创建分区,指定分区类型、大小(分区类型有primary、extended、logical,可通过查看帮助获悉)

        mkpartfs PART-TYPE FS-TYPE START END:直接创建一个带有文件系统的分区(即创建分区并格式化)

        rm NUMBER:删除指定编号的分区

        check NUMBER:对文件系统进行简单的检查

        cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER:将文件系统复制到另一个分区

        move NUMBER START END:移动指定编号的分区

        rescue START END:挽救临近分割点的遗失的分区

      1)命令行方式,如parted /dev/sda mkpart extended 10GB 20GB

      2)交互方式:parted 设备,如parted /dev/sda

[root@localhost ~]# parted /dev/sda
...
(parted) help    # 查看帮助
  align-check TYPE N                       check partition N for TYPE(min|opt) alignment
  ...
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on partition NUMBER
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system
  ...
(parted) help mkpart   # 查看指定命令的帮助信息
  mkpart PART-TYPE [FS-TYPE] START END     make a partition

	PART-TYPE is one of: primary, logical, extended
        FS-TYPE is one of: ext4, ext3, ext2, fat32, fat16, hfsx, hfs+, hfs, ...
        START and END are disk locations, such as 4GB or 10%.  Negative values count from the end of the disk.  For example, -1s specifies exactly the last sector.
        
        'mkpart' makes a partition without creating a new file system on the partition.  FS-TYPE may be specified to set an appropriate partition ID.

(parted) print free     # 显示剩余空间
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
        32.3kB  1049kB  1016kB           Free Space
 1      1049kB  211MB   210MB   primary  ext4            boot
 2      211MB   10.9GB  10.7GB  primary  ext4
 3      10.9GB  13.1GB  2155MB  primary  linux-swap(v1)
        13.1GB  32.2GB  19.1GB           Free Space

(parted) help unit
  unit UNIT                                set the default unit to UNIT

	UNIT is one of: s, B, kB, MB, GB, TB, compact, cyl, chs, %, kiB, MiB, GiB, TiB
(parted) unit cyl    # 因默认单位为GB,以此单位分区比较粗糙,为此将单位改为柱面

(parted) print free
...
Number  Start    End      Size     Type     File system     Flags
        0cyl     0cyl     0cyl              Free Space
 1      0cyl     25cyl    25cyl    primary  ext4            boot
 2      25cyl    1331cyl  1305cyl  primary  ext4
 3      1331cyl  1592cyl  261cyl   primary  linux-swap(v1)
        1593cyl  3916cyl  2323cyl           Free Space

(parted) mkpart extended 1593 3916    # 创建扩展分区
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).  As a result, it may not reflect all of your changes until after
reboot.

(parted) mkpart logical 1593 2500     # 接着创建逻辑分区
...
(parted) print   # 查看分区表显示分区创建成功
...
Number  Start    End      Size     Type      File system     Flags
 1      0cyl     25cyl    25cyl    primary   ext4            boot
 2      25cyl    1331cyl  1305cyl  primary   ext4
 3      1331cyl  1592cyl  261cyl   primary   linux-swap(v1)
 4      1593cyl  3916cyl  2323cyl  extended                  lba
 5      1593cyl  2500cyl  906cyl   logical

(parted) rm 5    # 删除第5分区
...
(parted) print
...
Number  Start    End      Size     Type      File system     Flags
 1      0cyl     25cyl    25cyl    primary   ext4            boot
 2      25cyl    1331cyl  1305cyl  primary   ext4
 3      1331cyl  1592cyl  261cyl   primary   linux-swap(v1)
 4      1593cyl  3916cyl  2323cyl  extended                  lba

(parted) quit   # 退出程序
Information: You may need to update /etc/fstab.

  3、对于已经有分区处于使用状态的磁盘来讲,新建分区后需要让内核重读其分区表,若重读不成功,还需重启系统

    ①CentOS 5:partprobe [device]

    ②CentOS 6:partx -a [device]

            kpartx -af [device]


四、创建文件系统(格式化)

   1、linux支持多种文件系统格式,有ext2,ext3,ext4,xfs,vfat等

     ①ext2是linux标准的文件系统格式,曾应用广泛,但没有日志,现已基本上被ext3和ext4取代

     ②为了解决因某些原因导致的metadata的内容与实际资料区不一致的问题,ext3格式的文件系统开始引入日志功能,专门划分一片日志区记录写入或修改文件的每一个步骤,当数据记录出现问题时,只需检查日志文档即可快速修复

     ③ext4是ext3的再次升级版,现已成为主流格式;xfs是centos 7的默认文件系统格式

     ④vfat没有日志功能,且缺乏linux系统所需要的许多特性,但它能被windows和linux识别,故除了用来在windows系统和linux系统之间共享数据外,一般情况不会采用此种格式


   2、mkfs:创建文件系统,mkfs本身并不执行文件系统创建的工作,而是调用相关程序进行

     用法:mkfs -t FS-TYPE [DEVICE]

     例如 mkfs -t ext4 /dev/sda5

          mkfs -t FS_TYPE相当于mkfs.FS_TYPE,例如mkfs -t ext4可直接写成mkfs.ext4


   3、mke2fs创建ext系列格式的文件系统

     用法:mke2fs [option]... [DEVICE]

     常用选项:

        -c:检查是否有损坏的块            

        -t {ext2/ext3/etx4}:指定文件系统,默认为ext2

        -b {1024/2048/4096}:指定块大小,若不指定,默认为4096

        -L:label,卷标

        -j:创建日志,相当于 -t ext3

        -i #:每多少个字节创建一个inode,此字节数不应小于块大小

        -N #:直接指定inode数

        -m #:指定预留空间所占整个分区空间的百分比,默认为5

        -O:指定分区特性

      如:mke2fs -t ext4 -b 2048 -m 3 -L mydata /dev/sda5

[root@localhost ~]# mke2fs -t ext4 -m 3 -b 2048 -L mydata /dev/sda5
mke2fs 1.41.12 (17-May-2010)
Filesystem label=mydata
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
657408 inodes, 5245206 blocks
157356 blocks (3.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=543162368
321 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
	16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 
	2048000, 3981312

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

   4、格式化并启用swap分区

     1)格式化swap分区

       mkswap [-L LABEL] DEVICE

     2)启用(禁用)某交换分区设备

       swapon(swapoff) [-ap] DEVICE

          -a:all,启用所有交换分区

          -p #:指定此交换设备的优先级 

       例如 mkswap /dev/sda3

           swapon /dev/sda3

       5、fsck检查并修复一个或多个linux文件系统。因进程意外中止或系统崩溃等情况导致写入操作非正常中止时,可能会引起文件损坏,此时应修复文件系统;

     用法:fsck [options]... [filesys]

     常用选项:

        -t FSTYPE:指定检查那种格式的文件系统

        -a:自动修复

        -r:交互式修复错误

     如 fsck /dev/sda5

     注意:fsck为离线修复,修复前先要确实指定分区处于卸载状态     

     filesys可以是一个设备名(如/dev/sda2 ), 挂载点, 或标签, 也可以是UUID。如果没有在命令行指定文件系统,并且没有指定-A 选项,fsck 将默认按顺序检查/etc/fstab中登记的文件系统。

[root@localhost ~]# fsck /dev/sda5
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
mynote: clean, 11/657408 files, 121824/5245206 blocks
[root@localhost ~]# fsck /dev/sda1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sda1 is mounted.    # 提示指定分区被挂载,无法继续
e2fsck: Cannot continue, aborting.

       6、e2fsck:专用于检测ext系列文件系统

      用法类似于fsck

      常用选项:

        -f:强制进行检测

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

       7、tune2fs:调整/查看ext系列文件系统的属性

      用法:tune2fs option... DEVICE

      常用选项:

        -l:查看超级块信息                 

        -c #:设置强制自检的挂载次数,如果开启,每挂载一次mount conut就会加1,超过次数就会强制自检

        -i #[d|m|w] 设置强制自检的时间间隔[d天m月w周]

        -m reserved-blocks-percentage 保留块的百分比

        -L LABLE:类似e2label的功能,可以修改文件系统的标签

        -r reserved-blocks-count 调整系统保留空间

        -O [^]FEATURE:设置或清除文件系统的特性或选项,特性前加^表示关闭指定特性  

        -o:设置或清除文件系统加载的特性或选项

[root@localhost ~]# tune2fs -l /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   mynote
Last mounted on:          <not available>
Filesystem UUID:          300e0900-992a-4aa5-a327-f1edb7bf1a6e
...
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      07cfbb4d-7656-4f8b-b319-789a20593681
Journal backup:           inode blocks
[root@localhost ~]# tune2fs -i 20d /dev/sda5   # 指定对第5分区每隔10天强制自检
tune2fs 1.41.12 (17-May-2010)
Setting interval between checks to 1728000 seconds


五、挂载文件系统

   给分区格式化之后就要挂载使用了。挂载是将额外的分区与根文件系统上的某目录建立关联的过程,把该目录当作该分区的入口的意思。这个目录就称为挂载点,该目录下的原有文件将会被隐藏。默认只有root用户有挂载权限

   1、mount挂载设备或分区

     用法:mount DEVICE(要挂载的设备或分区) MOUNT_POINT

     常用选项: 

        -a:挂载“/etc/fstab”中描述的所有文件系统

        -t FSTYPE:指定文件系统类型,通常不需指定,mount会自动选择

        -r:只读挂载

        -w:读写挂载

        -L:以卷标方式指定设备

        -U:以UUID的方式指定设备 mount UUID='uuid' 挂载点或mount -U uuid 挂载点

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

        -o OPTION:指定加载文件系统时的选项

          sync:同步I/O 

          async:异步I/O,数据写操作先在内存中完成,然后根据某种策略同步至持久设备中

          atime/noatime:文件和目录被访问时更新时间戳

          auto/noauto:设备是否支持mount的-a选项自动挂载

          exec/noexec:是否允许执行此设备上的二进制程序文件

          suid/nosuid:是否支持在些设备的文件上使用suid

          remount:重新挂载,通常用于不卸载的情况下重新指定挂载选项  

          acl:在此设备上支持使用facl (默认情况下不支持)

          defaults:使用默认的选项。默认选项为rw、suid、dev、exec、auto、nouser与async。

          dev/nodev:(不)可读文件系统上的字符或块设备

          user/nouser:默认只有root才能挂载,该参数指定是否允许一般用户挂载该分区

          defaults: 默认值为rw, suid, dev, exec, auto, nouser,and async      

          以指定挂载后支持acl为例:

             方法1:

                 mount -o acl DEVICE MOUNT_POINT

             方法2:

                 tune2fs -o acl DEVICE

        ◆根文件系统上有两个固定挂载点:/mnt,/media

        ◆有时候由于某种原因根分区处于唯读状态,而重启系统又麻烦,这时候就可以:

       mount -o remount,rw,auto /

    ◆注意:挂载点必须是已建立的目录

         使用mount命令挂载只是临时有效,若不想每次开机都手动挂载,可写入/etc/fstab文件

   2、/etc/fstab开机自动挂载的配置文件,当系统启动时,会自动地从这个文件读取信息,并且自动地将此文件中指定的文件系统挂载到指定的目录

     一行一个挂载项,其格式为:

        挂载的设备 挂载点 文件系统类型 挂载选项 转储(dump)频率 自检次序

        ①挂载的设备:可以是设备或分区名,UUID,label。建议使用UUID,此标识是独一无二的

        ②挂载选项:这个与mount -o OPTION无异,多指定多个,以逗号相隔

        ③转储(dump)频率:0表示不备份,1表示每天备份,2表示每两天备份一次

        ④自检次序:0表示不自检,额外创建的文件系统都无须自动自检,1表示首先自检,通常只有根文件系统需首先自检

      ◆/etc/fatab是开机挂载配置文件,而实际的文件系统挂载动作是记录到/etc/mtab和/proc/mounts文件中的

   3、查看所有已挂载的设备

     ①直接使用mount命令,它实际上是读取/etc/mtab文件

     ②cat /etc/mtab或cat /proc/mounts

[root@localhost ~]# mount -L mynote /mnt   # 挂载标签为mynote的分区到/mnt目录上
[root@localhost ~]# mount    # 查看所有已挂载设备
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda5 on /mnt type ext4 (rw)    # 显示已挂载成功
[root@localhost ~]# vim /etc/fstab
...
UUID=b37fe9d5-cef1-4e11-a9a7-b82df4f692f0 /                       ext4    defaults        1 1
UUID=91caabfc-c9d9-448c-bcf7-b3889df665a2 /boot                   ext4    defaults        1 2
UUID=db3bf576-304c-4bf8-9b00-03d6d3cedd8f swap                    swap    defaults        0 0
mynote                  /mnt                    ext4    defaults        0 0   # 将该分区写入开机自动挂载
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

   4、umount:卸载

     用法:umount DEVICE或umount MOUNT_POINT

     注意:只有指定的设备或分区没有被进程访问时才能卸载


     查看哪些进程正在访问挂载的设备:fuser -v 挂载点

     中止正在此挂载点的进程:fuser -km 挂载点

[root@localhost ~]# cd /mnt
[root@localhost mnt]# umount /dev/sda5
umount: /mnt: device is busy.   # 因为当前已进入分区,所以提示设备正忙,无法卸载
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[root@localhost ~]# fuser -v /mnt   # 查看正在访问该分区的进程,这里为bash
                     USER        PID ACCESS COMMAND
/mnt:                root       2070 ..c.. bash
[root@localhost mnt]# cd
[root@localhost ~]# umount /dev/sda5   # 切出后再次执行卸载
[root@localhost ~]# mount
...
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
[root@localhost ~]#

   5、光盘的挂载使用

     光盘的标准文件系统格式为iso9660,设备文件为/dev/cdrom,卸载后可执行eject命令弹出


六、查看磁盘或文件系统信息

   1、fdisk -l [DEVICE]和cat /proc/partitions:查看磁盘分区信息

      2、blkid查看块设备的文件系统类型、label、UUID等信息

     用法:blkid [option]... [DEVICE]

     常用选项:

        -s 标签:显示指定标签信息 (LABEL、UUID、TYPE)

        -o 输出格式:指定输出格式 (full、value、list\device\udev)

[root@localhost ~]# blkid
/dev/sda1: UUID="91caabfc-c9d9-448c-bcf7-b3889df665a2" TYPE="ext4" 
/dev/sda2: UUID="b37fe9d5-cef1-4e11-a9a7-b82df4f692f0" TYPE="ext4" 
/dev/sda3: UUID="db3bf576-304c-4bf8-9b00-03d6d3cedd8f" TYPE="swap" 
/dev/sda5: LABEL="mydata" UUID="300e0900-992a-4aa5-a327-f1edb7bf1a6e" TYPE="ext4"
[root@localhost ~]# blkid -s TYPE /dev/sda5
/dev/sda5: TYPE="ext4"

   3、e2label查看或设定卷标

     用法:e2label DEVICE [LABEL]

[root@localhost ~]# e2label /dev/sda5
mydata
[root@localhost ~]# e2label /dev/sda5 mynote
[root@localhost ~]# e2label /dev/sda5
mynote

   4、查看superblock信息

     tune2fs -l DEVICE

     dumpe2fs -h DEVICE

      5、df报告磁盘分区的使用情况

     用法:df [option]... [DEVICE]

     常用选项:

        -h:以常见的格式显示分区使用信息

        -i:显示inode 使用信息

        -T: 显示文件系统类型

[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       9.9G  2.9G  6.5G  31% /
tmpfs           495M     0  495M   0% /dev/shm
/dev/sda1       194M   30M  155M  16% /boot
/dev/sda5       9.9G   77M  9.5G   1% /mnt
[root@localhost ~]# df -i
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda2      655360 83652 571708   13% /
tmpfs          126544     1 126543    1% /dev/shm
/dev/sda1       51200    38  51162    1% /boot
/dev/sda5      657408    12 657396    1% /mnt

   6、du查看文件和目录的磁盘使用情况

     用法:du [option]... [文件或目录]

     不指定选项和参数则默认显示当前目录下的所有文件和子目录的磁盘使用情况

     常用选项:

        -s:显示总大小

        -a:显示当前或指定目录、子目录下的所有文件和目录的磁盘使用情况

        -h:在数字后附后单位,提高可读性

        --max-depth: 指定目录深度

[root@localhost ~]# du
...
8	./.config/ibus
28	./.config
4	./Desktop
4	./.gvfs
4	./Music
15148	.
[root@localhost ~]# du -sh
110M	.
[root@localhost ~]# du -sh /tmp
52K	/tmp
[root@localhost ~]# du -ah /home/tesla
...
12K	/home/tesla/.mozilla
4.0K	/home/tesla/.gnome2
4.0K	/home/tesla/.bash_history
4.0K	/home/tesla/.bashrc
4.0K	/home/tesla/passwd
4.0K	/home/tesla/.viminfo
4.0K	/home/tesla/shakespear
52K	/home/tesla


七、使用dd命令制作磁盘映像文件

   linux中,我们可以使用dd命令制作一个大文件并格式化当作磁盘使用,这在虚拟机中经常用到。

   dd用于从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出

   用法:dd if=输入文件或设备 of=输出文件或设备 bs=块大小 [skip=跳过的块数] count=块数    注意选项"skip=#",表示从输入文件开头跳过#个块后再开始复制,常用在创建稀疏文件中

   ◆除了用来制作映像文件,该命令也常用于拷贝数据或擦除信息,例如:

     ①dd if=/dev/cdrom of=/var/bck   # 实际上是将光盘数据作了备份           

     ②dd if=/dev/zero of=/dev/sdb bs=512 count=1

      因输出指定的是设备文件而没有指明具体的位置,所以会从磁盘的最开头写入,而磁盘开头存放着512字节的MBR数据,所以此条命令的作用相当于将该磁盘分区信息擦除


   1、创建一个容量为1G的文件

     dd if=/dev/zero of=/loop/cipan bs=1M skip=1000 count=1

     使用skip选项创建了稀疏文件,此文件容量1G,但实际占用磁盘大小只有1M

     若创建方式为dd if=/dev/zero of=/loop/cipan bs=1M count=1000,则文件实际占用1G空间,太过浪费。

   2、格式化并挂载

     mke2fs -F -t ext4 /loop/cipan

     mount -o loop /loop/cipan /media

   3、写入开机自动挂载配置文件/etc/fstab 

     注意:对于映像文件,最好使用设备名来指定

[root@localhost ~]# dd if=/dev/zero of=/loop/cipan bs=1M skip=1000 count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00239105 s, 439 MB/s
[root@localhost ~]# ll -k /loop/cipan   # 可以看到文件实际大小只有1M
-rw-r--r-- 1 root root 1024 Oct 14 20:01 /loop/cipan
[root@localhost ~]# mke2fs -F -t ext4 /loop/cipan   # 格式化该文件,通常要指定-F选项强制执行
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
...
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]# mount -o loop /loop/cipan /media   # 挂载映像文件时通常要指定 -o loop
[root@localhost ~]# blkid   # 查看其UUID
...
/dev/loop0: UUID="4124525b-03e2-4f1a-ac0a-41500dfe7911" TYPE="ext4"
[root@localhost ~]# df
...
/loop/cipan         1003      17       935   2% /media
[root@localhost ~]# vim /etc/fstab   # 写入自动开机挂载配置文件
/loop/cipan             /media                  ext4    defaults        0 0