最近架了一个CentOS服务器,需求是要除了系统以外的磁盘开机以后自动挂载。这应该是个常用的需求~~网上实现也相对简单些,可是出现了问题!最后还是解决了。现在写出来方便大家啦。

安装完系统,默认是不挂载其他磁盘的。这时候你使用不了其他磁盘,需要我们手工挂载上去。

(1)先找到我们的磁盘都是啥吧!

[root@xxxxxxxxxx ~]# fdisk -l

Disk /dev/sda: 82.0 GB, 81964302336 bytes
255 heads, 63 sectors/track, 9964 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: 0xf0b1ebb0

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9965    80040960    7  HPFS/NTFS

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
222 heads, 30 sectors/track, 146662 cylinders
Units = cylinders of 6660 * 512 = 3409920 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf0b1ebb0

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       15376    51200000    5  Extended
/dev/sdb2           15376       52277   122880000    7  HPFS/NTFS
/dev/sdb3           52277       89178   122880000    7  HPFS/NTFS
/dev/sdb4           89178      146663   191424512    7  HPFS/NTFS
/dev/sdb5   *           1       13839    46080000   83  Linux
/dev/sdb6           13840       15376     5116928   82  Linux swap / Solaris




通过上面的命令,可以才看当前系统的全部存储媒介,手头这台服务器是有两个硬盘,一个FTP,另一个开发用的,现在系统默认挂载了/dev/sdb5   和/dev/sdb6 这两个文件系统

我的需求是挂载/dev/sda1   /dev/sdb2   /dev/sdb3    /dev/sdb4 这四个磁盘上去

知道了我们要挂载的磁盘现在来挂载一下吧~~~

(2)手动挂载文件系统

[root@xxxxxxxxxxxx ~]# mount
/dev/sdb5 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)



mount命令用于挂载文件系统

默认的没有参数,显示当前已经挂载的文件系统。具体mount的参数,用法!网上有一大堆~~

[root@xxxxxxxxxxx ~]# mkdir /mnt/ftp



先创建一个目录,我们一会挂载的文件系统将出现在这个目录中,可别想把文件系统直接挂载到根目录下哦!

[root@xxxxxxxxx mnt]# mount -t ntfs /dev/sda1 /mnt/ftp

命令很简单吧,我们的ftp盘类型是ntfs的,就需要在挂载的时候标明,然后是要挂载的设备,然后是要挂载的目标路径

不幸的事情发生了,CentOS 6安装以后默认是不支持ntfs文件系统的,这时候需要我们下载一个东东啦

ntfs-3g

通过这个东东我们就能在CentOS上挂载ntfs文件系统啦

http://www.tuxera.com/community/ntfs-3g-download/

下载一个当前最稳定的版本

tar zxvf ntfs-3g-20xxxxxx.tgz

cd ntfs-3g-20xxxxxx

./configure

make

make install

不出意外的话,安装顺利完成

mount -t ntfs-3g /dev/sda1 /mnt/ftp

搞定了吧?去看看确实搞定了,但是现在我想启动的时候也自动挂载那些设备!

继续吧~~~

这时候我们需要编辑

/etc/fstab

打开我亲爱的VIM 它是这个样子的

# /etc/fstab
# Created by anaconda on Mon Oct 10 17:43:24 2011
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=a3e8bcd2-d495-4cd0-8cda-8c701503a5a7 /                       ext4    defaults        1 1
UUID=036ac161-13e5-490d-b579-9755f997efe0 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0



系统启动的时候会来扫描这个文件,我们只需要把想挂载的文件系统写到这个文件中即可搞定啦~~

对了如果你是桌面版用户一定要谨慎行事,弄不好就要重新安装系统,或者是Live CD恢复。服务器还好,如果你写错了,他检查不对就pass掉了,不会出现进入不了系统的现象

文件中以#开头的部分是注释,这个规则应该很熟悉啦

# /etc/fstab
# Created by anaconda on Mon Oct 10 17:43:24 2011
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=a3e8bcd2-d495-4cd0-8cda-8c701503a5a7 /                       ext4    defaults        1 1
UUID=036ac161-13e5-490d-b579-9755f997efe0 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

