在运用linux的进程中, 有时会呈现因为装置体系时分区不妥导致有的分区空间缺乏,而有的分区空间过剩的状况.比方: 我在装置体系时给/usr/local分配器了5G的空间,但运用一段进程后发现, /usr/local最多只用到了1G.这样能够将/usr/local巨细调整为1G. 空出4G留作他用.本文概括了在不破快文件体系数据的前提下对文件体系巨细进行调整的办法.这儿选用的是拆东墙, 补西墙的办法. 当然, 假如你的磁盘中有未分区的闲暇空间, 你就不必减小某个分区的空间了.
准备作业
(一) 备份
首要组好备份要更改的分区中的文件. 对磁盘的操作或许会导致数据的丢掉. 开端作业之前最好将重要的数据保存到其他分区.
(二) 获取相关信息.
1, 运转 $ df , 查看文件体系信息. 记下你想要调整的分区对应的挂载点和设备文件.
这一步是为了查看/usr/local对应/dev/中的哪个设备文件. 本文以/dev/hda7为例.
2, 运转 # sudo fdisk /dev/sda . 进入fdisk , 按下p, 查看磁盘分区信息. 记下/dev/sda8的开端柱面号, 停止柱面号. 设他们分别为start, end. 并记下一个Unit包括多少字节.
留意, 文件体系巨细和磁盘分区巨细是不能同等的: 最少他们的计量单位不同. 在文件体系中, 一般用KB, MB, GB为单位. 但在fdisk中, 是以磁盘的unit值(即一个柱面中包括的字节数)来核算的. 咱们运转 # fdisk /dev/sda后, fdisk显现如下信息:
Disk /dev/sda: 163.9 GB, 163928604672 bytes
255 heads, 63 sectors/track, 19929 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
(三)核算停止柱面号
e.g: 原先/usr/local的巨细为5000 MB, 开端柱面号为2550, 停止柱面号为3157. 那么我现在要将它的巨细改为1000MB, 应该这样核算停止柱面号( [3.2] = 4 ):
停止柱面号 = 2550 [(1000 * 1024 * 1024 ) / 8225280] = 2678
运用fdisk删去本来的分区(曾经分区的数据不会丢掉!). 然后新建一个分区, 新分区于旧分区仅有的差异就在于分区巨细不一样, 这体现在他们停止柱面号不同.
添加分区巨细: 停止柱面号设置为闲暇空间的最终一个柱面号.减小分区巨细: 停止柱面号由核算得出.
开端调整
在开端调整之前, 最好拿一张纸记下要调整的分区的下列信息:
调整前巨细, 调整后巨细. 它挂载在哪个目录, 对应于/dev/中的哪个设备. 开端, 停止柱面.
e.g: 调整前: 5G, 调整后: 1G, 挂载点: /usr/local, 对应于/dev/hda7. 开端,停止柱面分别为2550, 3157.
1, 卸载分区
最好在runlevel = 1的状况下卸载.
# umount /dev/
2, 查看文件体系的一致性
# fsck -n /dev/
3, 如够是ext3体系, 还要去除日志
# tune2fs -O ^has_journal /dev/
留意: 取出日志后的ext3体系是无法挂载的, 运用
# tune2fs -j /dev/重建日志.
4, 调整文件体系巨细
# resize_reiserfs -s 1000M /dev/hda7
调整完文件体系的巨细今后,再运用以下指令以文件体系进行全面的查看:
# reiserfsck –check –fix-fixable /dev/hda7
5, 进入fdisk, 调整分区巨细.
# fdisk /dev/hda
因为内核依然运用旧的分区表, 重启之后再进行后边的过程.
经过以上过程,咱们现已完成了硬盘分区巨细调整的操作,接下来回到从头调整文件体系巨细的问题上来。 因为硬盘分区是依照柱面来方案的,咱们要在 resize_reiserfs过程上就一步到位调整文件体系巨细与硬盘分区巨细正好持平是比较困难的工作。所以一般是调硬盘分区比文件体系要大一点点, 然后再经过以下指令进行同步(当然假如你不在意硬盘分区里边存在部分空间的话也能够疏忽以下过程):
# umount /home/
# resize_reiserfs /dev/hda6
这样, 就将/usr/local的巨细调整为1G, 留下了4G的闲暇磁盘空间。