Linux系统下当原来一块硬盘容量不够用了,需要新添加一块硬盘;或者原来组建RAID磁盘阵列的,现在不需要了,在取消了RAID,重装了系统的情况下,如何使用第二块磁盘
此次的情况是原来是2块硬盘组建的RAID1,现在不需要组建RAID了,就取消了RAID,并重装了系统
在进入系统后,使用fdisk –l命令来查看磁盘状况如下
linux_156:/ # fdisk -l
Disk /dev/sda: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 2611 20972826 82 Linux swap / Solaris
/dev/sda2 * 2612 3917 10490445 83 Linux
/dev/sda3 3918 17849 111908790 f W95 Ext'd (LBA)
/dev/sda5 3918 11319 59456533+ 83 Linux
/dev/sda6 11320 17847 52436128+ 83 Linux
Disk /dev/sdb: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 82 Linux swap / Solaris
/dev/sdb2 * 263 1568 10490445 83 Linux
从以上信息,可以很明显的看出,我们有2块硬盘,分别是/dev/sda和/dev/sdb,大小都是146.8G
其中磁盘/dev/sda被分为2个主分区和2个逻辑分区大小也差不多是146.8G,但是磁盘/dev/sdb只有2个主分区,其大小也只有12G,不知道为什么丢失了很多空间,我觉得可能是组建RAID1的原因,很多原来的空间未分区,只划分了部分swap分区和装操作系统的/分区,现在有2个办法来解决这个问题:
1. 使用fdisk在原来两个分区的基础上,将未被使用的空间重新分区
2. 格式化/dev/sdb盘,再重新分区
我选择了方法2,因为我觉得原来的那两个分区的数据并没有保留的必要
使用mkfs.ext3 /dev/sdb命令格式化磁盘 注:也可以使用mkfs -t ext3 /dev/sdb命令
mke2fs 1.38 (30-Jun-2005)
/dev/sdb is entire device, not just one partition! 注:系统会提示你/dev/sdb是整个磁盘
Proceed anyway? (y,n) y 注:这时选Y就好了,下来就开始格式化
以上命令里的ext3,是指将该磁盘格式化成ext3文件系统
格式化完成后,我们再使用fdisk –l命令来查看磁盘状况:
Disk /dev/sda: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 2611 20972826 82 Linux swap / Solaris
/dev/sda2 * 2612 3917 10490445 83 Linux
/dev/sda3 3918 17849 111908790 f W95 Ext'd (LBA)
/dev/sda5 3918 11319 59456533+ 83 Linux
/dev/sda6 11320 17847 52436128+ 83 Linux
Disk /dev/sdb: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
然后我们就可以使用fdisk命令来重新分区
fdisk /dev/sdb
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 注:l是列出分区类型,以供我们设置相应分区的类型;
m print this menu 注:m 是列出帮助信息;
n add a new partition 注:添加一个分区;
o create a new empty DOS partition table
p print the partition table 注:p列出分区表;
q quit without saving changes 注:不保存退出;
s create a new empty Sun disklabel
t change a partition's system id 注:t 改变分区类型;
u change display/entry units
v verify the partition table
w write table to disk and exit 注:把分区表写入硬盘并退出;
x extra functionality (experts only) 注:扩展应用,专家功能;
从以上的帮助中可以看出,想要添加分区,应该使用n;
Command (m for help): n
Command action
e extended
p primary partition (1-4)
此时如果选e是建扩展分区,选p建主分区,所以我们选p
p
Partition number (1-4): 1 注:此处选1,表示是第一主分区
First cylinder (1-17849, default 1): 1 注:这个就是分区的Start 值;这里最好直接按回车,如果你输入了一个非默认的数字,会造成空间浪费;
Last cylinder or +size or +sizeM or +sizeK (1-17849, default 17849): 8920
注:这个是定义分区大小的,+200M 就是大小为200M ;当然你也可以根据上面提示的单位cylinder的大小来算,然后来指定 End的数值,在fdisk –l命令中可以看到Units = cylinders of 16065 * 512 = 8225280 bytes,这个就是单位cylinder的大小,我这里选的End的数值是8920,正好是总大小的一半,71G左右
然后再来建一个主分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (8921-17849, default 8921): 8921
Last cylinder or +size or +sizeM or +sizeK (8921-17849, default 17849): 17849
最后保存并退出,切记,一定要保存,不然不会生效的
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
OK,我们再使用fdisk –l命令来查看磁盘状况:
Disk /dev/sda: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 2611 20972826 82 Linux swap / Solaris
/dev/sda2 * 2612 3917 10490445 83 Linux
/dev/sda3 3918 17849 111908790 f W95 Ext'd (LBA)
/dev/sda5 3918 11319 59456533+ 83 Linux
/dev/sda6 11320 17847 52436128+ 83 Linux
Disk /dev/sdb: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 8920 71649868+ 83 Linux
/dev/sdb2 8921 17849 71722192+ 83 Linux
从上面信息中可以看出,磁盘/dev/sdb已经被划分为2个分区,每个分区大小大概是71G左右,失去的磁盘空间已经被我们找回来了
下面我们开始来想办法挂载文件系统,挂载文件系统,目前有两种方法,一是通过 mount 来挂载,另一种方法是通过/etc/fstab文件来开机自动挂载。
切记,在挂载文件系统之前,需要将/dev/sdb1和/dev/sdb2重新用mkfs -t ext3 命令格式化一下,否则在挂载时会报错:
linux_156:/etc # mount -t ext3 /dev/sdb1 /mnt/data
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
linux_156:/etc # dmesg | tail
mtrr: type mismatch for cfc00000,200000 old: write-back new: write-combining
mtrr: type mismatch for cf800000,400000 old: write-back new: write-combining
mtrr: type mismatch for cf000000,800000 old: write-back new: write-combining
mtrr: type mismatch for ce000000,1000000 old: write-back new: write-combining
mtrr: type mismatch for cc000000,2000000 old: write-back new: write-combining
eth0: no IPv6 routers present
eth2: no IPv6 routers present
VFS: Can't find ext3 filesystem on dev sdb1.
VFS: Can't find ext3 filesystem on dev sdb1.
VFS: Can't find ext3 filesystem on dev sdb1.
使用mount挂载系统,一旦系统重启之后就需要重新挂载,比较麻烦,所以我们选择通过/etc/fstab文件来开机自动挂载。
/dev/sdb1 /mnt/data ext3 defaults 0 0
/dev/sdb2 /mnt/db ext3 defaults 0 0
第一字段:设备名,在这里表示是文件系统; 有时我们把挂载文件系统也说成挂载分区;
第二字段:文件系统的挂载点;
第三字段:文件系统类型;
第四字段:mount 命令的选项,和mount 中的-o 同理;defaults包括这些选项 rw, suid, dev, exec, auto, nouser, async;
第五字段:表示文件系统是否需要dump 备份,1是需要,0 是不需要;
第六字段: 是否在系统启动时,通过fsck磁盘检测工具来检查文件系统,1是需要,0是不需要,2是跳过;
保存退出后,重启系统.
fstab 挂载 不生效则,如下操作
1.手动挂载
2.查看系统类型 udf
[root@desktop2 ~]# mount -o loop rh401-pub.iso /media/
[root@desktop2 ~]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda2 ext3 135325776 55307840 73032876 44% /
/dev/sda1 ext3 194442 12027 172376 7% /boot
tmpfs tmpfs 2998992 0 2998992 0% /dev/shm
/root/rh401-pub.iso
udf 31957342 31957342 0 100% /media
3.在/etc/fstab中就知道怎么写了
[root@desktop2 ~]# grep udf /etc/fstab --color
/root/rh401-pub.iso/mediaudfdefaults,ro,loop0 0
[root@desktop2 ~]# mount -a
[root@desktop2 ~]# mount |grep udf --color
/root/rh401-pub.iso on /media type udf (rw,loop=/dev/loop0)