/dev/sdb2               /mnt/disk1              ntfs-3g defaults        0 0
/dev/sdb3               /mnt/disk2              ntfs-3g defaults        0 0
/dev/sdb4               /mnt/disk3              ntfs-3g defaults        0 0
/dev/sda1               /mnt/ftp                ntfs-3g defaults        0 0

编辑以后如上面,的最后面4行是我想挂载的文件系统。

格式如上

<设备>    <挂载目的路径>  <挂载系统的类型>   default   0   0

具体的格式有很多可以深入的地方(各种设置,编码,权限…),不过这个基本满足正常的需求啦!

现在搞定啦~~~~重启!

通常情况下你是对的,如果你是对的!那没有问题了。很正常~如果我对了,就不会写这个啦,现在我的机器出现问题了,开机以后不对!

改挂载的地方没有挂载~~~~

查看将

fdisk -l

more /etc/fstab

对比会发现下面这个样的事情。

之前的sda   变成现在的 sdb

之前的sdb   变成现在的 sda

几次开关机以后发现这个顺序竟然在我的机器上是个随机的~~~

纠结了,这你让我情何以堪啊~~~~

想了个不成熟的办法,写个脚本,在磁盘挂载文件扫描以后执行,手动的检查,挂载!!


最后,问题还是解决了,是/etc/fstab文件提醒了我,

UUID=a3e8bcd2-d495-4cd0-8cda-8c701503a5a7 /                       ext4    defaults        1 1
UUID=036ac161-13e5-490d-b579-9755f997efe0 swap                    swap    defaults        0 0

这里截取两行,发现ext4文件系统挂载的方法和通常的不同啊~~为啥呢?

啥是UUID呢?我把我要挂载的UUID都找到是不是这个事情就摆平啦?


UUID   翻译成中文是  全局唯一标示符,他是一串字符

通过如下命令可以查看你电脑的文件系统的UUID

[root@xxxxxxxxxxxxx ~]# blkid -o list
device     fs_type label    mount point    UUID
------------------------------------------------------------------------------
/dev/sda1  ntfs    FTP      /mnt/ftp       84582A24582A1608
/dev/sdb2  ntfs             /mnt/disk1     B602ABF202ABB5B1
/dev/sdb3  ntfs             /mnt/disk2     54C2B9ADC2B99428
/dev/sdb4  ntfs             /mnt/disk3     C00E001C0E000E5A
/dev/sdb5  ext4             /              a3e8bcd2-d495-4cd0-8cda-8c701503a5a7
/dev/sdb6  swap             <swap>         036ac161-13e5-490d-b579-9755f997efe0



顺利搞到,blkid命令的使用说明自己查吧~~

现在来改我们的/etc/fstab

# /etc/fstab
# Created by anaconda on Mon Oct 10 17:43:24 2011
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=a3e8bcd2-d495-4cd0-8cda-8c701503a5a7 /                       ext4    defaults        1 1
UUID=036ac161-13e5-490d-b579-9755f997efe0 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
#/dev/sdb2              /mnt/disk1              ntfs-3g defaults        0 0
#/dev/sdb3              /mnt/disk2              ntfs-3g defaults        0 0
#/dev/sdb4              /mnt/disk3              ntfs-3g defaults        0 0
#/dev/sda1              /mnt/ftp                ntfs-3g defaults        0 0

UUID=B602ABF202ABB5B1                   /mnt/disk1              ntfs-3g defaults        0 0
UUID=54C2B9ADC2B99428                   /mnt/disk2              ntfs-3g defaults        0 0
UUID=C00E001C0E000E5A                   /mnt/disk3              ntfs-3g defaults        0 0
UUID=84582A24582A1608                   /mnt/ftp                ntfs-3g defaults        0 0



现在真的完成了,重启吧~

最后感慨一下!服务器版本的系统和桌面版本的差距还是很大的,要想弄明白更多真得去搞服务器版本的!