在操作系统中,磁盘管理属于设备管理的范畴,一块硬盘安装到主机之后称为裸设备,若要能够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 EXT3 | RHEL6 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"
还需要挂载才可以正常使用刚才所创建的分区 .