在操作系统中,磁盘管理属于设备管理的范畴,一块硬盘安装到主机之后称为裸设备,若要能够linux系统中使用必须对其进行如下步骤: 分区 --> 格式化 --> 挂载   

 

1. linux 系统中设备类型  

 一切接文件  所以硬盘也是一个文件 

  块设备文件 (b)

    通常称为  随机设备  。所谓 块设备 是指对其信息的存取以 块 为单位,如通常的光盘  硬盘 软盘 磁带等 , 块 长取512 1024 或者 4096 字节 。块设备 可以直接通过块设备特别文件来访问,为了提高数据的传输效率 , 块设备 驱动程序内部采用快缓冲技术  。

    字符设备文件(c) 

       通常称为 线性设备 。 所谓 字符设备 是指在I/O传输中以字符为单位进行传输的设备,如键盘 打印机等 不过需要的是以字符为单位不一定意味着以字节为单位,因为有的编码规则规定 一个字符占16bit 

合2个字节。

2. 设备文件存放的/dev目录 : 

/dev/hd[a-t]IDE 设备
/dev/sd[a-z]SCSI 设备 
/dev/fd[0-7]标准软驱
/dev/md[0-31]软raid设备
/dev/loop[0-7]本地回环设备
/dev/ram[0-15]内存
/dev/null相当于回收站
/dev/zero 无限零资源 冒泡机
/dev/tty[0-63]虚拟终端
/dev/ttys[0-3]串口
/dev/lp[0-3]
并口
/dev/console 控制台

/dev/cdrom -> /dev/hdc


/dev/modem -> /dev/ttys[0-9]


/dev/pilot -> /dev/ttys[0-9]


        注意 : 控制台必须在本地 而终端可以在远端 系统只有一个控制台 叫console 其他都是终端 。 

3. linux 中硬盘类型和文件名     

    IDE硬盘和文件名

        IDE接口的硬盘命名方式为:/dev/hdxy  

        hd :表示IDE的接口类型  

        x   :表示硬盘的序号   x 的值可以是 a b c d  

     y   :表示分区号     

        如第三块IDE硬盘的第三个分区系统文件名为 : /dev/sdc3 

    SATA或者SCSI硬盘和文件名 

        硬盘命名方式为: /dev/sdxy 

        以下同上  

        说明:linux对SCSI硬盘最大支持15个分区  

                  所有使用usb接口的移动存储设备 移动硬盘 优盘 usb光驱 等 一律使用/dev/sdxy的设备文件  

                  光驱设备文件一般都是默认为 /dev/cdrom  

                  一个硬盘最多可以有四个主分区 ,扩展分区只能有一个 。 

       

   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        2576    20480000   83  Linux
/dev/sda3            2576        3596     8192000   83  Linux
/dev/sda4            3596        5222    13065216    5  Extended       #扩展分区 
/dev/sda5            3596        3851     2048000   82  Linux swap / Solaris

  MBR : 

       主引导分区是硬盘的第一物理分区 ,它位于磁盘的0磁头0柱面1扇区且有俩部分组成  主引导记录MBR+硬盘分区表DPT

       主引导扇区 = MBR + DPT + MagicNumber   


4. linux 磁盘分区 

命令名称: fdisk

命令所在路径 : /sbin/fdisk 

执行权限:root 

功能描述:磁盘分区 可以最大划分15个分区

语法 : fdisk [options] [DEVICE] 

fdisk -l  

-l : 查看当前磁盘分区的详细情况  

[root@bu2 ~]# fdisk -l                 #查看磁盘分区的情况 不带参数显示的是当前主机上所有的磁盘分区情况                      

Disk /dev/sda: 42.9 GB, 42949672960 bytes               #前主机只有一块硬盘 ,容量是42.9G
255 heads, 63 sectors/track, 5221 cylinders             #255个磁头 每个磁道63个扇区 共5221个柱面
Units = cylinders of 16065 * 512 = 8225280 bytes           
Sector size (logical/physical): 512 bytes / 512 bytes        #每个扇区512字节                         
I/O size (minimum/optimal): 512 bytes / 512 bytes            #I/O大小 
Disk identifier: 0x000dc4af

   Device Boot      Start         End      Blocks   Id  System     
