CentOS、Fedora等redhat的分支,默认是不支持 ReiserFS这种文件系统的,所以如果要调整磁盘分区,像reiserfsprogs软件包是不可用的。若需要调整磁盘分区,人们首先想到的正是这个工具,网上的大部分教程都是针对这个文件系统。对于ext3可以说是非常少介绍的。

对于CentOS系统,若要支持,则需升级内核,相对麻烦。

一直以来,ext2/3/4搭配上LVM,对于redhat系列的系统是可行的了。

事实上,redhat一直自带有类似reiserfsprogs的工具的集合。

下面,我在CentOS环境下复习一遍。(PS:涉及磁盘的操作通常都是属于危险级的,请尽量慎重,最好在虚拟机下熟练操作后,再进行实体机的操作)

准备:对所要操作的分区进行备份。如果调整的是类似/、/boot等重要的分区,涉及到安全和卸载分区,所以强烈建议:备份后,在single模式下操作,或者在便携式系统里挂载所有调整的分区进行操作。

以下,对/dev/sdb1进行操作。

[root@huazi ~]# df                    
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda6              6234004   1558348   4358984  27% /
tmpfs                   255748       420    255328   1% /dev/shm
/dev/sda1                99150     29109     64921  31% /boot
/dev/sda5              1007896    113564    843132  12% /home
/dev/sda2              4031680   2667816   1159064  70% /usr
/dev/sdb1              2063504    132068   1826616   7% /mnt/sdb
[root@huazi ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda6             6.0G  1.5G  4.2G  27% /
tmpfs                 250M  420K  250M   1% /dev/shm
/dev/sda1              97M   29M   64M  31% /boot
/dev/sda5             985M  111M  824M  12% /home
/dev/sda2             3.9G  2.6G  1.2G  70% /usr
/dev/sdb1             2.0G  129M  1.8G   7% /mnt/sdb
 
因为分区很少使用,于是决定给/mnt/sdb 1G的容量,剩下的大约1G从/dev/sdb1分区中划分出来。
记下/mnt/sdb所在磁盘分区/dev/sdb1
 
卸载磁盘分区,然后检测文件系统,留意文件数。调整后,查看文件是否完整最直观的就是查看文件数。
 
[root@huazi ~]# umount /dev/sdb1
[root@huazi ~]# fsck -n /dev/sdb1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sdb1: clean, 289/131072 files, 41174/524112 blocks
 
 
调整文件系统大小,提示必须先对文件进行check。
注意:调整的文件系统大小(1024M)必须要大于原来的已使用容量(129M)
否则,原来文件就基本上不能完全保留下来。
 
[root@huazi ~]# resize2fs /dev/sdb1 1024M
resize2fs 1.41.12 (17-May-2010)
Please run 'e2fsck -f /dev/sdb1' first.
[root@huazi ~]# e2fsck -f /dev/sdb1
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 289/131072 files (0.0% non-contiguous), 41174/524112 blocks
 
对文件系统大小进行调整,调整成功。
 
[root@huazi ~]# resize2fs /dev/sdb1 1024M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/sdb1 to 262144 (4k) blocks.
The filesystem on /dev/sdb1 is now 262144 blocks long.
 
删除分区,重新进行分区。
关键:重新调整的分区要大于等于文件系统大小(1024M)
查看磁盘分区情况
 
 
[root@huazi ~]# 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): p
 
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0xe3f7864f
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         261     2096451   83  Linux
 
计算说明:
所需要的最小柱面数:文件系统的大小/Units(单位都是bytes)
                    1024*1024*1024/8225280=130.5416,取131以上即可。
 
结束的柱面数:      Start+所需要的最小柱面数
                    1+131=132
 
Command (m for help): d
Selected partition 1
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261): 132
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.
嘎嘎,到这里其实差不多成功了(差不多就是还没成功咯)
为确定已经调整分区成功,reboot吧。
 
 
 
启动后,检查调整结果。
[root@huazi ~]# mount /dev/sdb1 /mnt/sdb
[root@huazi ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda6             6.0G  1.5G  4.2G  27% /
tmpfs                 250M  420K  250M   1% /dev/shm
/dev/sda1              97M   29M   64M  31% /boot
/dev/sda2             3.9G  2.6G  1.2G  70% /usr
/dev/sda5             985M  111M  824M  12% /home
/dev/sdb1            1008M  129M  829M  14% /mnt/sdb
 
 
[root@huazi ~]# 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): p
 
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 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: 0xe3f7864f
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux
 
 
[root@huazi ~]# umount /dev/sdb1
[root@huazi ~]# fsck -f /dev/sdb1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 289/65536 files (0.0% non-contiguous), 36933/262144 blocks
 
 
好吧,经过以上的检测推断,调整分区成功啦。
调整出来的1G可以随意用啦(剩下的工作不用说了吧,分区,格式化,挂载)。
 
 
 
嘎嘎,就此打住。。。