修改fstab挂载分区和远程目录


一、挂载本地分区

某些时候当Linux系统下划分了新的分区后,需要将这些分区设置为开机自动挂载,否则,Linux是无法使用新建的分区的。

/etc/fstab 文件负责配置Linux开机时自动挂载的分区。

 

Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如:C,D,E,F等。

Linux的文件结构是单个的树状结构。最顶部的为根目录,即/。在根目录下,分为多个子目录,包括/bin、/boot、/dev、/etc、/home、/lib、/media、/mnt、/opt、/proc、/root、/sbin、/tmp、/usr和/var等。

磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作,而fstab正是负责这一配置。

显然,根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。

上面还提到,Linux分区交换也需要独立使用一个分区,因此,安装一个Linux至少需要两个分区。

(事实上,只使用一个分区安装Linux也是可能的,而且,如果电脑的物理内存足够大,交换分区并不是必须的)

 示例:打开 /etc/fstab 文件

# subo vim /etc/fstab

默认情况下,fstab中已经有了当前的分区配置,内容可能类似:

# <file system> <mount point>   <type>         <options>              <dump> <pass>
proc                 /proc                   proc            defaults                      0         0
/dev/hda1       /                           ext3             errors=remount-ro     0         1
/swapfile         swap                    swap           defaults                      0          0
/dev/hdc         /media/cdrom0     udf,iso9660   user,noauto             0          0

由上面的内容可以看出,系统的 /dev/hda1 分区被挂载在根目录,文件系统是ext3。

此外,还有proc、swap等特殊的“分区”,以及 /dev/hdc 被作为光驱挂载在了 /media/cdrom0

因此,如果希望将新分区 /dev/hda5 挂载在 /home/new 目录下,则只需在fstab文件中加入一行:

/dev/hda5       /home/new               ext3    default   0       1

即可。

 

第一列 <file system>:可以是实际分区名,也可以是实际分区的卷标(Lable)。

如果磁盘是SATA接口,且有多个磁盘,则每个磁盘被标记为 /dev/hda 、 /dev/hdb、 /dev/hdc 等以此类推;而每个磁盘的分区被标记为 /dev/hda1、 /dev/hda2等。

如果磁盘是SCSI类型,则多个磁盘会被分别标记为 /dev/sda、/dev/sdb等等。分区同理。

如果使用标签来表示,则格式如:lable=/

 

第二列 <mount point> :是挂载点。

挂载点必须为当前已经存在的目录,为了兼容起见,最好在创建需要挂载的目标目录后,将其权限设置为777,以开放所有权限。 

第三列<type> :为此分区的文件系统类型。

Linux可以使用ext2、ext3等类型,此字段须与分区格式化时使用的类型相同。

也可以使用 auto 这一特殊的语法,使系统自动侦测目标分区的分区类型。auto通常用于可移动设备的挂载。 

第四列 <options>:是挂载的选项,用于设置挂载的参数。

常见参数如下:

defaults: rw, suid, dev, exec, auto, nouser, and async.

auto: 系统自动挂载,fstab默认就是这个选项
noauto 开机不自动挂载
nouser 只有超级用户可以挂载
ro 按只读权限挂载
rw 按可读可写权限挂载
user 任何用户都可以挂载
请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto

第五列<dump>:是备份设置。

当其值设置为1时,将允许dump备份程序备份;设置为0时,忽略备份操作;

第六列<pass>:是fsck磁盘检查设置。

其值是一个顺序。当其值为0时,永远不检查;而 / 根目录分区永远都为1。其它分区从2开始,数字越小越先检查,如果两个分区的数字相同,则同时检查。

当修改完此文件并保存后,重启服务器生效。

 

二、挂载远程目录: 

linux挂载远程目录,有两种方式:ssh和nfs;有两种共享协议:samba和cifs

1.ssh方式
当我们需要管理一台远程的linux服务器的时候经常使用的是比较安全的ssh。 

示例一:

以下是通过ssh挂在远程目录的方法:

~$ sudo apt-get install sshfs fuse
~$ sshfs <username>@<ipaddress>:/remotepath ~/remoteserv -o allow_other

若提示一下错误:

fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

则在/etc/fuse.conf中添加user_allow_other

如需自动挂载,可以在/etc/fstab中添加如下代码:

sshfs#username@ipaddress:/remotepath ~/remoteserv fuse user,_netdev,exec,reconnect,uid=1000,gid=1000,idmap=user,allow_other 0 0

如果挂载没有效果,可以查看日志了,sshd的日志在:/var/log/auth.log:

Aug 8 11:05:21 localhost sshd[21595]: Authentication refused: bad ownership or modes for directory /remotepath

 此时一般是remotepath目录的权限错误,一般该目录的权限应为700或755,不能为77x。

示例二:unubtu客户端

远程共享: \\192.168.1.18\projects\android_releases

现在想将这个release的内容通过rsync同步到本地,那样就不用每次去代码都远涉重洋进行copy了。

第一步就是要将这个远程共享mount到本地,然后再在本地的文件夹之间进行同步。