/dev/sda1   *           1          26      204800   83  Linux            #第一个分区 ,按柱面划分 ,从第一个柱面开始到26柱面结束 

Partition 1 does not end on cylinder boundary.           #此处的警告说明该分区没有包含整个柱面 (一个柱面一定要是属于一个分区) 

/dev/sda2              26        2576    20480000   83  Linux    #第二个分区 ,分区类型为linux分区
/dev/sda3            2576        3596     8192000   83  Linux
/dev/sda4            3596        5222    13065216    5  Extended
/dev/sda5            3596        3851     2048000   82  Linux swap / Solaris    #逻辑分区 ,分区类型为 "交换分区"

fdisk交互式命令  

[root@bu2 ~]# fdisk /dev/sda         #fdisk的参数为设备名称而非分区名

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       #交互式命令 输入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                        #各分区类型所对应的 system 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                    #修改分区类型的 system ID   
   u   change display/entry units                     
   v   verify the partition table                        
   w   write table to disk and exit                      #保存退出
   x   extra functionality (experts only)
下面用这个新硬盘来创建分区 


[root@bu ~]# fdisk /dev/sdb       #新添加的一块硬盘,还没有被分区 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x23f33c7d.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

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): p            #显示当前分区情况 

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x23f33c7d

   Device Boot      Start         End      Blocks   Id  System

创建主分区  

[root@bu ~]# fdisk /dev/sdb 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x9bfc918e.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

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): n        #新建一个分区
Command action    
   e   extended                 #扩展分区              
   p   primary partition (1-4)  #主分区    
 p                               
Partition number (1-4): 1     #分区序号
First cylinder (1-2610, default 1):         
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +1G     #要划分的分区大小前面要带+符号

Command (m for help): p      #显示当前分区信息  

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x9bfc918e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux

创建扩展分区和逻辑分区 并保存退出   

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 1       #按1报错 因为1已经有了 
Partition 1 is already defined.  Delete it before re-adding it.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4):        #默认不选不可以
Value out of range.
Partition number (1-4): 4      #最大可以选择4 ,不可以超过4 
First cylinder (133-2610, default 133): 
Using default value 133
Last cylinder, +cylinders or +size{K,M,G} (133-2610, default 2610): 
Using default value 2610

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x9bfc918e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux
/dev/sdb4             133        2610    19904535    5  Extended

Command (m for help):
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

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


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): n

Command action

   l   logical (5 or over)            #逻辑分区

   p   primary partition (1-4)            

l

First cylinder (133-2610, default 133): 

Using default value 133

Last cylinder, +cylinders or +size{K,M,G} (133-2610, default 2610): +1G


Command (m for help): p


Disk /dev/sdb: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 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: 0x9bfc918e


   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         132     1060258+  83  Linux

/dev/sdb4             133        2610    19904535    5  Extended     #扩展分区 (不可以直接拿来使用,如果想使用需创建为逻辑分区)

/dev/sdb5             133         264     1060258+  83  Linux        #逻辑分区从 5 开始算起

说明: 

a   分区创建好了之后,用fdisk -l命令可以查看分区情况,但需要注意的是:虽然fidsk命令列出了所有的分区情况,不代表新分区就可以被操作系统识别了,文件系统是内核的功能(即软件能识别新分区但内核并不能识别),可以用"cat /proc/partitions"命令查看,若要内核能识别需要把分区变化情况同步到内核。

b   要特别注意:分区及格式化操作会永久地破坏目前存在于该分区上的任何数据,操作时需要特别小心(操作前对原有数据做备份)!


系统内核重新读取硬盘分区表


[root@bu2 ~]# fdisk -l 

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 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: 0x000dc4af

   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        2576    20480000   83  Linux
