最近架了一个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
现在真的完成了,重启吧~
最后感慨一下!服务器版本的系统和桌面版本的差距还是很大的,要想弄明白更多真得去搞服务器版本的!