作为系统管理员的我们,经常遇到要增加或缩小某文件系统的需求。对于Unix上的主流OS以及linux来说,动态逻辑卷管理(LVM)能够很好的帮我们完成这个工作。但是对于不支持LVM的Solaris系统,只能用笨办法实现了。


假设一个工作场景,我需要在服务器硬盘上新增一个独立的文件系统,但是硬盘上已经没有可分配的自由空间。可选择的一种解决办法就是缩小已存在的某个文件系统,挤出一些自由空间。


硬盘现在已有三个文件系统(“/”,“/usr”,“/export/home”):

# df -h

Filesystem size used avail capacity Mounted on

/dev/dsk/c0d0s0 5.8G 3.8G 2.0G 66% /

/dev/dsk/c0d0s3 6G 4G 2.0G 66% /usr

/dev/dsk/c0d0s7 12G 12M 11G 1% /export/home

其中“/export/home”的容量最大,但已使用空间最少,选择缩小该文件系统以挤出自由空间。


以下是缩小文件系统步骤:


1、备份文件系统内容

# tar cvf /home.tar /export/home


2、卸载文件系统

# umount /export/home


3、修改/etc/vfstab,注释该文件系统项

# vi /etc/vfstab

#device device mount FS fsck mount mount

#to mount to fsck point type pass at boot options

#

#/dev/dsk/c0d0s7 /dev/rdsk/c0d0s7 /export/home ufs 2 yes -


4、用format缩小文件系统大小

# format

此处略去300字......

过程是将文件系统S7的容量设的小一些,可参考其他format命令文档设置。


5、用newfs重新格式化文件系统

# newfs c0d0s7

newfs: construct a new file system /dev/rdsk/c0d0s7: (y/n)? y

Warning: 240 sector(s) in last cylinder unallocated

/dev/rdsk/c0d0s7: 12594960 sectors in 2050 cylinders of 48 tracks, 128 sectors

6149.9MB in 129 cyl groups (16 c/g, 48.00MB/g, 5824 i/g)

缩小后的文件系统是6G,释放了大约6G的自由空间。


6、恢复/etc/vfstab文件系统项

# vi /etc/vfstab

#device device mount FS fsck mount mount

#to mount to fsck point type pass at boot options

#

/dev/dsk/c0d0s7 /dev/rdsk/c0d0s7 /export/home ufs 2 yes -

将文件系统前的“#”注释符去掉


7、重新挂载文件系统

# mount /export/home


8、将备份恢复到文件系统下

# tar xvf /home.tar


9、既然有了6G的自由空间,剩下的事情就好办了,我就不赘述了。



增加文件系统大小的过程跟缩小基本相同,都遵循这个基本思路:

备份文件系统内容 --> 卸载文件系统 --> 更改文件系统大小 --> 重新格式化文件系统 --> 重新挂载 --> 恢复原来的备份到文件系统。


oracle视频教程请关注:http://down.51cto.com/4202939/up