/dev/sda3            2576        3596     8192000   83  Linux
/dev/sda4            3596        5222    13065216    5  Extended
/dev/sda5            3596        3851     2048000   82  Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x1d7d6d5c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux
/dev/sdb2             133        2610    19904535    5  Extended
/dev/sdb5             133         264     1060258+  83  Linux
[root@bu2 ~]# cat /proc/partitions   #查看内核说别的分区信息
major minor  #blocks  name   #所有分区都能被内核识别到,这样才可以经行格式化分区操作,如果不能被内核识别到,则我们可以内核重新读取DPT

   8        0   41943040 sda
   8        1     204800 sda1
   8        2   20480000 sda2
   8        3    8192000 sda3
   8        4          1 sda4
   8        5    2048000 sda5
   8       16   20971520 sdb
   8       17    1060258 sdb1
   8       18          1 sdb2
   8       21    1060258 sdb5

让内核重新读取分区表 

rhel5 : partprobe  [device]  

rhel5 能执行成功,rhel6上可能不行 ,需要重新启动系统  

[root@bu2 ~]# partprobe /dev/sda    # 提示需要重启系统所有分区才能被内核识别
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (设备或资源忙).  
As a result, it may not reflect all of your changes until after reboot
[root@bu2 ~]# partx -a /dev/sda       #不带分区选项表示读取指定硬盘的所有分区
BLKPG: Device or resource busy        #显示设备繁忙无法添加分区
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
BLKPG: Device or resource busy
error adding partition 4
BLKPG: Device or resource busy
error adding partition 5
[root@bu2 ~]# partx -a /dev/sda1 /dev/sda    #手动添加成功 
[root@bu2 ~]#


5. linux 创建文件系统 

只有内核识别到硬盘分区信息 ,才能够进行格式化操作,格式化的过程就是文件系统创建的过程。 

linux 系统支持的文件系统类型 

[root@bu2 ~]# ls /lib/modules/2.6.32-358.el6.x86_64/kernel/fs/
autofs4     configfs  exportfs  fat      jbd    mbcache.ko  nls       xfs
btrfs       cramfs    ext2      fscache  jbd2   nfs         squashfs
cachefiles  dlm       ext3      fuse     jffs2  nfs_common  ubifs
cifs        ecryptfs  ext4      gfs2     lockd  nfsd        udf


文件系统的简单介绍 

1)minix 

   是Minix操作系统使用的文件系统,是Linux最先使用的文件系统。它有许多缺点:分区只能小于64MB,只支持短文件名,单一的时间戳,等等。在软盘和动态磁盘领域仍然有用。

(2)ext 
   是对Minix的扩展。已完全被ext2取代,内核最终将不会支持它。

(3)ext2 
   是Linux使用的,性能很好的文件系统,用于固定文件系统和可活动文件系统。它是作为ext文件系统的扩展而设计的。ext2在Linux所支持的文件系统中,提供最好的性能(在速度和CPU使用方面),简短的说,ext2是Linux的主要文件系统。

(4)ext3 
   是对ext2增加日志功能后的扩展。是RHEL5中默认使用的文件系统类型。它向前、向后兼容ext2,意为ext2不用丢失数据和格式化就可以转换为ext3,ext3也可以转换为ext2 而不用丢失数据(只要重新安装该分区就行了),强烈推荐使用这种文件系统。

(5)ext4

   为第4代扩展文件系统,是RHEL6中默认使用的文件系统类型,属于典型的日志型文件系统。其特点是保持有磁盘存取记录的日志数据,便于恢复,性能和稳定性更加出色。

(6)ReiserFS/JFS

   仍然在完善的带日志文件系统,特别适合小文件的文件系统

(7)ISO9660文件系统

   该文件系统中光盘所使用的标准文件系统,Linux对该文件系统也有很好的支持,不仅能读取光盘和光盘ISO映像文件,而且还支持在Linux环境中刻录光盘。

(8)NFS文件系统 
   NFS即网络文件系统,用于在UNIX系统间通过网络进行文件共享,用户可将网络中NFS服务器提供的共享目录挂载到本地的文件目录中,从而实现操作和访问NFS文件系统中的内容。

(9)swap文件系统

   swap文件系统用于Linux的交换分区。在Linux中,使用整个交换分区来提供虚拟内存,其分区大小一般应是系统物理内存的2倍,在安装Linux操作系统时,就应创建交换分区, 它是Linux正常运行所必需的,其类型必须是swap,交换分区由操作系统自行管理。

    


RHEL5   EXT3RHEL6 EXT4
格式化命令