如何mount呢?

mount的方式有两种,smbfs和cifs,但是由于smbfs同Samba工具(如smb.conf,smbmount等)的耦合性很高,所以逐渐就被cifs替代了,但是出于兼容性的原因,现在在某些系统上还能通过smbfs选项进行挂载。

建议采用cifs方式挂载远程共享文件夹。

Ubuntu 14.04默认不支持mount.cifs文件系统,需要安装cifs-utils组件:

$ sudo apt-get install cifs-utils
$ sudo mount -t cifs //dfs.guyongqiangx.com/projects/android_releases /mnt 

以只读方式挂载远程共享目录到本地:

$ sudo mount -t cifs //dfs.guyongqiangx.com/projects/android_releases android --verbose -o username=youraccount,password=xxx,ro 

以下是挂载成功后的df -h输出信息:

$ df -h

 

示例三:centos客户端

如果是centos,如果没有cifs-utils组件,也需要安装

yum install cifs-utils  #安装cifs协议包

 

#列出远程目录

smbclient -L 192.100.9.165 -Uadministrator

挂载:

vim /etc/fstab

//192.100.9.165/youraccount/storage/sharefolder cifs defaults,username=administrator,password=16001007,uid=500,gid=500

 #安装192.100.9.165 zhihuiwuxi目录到本地/storage/samba  指定uid,gid(否则只有root对目录有读写权限)

mount -a

 

  

2.nfs方式

示例一:centos服务器
服务器端: 172.21.10.68

~$ sudo apt-get install nfs-kernel-server portmap //安装nfs portmap
~$ sudo vi /etc/exports //配置nfs
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
#Add Next Line //feison
/home/useraccount/sharefolder *(rw,sync,no_root_squash,no_subtree_check) 

保存退出: :wq

~$ sudo service nfs restart //启动nfs服务
~$ sudo service portmap start //启动portmap服务

 客户端:

~$ sudo apt-get install nfs-kernel-server
~$ sudo mount -t nfs 172.21.10.68:/home/youraccount/sharefolder ./yourLocalFolder
~$ sudo umount ./nfs

 

如果出现:mount: mount to NFS server 'p470-1' failed: RPC Error: Program not registered
是服务端的服务没有启动,重新启动服务即可。

示例二:unubtu服务器

安装服务:
sudo apt-get install portmap ##nfs服务需要的RPC支持
sudo apt-get install nfs-kernel-server ##nfs服务端
修改nfs共享配置文件:
sudo vim /etc/exports
添加如下共享路径内容:
/mnt/disk1 *(insecure,rw,sync,no_root_squash)
/mnt/disk1: 需要设置共享的目录,设置为共享之后,其它机器才可以进行远程mount
*: 允许访问的ip地址,*为所有ip均可访问

其它参数:默认就行,具体的可以网上查看

 重启服务:

sudo service rpcbind restart ##portmap服务
sudo service nfs restart #nfs服务,或者命令sudo /etc/init.d/nfs-kernel-server restart

重启成功则nfs配置成功。

安装nfs客户端:

sudo apt-get install nfs-common ##nfs client
测试mount命令:
sudo mount -t nfs xxx.xxx.xxx.xxx:/mnt/disk1 /mnt/disk1

xxx.xxx.xxx.xxx:服务器的ip

/mnt/disk1:服务器的共享目录

/mnt/disk1:客户机的本地访问目录,需要提前创建好

客户端,配置fstab文件:

sudo vim /etc/fstab
# 添加如下mount内容
xxx.xxx.xxx.xxx:/mnt/disk1 /mnt/disk1 auto rw,user,auto,exec,utf8 0 0
# 其它参数具体查看网上fstab文件参数说明

 

 

三、故障排除

如果挂载时,/etc/fstab中的参数写错,有可能出现不能启动客户端的情况。如以下提示:

cannot open access to console, the root account is locked
解决办法:在live模式,在管理员模式下,修改/etc/fstab
用U盘安装盘启动系统,在选择安装语言界面,按ctrl+alt+F1,光标闪烁无法进入,
按ctrl+alt+F2,进入,输入startx,是英文界面,用管理员身份打开/etc/fstab ,修改挂载的目录。
比如:
# /dev/sda11 LABEL=Basic\040data\040partition
UUID=2c74def9-3622-4f4f-933a-669f9bcda846    /home   ext4   rw,relatime,data=ordered        0 2

 修改成:

# /dev/sda11 LABEL=Basic\040data\040partition
UUID=2c74def9-3622-4f4f-933a-669f9bcda846   /home   ext4     rw,relatime,data=ordered,x-systemd.device-timeout=60        0 2

 

保存,重启,ok。
挂载选项的具体含义,参考第一节中的本地挂载。
 
参考:
https://blog.csdn.net/xyajia/article/details/79165655
https://blog.csdn.net/five3/article/details/50738241
https://www.cnblogs.com/metasequoia/p/4446553.html
http://blog.sina.com.cn/s/blog_1824c59320102xrsw.html
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM