硬盘的零磁道的第一个扇区叫做MBR(512B),分区表就存放在MBR里面,由于的分区表只有64B,一个分区占用16B,所以在系统中只可以分四个主分区,而逻辑驱动器的分区表存放在每个分区的第一个扇区(super block)里面,所以一块硬盘上要想分超过四个分区,就必须分三个主分区和一个扩展分区,然后在扩展分区里面分逻辑驱动器
在linux系统下面,系统并不识别分区有多少,而是通过分区的起始柱面数,分区的结束柱面数来识别一个分区的大小。
在linux内核支持的最大分区数量
在linux下面如何管理分区呢?
复制代码代码如下:
[root@localhost ~]# fdisk -l
Disk /dev/sda: 16.1 GB, 16106127360 bytes 255 heads, 63 sectors/track, 1958 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 535 4192965 83 Linux /dev/sda3 536 1057 4192965 83 Linux /dev/sda4 1058 1958 7237282+ 5 Extended /dev/sda5 1058 1188 1052226 82 Linux swap / Solaris /dev/sda6 1189 1253 522081 83 Linux [root@localhost ~]#
通过fdisk -l这条命令显示的信息,磁盘的总大小为16.1G,每个分区的起始柱面数和结局柱面数。每个分区的id号是多少,system的类型。 如何进行磁盘分区 可以使用fdisk工具来进行磁盘分区
复制代码代码如下:
#Fdisk /dev/sda
[root@localhost ~]# fdisk /dev/sda The number of cylinders for this disk is set to 1958. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help):
进入了这个界面,就代表进入了fdisk的管理模式
可Command (m for help): m
Command (m for help):以安装上面的提示来进行磁盘分区,
下面就来添加一块新的分区
Command (m for help): 格式化分区
复制代码代码如下:
#mkfs.ext3 /dev/sda7
This filesystem will be automatically checked every 36 mounts or
还可以在格式化的时候指定分区的block size 的大小 挂载分区
复制代码代码如下:
#Mount /dev/sda7 /mnt
[root@localhost ~]# [root@localhost ~]# mount /dev/sda7 /mnt/ [root@localhost ~]# [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 3.9G 2.5G 1.3G 68% / /dev/sda6 494M 11M 458M 3% /home /dev/sda2 3.9G 1.8G 2.0G 47% /var /dev/sda1 99M 14M 81M 15% /boot tmpfs 188M 0 188M 0% /dev/shm /dev/sda7 471M 11M 437M 3% /mnt [root@localhost ~]# cd /mnt/ [root@localhost mnt]# ls lost+found 文件系统的卷标
卷标是另外一个识别设备的方法
复制代码代码如下:
#e2label /deb/sda7
[root@localhost ~]# e2label /dev/sda7 [root@localhost ~]# 下面来给/dev/sda7添加一个卷标
复制代码代码如下:
[root@localhost ~]# e2label /dev/sda7 /disk
[root@localhost ~]# e2label /dev/sda7 /disk [root@localhost ~]# 当然,也可以使用卷标的方法挂载分区
复制代码代码如下:
[root@localhost ~]# umount /dev/sda7
[root@localhost ~]# mount LABEL=/disk /mnt/ [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 4061572 2589456 1262468 68% / /dev/sda6 505604 10545 468955 3% /home /dev/sda2 4061572 1799208 2052716 47% /var /dev/sda1 101086 13588 82279 15% /boot tmpfs 192132 0 192132 0% /dev/shm /dev/sda7 482214 10544 446771 3% /mnt [root@localhost ~]# cd /mnt/ [root@localhost mnt]# ls lost+found [root@localhost mnt]# 还可以使用mount命令不加任何参数来查询系统中所有的设备,
复制代码代码如下:
#mount
[root@localhost ~]# mount /dev/sda3 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda6 on /home type ext3 (rw) /dev/sda2 on /var type ext3 (rw) /dev/sda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) none on /proc/fs/vmblock/mountPoint type vmblock (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) nfsd on /proc/fs/nfsd type nfsd (rw) /dev/sda7 on /mnt type ext3 (rw) [root@localhost ~]#
但是,mount命令只能够查询到系统中挂载的分区,没有挂载的分区查询不到
复制代码代码如下:
#blkid
[root@localhost ~]# blkid /dev/sda6: LABEL="/home" UUID="7f75811c-8844-4d6d-a065-f4a1d75602dc" TYPE="ext3" /dev/sda5: LABEL="SWAP-sda5" TYPE="swap" /dev/sda3: LABEL="/" UUID="7c54f96f-7d2b-4da9-a4bf-3b474e0e460d" TYPE="ext3" /dev/sda1: LABEL="/boot" UUID="6663d1de-50d9-4cdf-a4f5-085cab5fa789" TYPE="ext3" /dev/sda2: LABEL="/var" UUID="b5306518-306a-4fcb-bdd5-dd4063bca9fe" TYPE="ext3" /dev/hdc: LABEL="RHEL/5.4 i386 DVD" TYPE="iso9660" /dev/sda7: LABEL="/disk" UUID="3d68e924-8974-420d-81a9-aec7b9e95079" TYPE="ext3" [root@localhost ~]# 一个tune2fs这个工具(很强大)
Tun2fs这个工具主要是用来查询文件系统的参数
复制代码代码如下:
#tune2fs -l /dev/sda7
[root@localhost ~]# tune2fs -l /dev/sda7 tune2fs 1.39 (29-May-2006) Filesystem volume name: /disk Last mounted on: <not available> Filesystem UUID: 3d68e924-8974-420d-81a9-aec7b9e95079 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal resize_inode dir_index filetype needs_recovery sparse_super Default mount options: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 124928 Block count: 497980 Reserved block count: 24899 Free blocks: 471670 Free inodes: 124917 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 Filesystem created: Fri Feb 19 21:30:36 2010 Last mount time: Fri Feb 19 23:01:52 2010 Last write time: Fri Feb 19 23:01:52 2010 Mount count: 4 Maximum mount count: 36 Last checked: Fri Feb 19 21:30:36 2010 Check interval: 15552000 (6 months) Next check after: Wed Aug 18 21:30:36 2010 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Journal inode: 8 Default directory hash: tea Directory Hash Seed: d49cd094-7bac-466f-bce7-f36e70b277b0 Journal backup: inode blocks [root@localhost ~]# 在这个里面,可以看到很多信息,可以看到工具的版本1.39版本,可以看到文件系统的卷标,最后一次挂载在哪里,文件系统的UUID是多少,还可以看到文件系统的状态,文件系统的类型,还有Inode count 和block count。 还有空余的inode 和空闲的block .还可以看到block size。还可以看到文件系统是什么时候创建的,最后一次挂载在哪里等等很多信息。
下面学习如何用tune2fs这个工具来将ext2文件系统来转成ext3的文件系统
复制代码代码如下:
[root@localhost ~]# mount | grep /dev/sda7
/dev/sda7 on /mnt type ext2 (rw) [root@localhost ~]#
可以看到,现在/dev/sda7是ext2的文件系统类型。
复制代码代码如下:
[root@localhost ~]# cp /boot/* /mnt/
cp: omitting directory `/boot/grub' cp: omitting directory `/boot/lost+found' [root@localhost ~]# cd /mnt/ [root@localhost mnt]# ls config-2.6.18-164.el5 initrd-2.6.18-164.el5kdump.img System.map-2.6.18-164.el5 initrd-2.6.18-164.el5.img symvers-2.6.18-164.el5.gz vmlinuz-2.6.18-164.el5 [root@localhost mnt]# 我们已经添加了一些文件到/dev/sda7里面,现在就开始将ext2的文件系统转换成ext3的文件系统。 转换命令:
复制代码代码如下:
#tune2fs -j /dev/sda7
[root@localhost ~]# tune2fs -j /dev/sda7 tune2fs 1.39 (29-May-2006) Creating journal inode: done This filesystem will be automatically checked every 38 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override 在使用blkid这个命令来查看一下转换是否成功,
复制代码代码如下:
[root@localhost ~]# blkid
/dev/sda6: LABEL="/home" UUID="7f75811c-8844-4d6d-a065-f4a1d75602dc" TYPE="ext3" /dev/sda5: LABEL="SWAP-sda5" TYPE="swap" /dev/sda3: LABEL="/" UUID="7c54f96f-7d2b-4da9-a4bf-3b474e0e460d" TYPE="ext3" /dev/sda1: LABEL="/boot" UUID="6663d1de-50d9-4cdf-a4f5-085cab5fa789" TYPE="ext3" /dev/sda2: LABEL="/var" UUID="b5306518-306a-4fcb-bdd5-dd4063bca9fe" TYPE="ext3" /dev/hdc: LABEL="RHEL/5.4 i386 DVD" TYPE="iso9660" /dev/sda7: UUID="2254c9c7-6d9f-41ea-9c40-ddef8ab15959" SEC_TYPE="ext2" TYPE="ext3" [root@localhost ~]# 可以看到/dev/sda7原来是ext2,后来变成了ext3的文件系统
复制代码代码如下:
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls config-2.6.18-164.el5 initrd-2.6.18-164.el5kdump.img System.map-2.6.18-164.el5 initrd-2.6.18-164.el5.img symvers-2.6.18-164.el5.gz vmlinuz-2.6.18-164.el5 [root@localhost mnt]# 看到了,原先的数据都没有丢失, 其实ext2与ext3文件系统不同的是ext3只是多了一个日志功能。运用tune2fs工具为ext2文件系统增加了一个日志区,所以就变成了ext3的文件系统
下面我再运用tune2fs来调整分区的预留的block count
复制代码代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 | grep "Block count"
Block count: 497980 可以看到分区默认的预留block count 是%5,预留block count 就是保存分区大小的%5将是不可以进入数据的,只有其他的%95才是可以写入数据的,预留block count 的意义在于防止这个分区被你写爆了,从而造成服务起不来,当然也可以用tune2fs工具来改变预留block count 现在就开始调整分区的block count
复制代码代码如下:
#tune2fs -m 10 /dev/sda7
[root@localhost ~]# tune2fs -m 10 /dev/sda7 tune2fs 1.39 (29-May-2006) Setting reserved blocks percentage to 10% (49798 blocks) [root@localhost ~]# 已经将block count 调整成%10了 在来使用tune2fs -l /dev/sda7来查看block count
复制代码代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 | grep "Block count"
Block count: 49798 [root@localhost ~]# 下面再运用tune2fs工具来给分区添加一个默认的挂载项 首先来查看一下/dev/sda7有没有默认的挂载选项
复制代码代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 |grep acl
[root@localhost ~]#
可以看到/dev/sda7这个分区的默认挂载选项是空的
复制代码代码如下:
[root@localhost ~]# tune2fs -l /dev/sda3 |grep acl
Default mount options: user_xattr acl [root@localhost ~]#
可以看到/dev/sda3分区有挂载一个挂载选项
下面给/dev/sda7添加一个acl属性
复制代码代码如下:
#tune2fs -o acl /dev/sda7
[root@localhost ~]# tune2fs -o acl /dev/sda7 tune2fs 1.39 (29-May-2006) [root@localhost ~]# 在使用tune2fs -l /dev/sda7来查看一下acl属性是否添加上去了。
复制代码代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 |grep acl
Default mount options: acl [root@localhost ~]# 可以看到的文件系统就已经有了一个acl属性 让acl属性立即生效,可以用这条命令
复制代码代码如下:
[root@localhost ~]# mount -o remount,acl /dev/sda7
[root@localhost ~]# mount | grep /dev/sda7 /dev/sda7 on /mnt type ext2 (rw,acl) [root@localhost ~]# 可以看到文件系统的acl属性就立即生效了。
关于文件系统的检查功能(fscek)
复制代码代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 | grep "mount count"
Maximum mount count: 38 先来看一下,这个参数的作用。最大的挂载次数。如果挂载次数达到38次的时候,计算机就会认为我们对这个文件系统进行频繁的操作,从而进行fscek的功能,当然这个功能我要也可以不要。 文件系统的检查功能默认是打开的,有需要的时候也可以将它关闭。 如何用tune2fs工具来关闭文件系统的检查功能 使用命令,
复制代码代码如下:
# tune2fs -c0 -i0 /dev/sda7
[root@localhost ~]# tune2fs -c0 -i0 /dev/sda7 tune2fs 1.39 (29-May-2006) Setting maximal mount count to -1 Setting interval between checks to 0 seconds [root@localhost ~]# 已经关闭了文件系统的检查功能 在使用tune2fs –l /dev/sda7来查看,
复制代码代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 |grep Check
Check interval: 0 (<none>) [root@localhost ~]# 可以看到,文件系统的fscek的功能就已经关闭了。 |