linux 硬盘操作
Linux 硬盘操作
nfs 文件共享
centos6 下安装配置
服务端
rpm -qa|grep nfs
rpm -qa|grep rpcbind
yum install -y nfs-utils-* rpcbind
vim /etc/exports
cat /etc/exports
/data *(rw,no_root_squash,no_all_squash,sync)
exportfs -r 使配置文件生效
service rpcbind start
service nfs start
chkconfig rpcbind on
chkconfig nfs on
showmount 命令查询 NFS 的共享状态
showmount -e //默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错
showmount -a //显示已经与客户端连接上的目录信息
关闭防火墙
service iptables stop
chkconfig iptables off
客户端
挂载
rpm -qa|grep nfs
rpm -qa|grep rpcbind
yum install -y nfs-utils-* rpcbind
mkdir /log
showmount -e 192.168.100.51
mount -t nfs 192.168.100.51:/data /log
启动自动挂载 nfs 文件系统
vim /etc/fstab 添加
192.168.100.51:/data /log nfs defaults 0 0
解除挂载
umount /log
mount
相关介绍
https://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html
https://www.lvtao.net/server/centos-nfs.html
服务器端防火墙设置(NFS 开启防墙配置)
修改/etc/service,添加以下内容(端口号必须在 1024 以下,且未被占用)
# Local services
mountd 1011/tcp #rpc.mountd
mountd 1011/udp #rpc.mountd
rquotad 1012/tcp #rpc.rquotad
rquotad 1012/udp #rpc.rquotad
重起 Linux NFS 服务
service nfs restart
此时 rpc 相关端口已经被固定,可以为 Linux NFS 添加防火墙规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1011 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1012 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 32768 -j ACCEPT
#portmap
/sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 111 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 111 -j ACCEPT
#nfsd
/sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 2049 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 2049 -j ACCEPT
#mountd
/sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 1011 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 1011 -j ACCEPT
#rquotad
/sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 1012 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 1012 -j ACCEPT
#rpc.statd
/sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 32768 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 32768 -j ACCEPT
NFS 的常用目录
/etc/exports NFS服务的主要配置文件
/usr/sbin/exportfs NFS服务的管理命令
/usr/sbin/showmount 客户端的查看命令
/var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值
/var/lib/nfs/xtab 记录曾经登录过的客户端信息
/etc/exports 配置文件说明:
/etc/exports文件内容格式:
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
a. 输出目录:
输出目录是指NFS系统中需要共享给客户机使用的目录;
b. 客户端:
客户端是指网络中可以访问这个NFS输出目录的计算机
客户端常用的指定方式
指定ip地址的主机:192.168.0.200
指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主机:david.bsmart.cn
指定域中的所有主机:*.bsmart.cn
所有主机:*
c. 选项:
选项用来设置输出目录的访问权限、用户映射等。
NFS主要有3类选项:
访问权限选项
设置输出目录只读:ro
设置输出目录读写:rw
用户映射选项
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
相关命令
1、exportfs
如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs 命令来使改动立刻生效,该命令格式如下:
# exportfs [-aruv]
-a 全部挂载或卸载 /etc/exports中的内容
-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
-v 在export的时候,将详细的信息输出到屏幕上。
具体例子:
# exportfs -au 卸载所有共享目录
# exportfs -rv 重新共享所有目录并输出详细信息
2、nfsstat
查看NFS的运行状态,对于调整NFS的运行有很大帮助。
3、rpcinfo
查看rpc执行信息,可以用于检测rpc运行情况的工具,利用rpcinfo -p 可以查看出RPC开启的端口所提供的程序有哪些。
4、showmount
-a 显示已经于客户端连接上的目录信息
-e IP或者hostname 显示此IP地址分享出来的目录
5、netstat
可以查看出nfs服务开启的端口,其中nfs 开启的是2049,portmap 开启的是111,其余则是rpc开启的。
最后注意两点,虽然通过权限设置可以让普通用户访问,但是挂载的时候默认情况下只有root可以去挂载,普通用户可以执行sudo。
NFS server 关机的时候一点要确保NFS服务关闭,没有客户端处于连接状态!通过showmount -a 可以查看,如果有的话用kill killall pkill 来结束,(-9 强制结束)
问题
客户端在挂载的时候遇到的一个问题如下,可能是网络不太稳定,NFS 默认是用 UDP 协议,换成 TCP 协议即可:
mount -t nfs 192.168.100.51:/data /log -o proto=tcp -o nolock
解除挂载 umount.nfs: /log: device is busy
fuser -m -v /log
用户 进程号 权限 命令
/log: root 26741 ..c.. bash
kill -9 26741
fstab 文件
保存文件挂载信息
vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 18 23:29:58 2016
#
# 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
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=3725aff0-9f5e-47ce-85b2-80e438dc9df8 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_home /opt ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap 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
mount
查看挂载信息
[root@localhost opt]# mount
/dev/mapper/VolGroup-lv_root 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,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/VolGroup-lv_home on /opt type ext4 (rw)
[root@localhost opt]#
挂载分区
挂载/dev/mapper/VolGroup-lv_home 到/opt
mount /dev/mapper/VolGroup-lv_home /opt
umount
取消挂载
umount /home
du
查看当前目录使用大小
du -sh
[root@localhost opt]# du -sh
20K .
[root@localhost opt]#
df
查看当前硬盘挂载信息及使用情况
df -h
[root@localhost opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
50G 646M 46G 2% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sda1 477M 25M 427M 6% /boot
/dev/mapper/VolGroup-lv_home
405G 71M 385G 1% /opt
[root@localhost opt]#
fdisk
查看硬盘信息
fdisk -l
[root@localhost opt]# fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 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: 0x54bbc984
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 60802 487873536 8e Linux LVM
Disk /dev/mapper/VolGroup-lv_root: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 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: 0x00000000
Disk /dev/mapper/VolGroup-lv_swap: 4076 MB, 4076863488 bytes
255 heads, 63 sectors/track, 495 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: 0x00000000
Disk /dev/mapper/VolGroup-lv_home: 441.8 GB, 441815400448 bytes
255 heads, 63 sectors/track, 53714 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: 0x00000000
[root@localhost opt]#
格式化与分区
fdisk -l /dev/sda 查看第一块硬盘分区情况
fdisk /dev/sdb 给第二块硬盘分区
command acton (m for help):m #显示命令列表
a-设置可引导标志;b-设置卷标; d-删除一个分区; n-新建分区
p-显示分区信息; v-校验分区表;q-不存盘退出;w-存盘退出;t-改变分区类型
command acton (m for help):n 新建分区
command action
e extended #扩展分区
p primary partition (1-4) #主分区
p #创建主分区
partition number (1-4):1 #创建第一个主分区 first cylinder (1-522,default 1):1 #起始柱面(第一个分区始终为1)
last cylinder or +size or +sizeM or +siezK(1-522,default 522): 10 #截止柱面(若522则整个硬盘分给了一个区)此分区大小是系统按照柱面大小自动计算出来的
command acton (m for help):n
command action
e extended
p primary partition (1-4)
p
partition number (1-4):2 #创建第二个主分区
first cylinder (11-522,default 11):11
last cylinder ...(11-522,default 522): +100M #自定义分区大小
command acton (m for help):n
command action
e extended
p primary partition (1-4)
e #创建扩展分区,注意一个磁盘只能创建一个扩展区
partition number (1-4):3
first cylinder (28-522,default 28):28
last cylinder ...(28-522,default 522):522 #将剩余空间全部分给扩展分区
扩展分区是不能直接使用的,必须在其上创建逻辑分区!
command acton (m for help):n
command action
l logical (5 or over) #逻辑分区
p primary partition (1-4)
l
first sylinder (28-255,default 28):28 #在扩展分区里建逻辑分区
last cylinder ...(28-522,default 522):522 #柱面用尽,等于说只建一个逻辑分区
command acton (m for help):w #保存退出
转换分区类型:
command acton (m for help):t #转换分区类型
partition number (1-4):2 #选择第二个主分区
hex code (type L to list codes):82 #按L可列出分区类型所对应的编码
格式化与挂载: (挂载目录可以自行创建也可指定存在的空目录)
mksf.ext3 /dev/sdb1 把第二块硬盘的第一个主分区格式化为ext3
mkswap /dev/sdb2 初始化swap区,此区不可格式化。
mount /dev/sdb1 /mnt/d #将第一个分区挂载到d这个目录
重启后自动挂载:vi /etc/fstab
添加:/dev/sdb1 /mnt/d ext3 default 0 0
添加新硬盘挂载
fdisk -l 查看新硬盘
mksf.ext4 /dev/xvdb 格式化新硬盘
mkdir /data 添加目录
mount /dev/xvdb /data 挂载硬盘
vi /etc/fstab 修改添加下面一条记录,开机自动挂载
/dev/xvdb /data ext4 defaults 0 0