命令名称:mkfs


命令所在路径: /sbin/mkfs 


执行权限: root 


功能描述:创建问价系统 


语法: mkfs [-t fstype] /dev/磁盘分区名


命令使用方法: 


mkfs -t ext4=mkfs.ext4 =mke2fs -t ext4 


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


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

命令名称: mke2fs


命令所在路径: /sbin/mke2fs 


执行权限: root


功能描述:创建ext2/ext3/ext4 文件系统


语法: mke2fs -t {ext2|ext3|ext4}


常用选项: 


-b {1024|2048|4096} 指定块大小 

 

-L label 设定卷标


-m 预留给管理使用的块的个数 


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


配置文件 : 


/etc/mke2fs.conf 用于设定默认特性,及

文件系统的特有的特性


[root@bu2 ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)      #块大小为4096
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
66384 inodes, 265064 blocks
13253 blocks (5.00%) reserved for the super user      #默认分区的5%的空间预留给管理使用的块
第一个数据块=0
Maximum filesystem blocks=272629760
9 block groups
32768 blocks per group, 32768 fragments per group
7376 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376
正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@bu2 ~]# mke2fs -b 2048  /dev/sdb1 
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=2048 (log=1)                    #可以看到块大小变成了2048B了
分块大小=2048 (log=1)               
Stride=0 blocks, Stripe width=0 blocks
66528 inodes, 530128 blocks
26506 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=537919488
33 block groups
16384 blocks per group, 16384 fragments per group
2016 inodes per group
Superblock backups stored on blocks: 
        16384, 49152, 81920, 114688, 147456, 409600, 442368
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


6. 查看调整分区系统参数 


tune2fs
e2label
blkid

命令名称: tune2fs


命令所在路径: /sbin/tune2fs 


执行权限: root


功能描述: 调整文件系统参数


语法: tune2fs [options] device 


常用选项: 


-l:显示文件系统超级模块信息


-L LABEL:重新设定卷标


-m :调整预留给管理块的所占总体空      间的比例

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


-o : 设定挂载默认选项


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


-E :调整文件系统的扩展属性 

命令名称: e2label


命令所在路径:/sbin/e2label 


执行权限: root


功能描述: 显示或者设定卷标 


语法: e2label device [Volume_label]

命令名称:blkid


命令所在路径:/sbin/blkid


执行权限: root


功能描述:显示设备的uuid 文件系统

及卷标


语法:blkid device 



uuid : 用来表示全局唯一ID号 

       用在多分区中识别某个分区


[root@bu2 ~]# tune2fs -l /dev/sda1                         #查看sda1分区超级块信息
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          /boot
Filesystem UUID:          e445d0b8-1f2b-48ba-949b-8960d9f96b3a           #uuid 
Filesystem magic number:  0xEF53                                    #文件系统魔数
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash       
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              51200
Block count:              204800                #总共块个数
Reserved block count:     10240
Free blocks:              169185
Free inodes:              51162
First block:              1
Block size:               1024                  #块大小 
Fragment size:            1024
Reserved GDT blocks:      256
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         2048
Inode blocks per group:   256
Flex block group size:    16
Filesystem created:       Tue Apr 22 04:45:21 2014          #文件系统创建时间
Last mount time:          Mon May 26 23:53:32 2014
Last write time:          Mon May 26 23:53:32 2014
Mount count:              9
Maximum mount count:      -1
Last checked:             Tue Apr 22 04:45:21 2014
Check interval:           0 (<none>)
Lifetime writes:          34 MB
Reserved blocks uid:      0 (user root)                     #预留的用户是root 
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               128
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      8efe5e2e-ce59-4693-8ff2-13b6382cf019
Journal backup:           inode blocks

7.设定卷标 查看卷标 uuid 和文件系统类型 

[root@bu2 ~]# e2label /dev/sda1 bdstravel         #设定卷标为bdstravel 

[root@bu2 ~]# blkid /dev/sda1            #卷标 uuid 文件系统类型

/dev/sda1: LABEL="bdstravel" UUID="e445d0b8-1f2b-48ba-949b-8960d9f96b3a" TYPE="ext4"


还需要挂载才可以正常使用刚才所创建的分区 .