当初直接拷贝的别人的Fedora11 Linux系统,总共有8G的空间,但是可用空间一直在200-300M上,终于在忍无可忍之下决定增加下空间吧。简单的搜索了下,一般有两种方法,一是利用vmware-vdiskmanager.exe 工具在原有的虚拟机磁盘空间上增加;二是通过vm中的setting项直接增加一个磁盘。我这里采用第一种方式。我估计第二种在增加了后也类似,相当于是为多加了个硬盘,然后重新挂载上。
进入正题,具体如下:
(1)使用vmware-vdiskmanager.exe
命令行中进入vmware的安装目录,运行vmware-vdiskmanager.exe命令,可以看到命令选项提示,其中为你的虚拟机扩容的类似例子如图所示(没有打开虚拟机,不知道开着vmware会不会影响)
因此,很简单,输入:vmware-vdiskmanager.exe -x 10Gb “*.vmdk”.要说明的是 -x表示扩容,10Gb是你想要的扩容后磁盘的总容量,包含原来你为你的系统分配的磁盘容量,后面则是你的系统目录中以vmdk结尾的文件名。还有当时有点担心Gb系统能分清不,后来看了图上的命令示例放心了。
命令执行后,等段时间,可以看到如下图所示
警告信息应该是:“如果原来的虚拟机硬盘已被分成了多个分区,那么在通过 vmware-vdiskmanager.exe扩大了硬盘空间后,还需要在虚拟机系统中将增加的分区划分、格式化。”照搬的参考文章1。
(2)格式化新增空间
打开虚拟机,root身份进入系统,df一下,发现没有增加空间,看来还是乖乖格式化和挂载吧!
先fdisk -l看一下自己情况,呵呵已经有10Gb了
输入fdisk /dev/sda,选择m看看帮助:
那么开始新增空间依次选择p(查看已有分区),n(新增分区),e(选择扩展分区),我的选择3,其它的默认,自己根据自己的sda情况选择了,完成后,p(看看成果),然后w(保存)。记住要重启,不然如图了:
(3)格式化为ext3格式
系统登录后,输入mkfs.ext3 /dev/sda3结果出现了问题,如图所示:
只好再用fdisk /dev/sda再来一遍,最后添加了sda3又添加了sda5之后才成功。如果直接格式化成功了就跳到步骤(4)吧。
错误出现后,具体过程是fdisk /dev/sda 进入后在m帮助下,输入n(继续添加新分区),此时弹出的选项与添加sda3不同,选择l(添加逻辑分区),w(保存),reboot(重启),再次mkfs.ext3 /dev/sda3,还是原来的错误,准备放弃的时候,mkfs.ext3 /dev/sda5,居然可以,结果如图
(4)开机自动挂载
格式化完后,创建新空间挂载的地方,mkdir -p /opt/sda5,修改/etc/fstab,照人家先备份,不过似乎没什么问题。在最后一行添加
/dev/sda5 /opt/sda5 ext3 defaults 0 0
意思就是将新增空间挂载到/opt/sda5,文件系统类型为ext3,默认挂载方式等等,具体的可见文章2。
reboot后,df一下,高兴的看见有了sda5,进入/opt/sda5,也看到了新增的1.8G空间。
最后还是有些问题,那个sda3就那么不知道怎么回事了,希望懂的人给讲讲,在此先谢谢了!如果也和我一样也出了问题,也请告诉我。
参考:
http://www.linuxidc.com/Linux/2011-05/36110p3.htm
http://www.linuxidc.com/Linux/2011-05/36110p4.htm
增加VMware下的虚拟机磁盘空间
在安装虚拟机Linux的时候,为了节省硬盘空间,常把硬盘容量设置得较小,可是随着安装软件的增加,比如Oracle、SUN Studio等软件,硬盘容量就不够用了。
VMware6.0安装目录下有一个命令行工具vmware-vdiskmanager.exe 程序,可用来修改虚拟机硬盘的大小。方法如下:
1. 关闭虚拟机;启动Windows下的命令提示符界面;
2. 命令进入VMware的安装目录(如:D:\VMware),输入“vmware-vdiskmanager”后按回车键,可显示关于该命令的说明。
3. 执行如下命令:
vmware-vdiskmanager -x 20Gb “J:\VMware Space\SUSE Linux 64-bit.vmdk”
参数-x表示要扩展虚拟机硬盘空间;紧随其后的数字指要扩展的大小(如20Gb,表示磁盘总量,包含原来的磁盘容量);最后是要操作的虚拟机Linux的具体文件。若路径名中有空格,必须以双引号括起来。
等待约20分钟,执行完毕,退出命令提示符窗口,重启VMware,这时虚拟机硬盘空间已变成20GB了。这个过程中,已安装的Linux系统不会被破坏。
如果原来的虚拟机硬盘已被分成了多个分区,那么在通过 vmware-vdiskmanager.exe扩大了硬盘空间后,还需要在虚拟机系统中将增加的分区划分、格式化。
4. 启动虚拟机系统,用root登录(后续所有步骤都应以root用户身份登录操作),在 命令行用fdisk -l查看。由于这里是直接修改了原始空间大小,因此可以看到/dev/sda空间改变为21.4GB。如果是从VMware菜单里增加虚拟硬盘,则会多出一个/dev/sd?,这里的?代表硬盘编号,第一个硬盘编号为a即sda,第二个就是sdb,第三个是sdc,以此类推,一般来说,如果以前没有增加过硬盘,那么原来的硬盘就是sda,通过VMware菜单增加的虚拟硬盘编号就是sdb。如果添加的第二块硬盘是IDE硬盘,就应该看到hdb,如果是SCSI硬盘,看到的就应该是sdb。
hawkzy:~ # fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00067588
Device Boot Start End Blocks Id System
/dev/sda1 1 95 763056 82 Linux swap / Solaris
/dev/sda2 * 96 868 6209122+ 83 Linux
/dev/sda3 869 1958 8755425 83 Linux
5. 使用fdisk /dev/sda进入菜单项,m是列出菜单,p是列出分区表,n是增加分区,w是保存并推出。由于系统已经有了3个主分区,因此将这次新增的空间划分为扩展分区,再将扩展分区重新分区。由于这里扩展分区只有5G,因此5G划为一个区。
hawkzy:~ # fdisk /dev/sda
The number of cylinders for this disk is set to 2610.
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): 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
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
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): p
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00067588
Device Boot Start End Blocks Id System
/dev/sda1 1 95 763056 82 Linux swap / Solaris
/dev/sda2 * 96 868 6209122+ 83 Linux
/dev/sda3 869 1958 8755425 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Selected partition 4
First cylinder (1959-2610, default 1959):
Using default value 1959
Last cylinder or +size or +sizeM or +sizeK (1959-2610, default 2610):
Using default value 2610
Command (m for help): p
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00067588
Device Boot Start End Blocks Id System
/dev/sda1 1 95 763056 82 Linux swap / Solaris
/dev/sda2 * 96 868 6209122+ 83 Linux
/dev/sda3 869 1958 8755425 83 Linux
/dev/sda4 1959 2610 5237190 5 Extended
Command (m for help): n
First cylinder (1959-2610, default 1959):
Using default value 1959
Last cylinder or +size or +sizeM or +sizeK (1959-2610, default 2610):
Using default value 2610
Command (m for help): p
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00067588
Device Boot Start End Blocks Id System
/dev/sda1 1 95 763056 82 Linux swap / Solaris
/dev/sda2 * 96 868 6209122+ 83 Linux
/dev/sda3 869 1958 8755425 83 Linux
/dev/sda4 1959 2610 5237190 5 Extended
/dev/sda5 1959 2610 5237158+ 83 Linux
Command (m for help): w
6. 用mkfs命令将其格式化为ext3格式。
mkfs.ext3 /dev/sda5
7. 增加文件夹/opt/sda5。这里增加的文件夹是为了挂载新增加的分区。
mkdir -p /opt/sda5
8. 修改文件/etc/fstab,挂载/dev/sda5到/opt/sda5下
先备份:
hawkzy:~ # cp /etc/fstab /etc/fstab.bak
再在文件/etc/fstab最后一行增加如下内容下面
/dev/sda2 / ext3 acl,user_xattr 1 1
/dev/sda3 /home ext3 acl,user_xattr 1 2
/dev/sda1 swap swap defaults 0 0
/home/swap swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
/dev/sda5 /opt/sda5 ext3 defaults 1 1
9. 重启init 6
查看:
www.linuxidc.com@linuxidc:~> df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 6111520 5433528 367536 94% /
udev 648032 60 647972 1% /dev
/dev/sda3 8617868 7008780 1171320 86% /home
/dev/sda5 5154852 141440 4751556 3% /opt/sda5
现在挂载已经成功。但是,由于系统空间小的问题并没有解决(/dev/sda2空间仅余下6%),因此还需要进一步修改配置。
10. 备份/usr文件夹下的文件到/opt/sda5下
经过分析/dev/sda2下/usr文件夹非常大,占据3.5G空间,为了释放系统空间,这里考虑将用新增加的分区作为/usr的镜像。而/opt/sda5挂载的/dev/sda5,空间有5G,足够使用了。
拷贝/usr下的所有文件到/opt/sda5下:
cp -r /usr/* /opt/sda5/
11. 重新修改/etc/fstab文件,挂载/dev/sda5到/usr目录下
这一步修改文件重启后才能生效。但是修改完后暂时不要重启。
/dev/sda5 /usr ext3 defaults 1 1
12. 保留/usr文件夹,但是删除/usr下的所有文件,为挂载做准备。
cd /usr
rm -rI *
删除完后重启。重启后用命令观察是否挂载成功,正常情况下应该能够顺利完成。如果挂载失败,应修改文件/etc/fstab并且用命令mount重新挂载:
mount /dev/sda5 /usr
www.linuxidc.com@linuxidc:~> df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 6111520 2780952 3020112 48% /
udev 648032 60 647972 1% /dev
/dev/sda3 8617868 7011912 1168188 86% /home
/dev/sda5 5154852 4675196 217800 96% /usr
详解Ubuntu下的fstab文件
可能玩Linux的朋友都知道fstab这个文件,如果要用好linux,熟悉linux的一些核心配置文件是必要的,而fstab则是其中之一。这个文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作。因此,我们需要理解其中的内容,了解它如何与 mount命令配合工作,并能够针对自己的情况进行修改。
作为系统配置文件,fstab通常都位于/etc目录下,它包括了所有分区和存储设备的信息,以及它们应该挂载到哪里,以什么样子的方式挂载。如果遇到一些类似于无法挂载你的windows分区阿,无法使用你的光驱阿,无法对某个分区进行写入操作阿什么的,那么基本上可以断定,你的fstab内容有问题了。也就是说,你可以通过修改它来搞定这些问题,而不用去论坛冰天雪地裸体跪求答案了。
说了半天,/etc/fstab其实就是一个文本文件,用gedit或者vi都可以打开,当然,前提是root权限。在这个文件中,每个文件系统(包括分区或者设备)用一行来描述,在每一行中,用空格或TAB符号来分隔各个字段,文件中以*开头的行是注释信息。Fstab文件中的纪录的排序十分重要。因为 fsck,mount或umount等程序在做它们的工作时会按此顺序进行本。下面进行详细的讲解,本文假设读者已经有挂载文件系统和分区的基础知识。
在讲解之前要说一下,每个人所使用的系统情况都是不同的,包括硬件种类,所用系统等,因此fstab文件肯定是有所差异的。但是其基本结构,如上所述,都不会变。所以我们先以一个fstab内容作为模板进行讲解。
首先请看下面这个例子:
/dev/hda2 / ext2 defaults 1 1
/dev/hdb1 /home ext2 defaults 1 2
/dev/cdrom /media/cdrom auto ro,noauto,user,exec 0 0
/dev/fd0 /media/floppy auto rw,noauto,user,sync 0 0
proc /proc proc defaults 0 0
/dev/hda1 swap swap pri=42 0 0
这些看起来毫无意义的字符代表了什么?在对应相应分区或者存储设备信息的每一行中,每一列又是什么意思?先大体讲一下,第一列表示设备的名称,第二列表示该设备的挂载点,第三列是文件系统,第四列是挂载选项,第五列是dump选项(用一个数字表示),第六列(接下来的数字)表示文件系统检查选项。好了,接下来,就要详细介绍这些参数的具体含义了。
第一、二列:设备和默认挂载点
说实话,第一列和第二列的内容是最简单最直接的,它们的作用就是告诉mount命令,我想挂载什么分区或者什么设备,以及我所希望的挂载点在哪里。在fstab中为某一个设备指定的挂载点是其默认挂载点,也就是当你在挂载目录的时候没有手工指定其他目录的话,系统就将该设备挂载到这个目录。大多数 Linux发行版都会为挂载点创建专门的目录,大多数是在/mnt下,但是一些发行版(比如SUSE或者ubuntu)是在/media下。笔者使用的是 ubuntu,所以示例信息中也是用的/media目录。
按照我们给出的fstab示例,如果你敲入命令
$ mount /dev/fd0
你的软驱就将挂载到/media/floppy,因为这是你告诉系统的软驱默认挂载点。如果没有这个信息,当你敲入mount命令时,mount 会感到很困惑:该死的,你想让我把这玩意挂载到哪里去呢?当然,如果你看fstab中发行版给你指定的默认挂载点不顺眼,也可以自由修改它,修改成任何一个你希望的目录都可以。如果还不存在,就首先创建这个目录。要知道,fstab是不会把所有工作都给你包干的哦。
另外,有一些分区和存储设备是在Linux系统启动的时候就自动挂载的,比如,让我们看看刚才列出来的fstab示例信息,有两行是这样的:
/dev/hda2 / ext2 defaults 1 1
/dev/hdb1 /home ext2 defaults 1 2
正如刚才我们讲到的那样,这两行表示/dev/hda2默认挂载到/根目录,而 /dev/hdb1则默认挂载到/home目录,。这些工作在你Linux系统启动的时候就会通过读取fstab自动完成,否则的话……想象你会遭受什么样的折磨吧,所有的程序都在/根目录下,而你却无法使用,因为你没有挂载/根目录!恩,我保证,这将是一次让人沮丧的系统使用经历。
除了显示的使用设备名,你可以使用设备的UUID或设备的卷标签,例如,你可以在这个字段写成“LABAL=root”或“UUID= 3e6be9de- 8139-11d1-9106-a43f08d823a6”,这将使系统更具伸缩性。例如,如果你的系统添加或移除了一个SCSI硬盘,这有可以改变你的设备名,但它不会修改你的卷标签。
对于NFS mount操作,这个字段应该包含host:dir格式的信息,例如:knuth.aeb.nl:/,对于进程文件系统procfs,使用proc。
第三列:文件系统类型
fstab中的第三列指示了设备或者分区的文件系统类型。它支持很多种类的文件系统,我们在这里只介绍最为常用的。如果想了解你的kernel目前支持哪些文件系统,可以查看/proc/filesystems的内容。如果这个字段定义为swap,这条纪录将关联到一个用于交换目的的文件或分区。如果这个字段定义为ignored,这行将被忽略。这对于显示目前没有使用的分区非常有用。
ext2 和 ext3: Linux下的Ext2文件系统,是 GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计。至于Ext3文件系统,它属于一种日志文件系统,是对ext2系统的扩展。日志式文件系统的优越性在于,它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回朔追踪。由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回朔并重整被中断的部分,而不必花时间去检查其他的部分,故文件系统检测不一致时,重整的工作速度相当快,几乎不需要花时间。
reiserfs: ReiserFS是一个非常优秀的文件系统。也是最早用于Linux的日志文件系统之一,其机制比Ext3要先进得多,风雷小弟一直使用的就是它,很多发行版现在也把它作为默认文件系统了。可惜其作者前段时间出事了……具体情况就不说了,也不知道下一代reiserfs4还能不能出来,因为ext4都有了。
swap: Swap,即交换区,把它想象成虚拟内存就行了。
vfat 和 ntfs:一看就知道是Windows分区格式了,呵呵。98,me等系统都是使用的vfat,也就是最流行的fat32格式,而NT系列则多使用 NTFS,当然也不是固定的,因此2000或者XP系统要具体情况具体分析。当初Linux对NTFS的写入支持不好,所以大多数资料都建议用户使用 vfat格式,但是现在支持已经很好了,即使不重新编译内核,也可以通过ntfs-3g来进行写入支持(具体方法请参考这篇文章),因此不用太在意这个了。
auto:当然,这不是一个文件系统类型。auto只是表示,文件系统的类型将被自动检测。在上面的示例中,你会发现软驱和光驱的文件系统类型都是auto,为什么呢?因为它们的文件系统类型随时都可能改变,比如软驱,优盘这种设备,可能今天是vfat格式,明天你就把它格式化成了ntfs,因此,最明智的做法就是告诉系统,我没法确定这东西的当前类型,还是你自己检测吧。
udf:由于刻录光驱越来越流行,现在很多发行版自带的fstab中,光驱的文件格式类型是UDF,UDF是Universal Disc Format的缩写,与ISO 9660格式相容。它采用标准的封装写入技术(PW,Packet Writing)将CD-R/CD-RW当作硬盘使用,用户可以在光盘上修改和删除文件。利用UDF格式进行刻录时,刻录软件将数据打包,并在内存中临时建立一个特殊文件目录表,同时接管系统对光盘的访问。
iso9660:很多光驱也使用的这个选项。ISO9660是一种描述适合CD盘片的电脑文件结构的国际标准。采用此标准的盘片可以在不同的操作系统上使用,如MAC和Windows。
第四列:挂载选项
fstab中的第四列表示设备或者分区所需要的挂载选项。这一列也是fstab中最复杂最容易出错的一列,当然,只要你能知道一些最常用的选项是什么意思,就可以让你从头疼中解脱出来。如果要把可用的选项一项一项介绍……恩,我估计我会写到明天,所以,我还是只是分析最常用的一些选项,如果你想知道更多的东西,还是求助于man吧。
auto 和 noauto:这是控制设备是否自动挂载的选项。auto是默认选择的选项,这样,设备会在启动或者你使用mount -a命令时按照fstab的内容自动挂载。如果你不希望这样,就使用noauto选项,如果这样的话,你就只能明确地通过手工来挂载设备。
user 和 nouser:这是一个非常有用的选项,user选项允许普通用户也能挂载设备,而nouser则只允许root用户挂载。nouser是默认选项,这也是让很多 Linux新手头疼的东西,因为他们发现没有办法正常挂载光驱,Windows分区等。如果你作为普通身份用户遇到类似问题,或者别的其他问题,就请把 user属性增加到fstab中。
exec 和 noexec: exec允许你执行对应分区中的可执行二进制程序,同理,noexec的作用刚好相反。如果你拥有一个分区,分区上有一些可执行程序,而恰好你又不愿意,或者不能在你的系统中执行他们,就可以使用noexec属性。这种情况多发生于挂载Windows分区时。exec是默认选项,理由很简单,如果 noexec变成了你/根分区的默认选项的话……
ro: 以只读来挂载文件系统。
rw: 以可读可写的属性来挂载系统。
sync 和 async:对于该文件系统的输入输出应该以什么方式完成。sync的意思就是同步完成,通俗点讲,就是当你拷贝一个东西到设备或者分区中时,所有的写入变化将在你输入cp命令后立即生效,这个东西应该立马就开始往设备或者分区里面拷贝了。而如果是async,也就是输入输出异步完成的话,当你拷贝一个东西到设备或者分区中时,可能在你敲击cp命令后很久,实际的写入操作才会执行,换句话说,就是进行了缓冲处理。
有时候这种机制蛮不错的,因为sync会影响你系统的运行速度,但是这也会带来一些问题。想一想,当你希望将一个文件拷贝到u盘上时,你执行了 cp 命令,却忘记执行umount命令(它会强行将缓冲区内容写入),那么你拷贝的文件实���上并没有在u盘上面。如果你是使用的mv命令,而你又很快将u盘拔出……恭喜你,文件会从这个星球上消失的。因此,虽然async是默认属性,但是对于u盘,移动硬盘这种可移动存储设备,最好还是让他们使用sync选项。
defaults: 所有选项全部使用默认配置,包括rw, suid, dev, exec, auto, nouser, 和 async。
一般用户没有特殊需求,直接使用defaults就可以了。看完介绍,我们再回过头去看看前面的示例内容,以光驱为例,主要关注挂载选项这里,可以看到,光驱和其他分区设备的不同是ro,因为普通光驱是只读的。而exec则让你可以从光驱上直接执行某些程序。
第五、六列:dump和fsck选项
Dump和fsck?这是什么东西?恩,dump是一个备份工具,而fsck是一个文件系统扫描检查工具。我不会在这里详细介绍它们,因为用man或者google都可以获得更加详细的信息。
fstab的第五列是表示dump选项,dump工具通过这个选项位置上的数字来决定文件系统是否需要备份。如果是0,dump就会被忽略,事实上,大多数的dump设置都是0。而第六列是fsck选项,fsck命令通过检测该字段来决定文件系统通过什么顺序来扫描检查,根文件系统/对应该字段的值应该为1,其他文件系统应该为2。若文件系统无需在启动时扫描检查,则设置该字段为0。