Linux 硬盘操作
nfs 文件共享 centos6 下安装配置
服务端 1 2 3 4 rpm -qa|grep nfs rpm -qa|grep rpcbind yum install -y nfs-utils-* rpcbind vim /etc/exports
1 2 3 cat /etc/exports /data *(rw,no_root_squash,no_all_squash,sync) exportfs -r 使配置文件生效
1 2 3 4 service rpcbind start service nfs start chkconfig rpcbind on chkconfig nfs on
showmount 命令查询 NFS 的共享状态
1 2 showmount -e //默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错 showmount -a //显示已经与客户端连接上的目录信息
关闭防火墙
1 2 service iptables stop chkconfig iptables off
客户端 挂载
1 2 3 4 5 6 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 文件系统
1 2 vim /etc/fstab 添加 192.168.100.51:/data /log nfs defaults 0 0
解除挂载
相关介绍 https://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html
https://www.lvtao.net/server/centos-nfs.html
服务器端防火墙设置(NFS 开启防墙配置)
修改/etc/service,添加以下内容(端口号必须在 1024 以下,且未被占用)
1 2 3 4 5 # Local services mountd 1011/tcp #rpc.mountd mountd 1011/udp #rpc.mountd rquotad 1012/tcp #rpc.rquotad rquotad 1012/udp #rpc.rquotad
重起 Linux NFS 服务
此时 rpc 相关端口已经被固定,可以为 Linux NFS 添加防火墙规则
1 2 3 4 5 -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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #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 的常用目录
1 2 3 4 5 /etc/exports NFS服务的主要配置文件 /usr/sbin/exportfs NFS服务的管理命令 /usr/sbin/showmount 客户端的查看命令 /var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值 /var/lib/nfs/xtab 记录曾经登录过的客户端信息
/etc/exports 配置文件说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 /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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 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 协议即可:
1 mount -t nfs 192.168.100.51:/data /log -o proto=tcp -o nolock
解除挂载 umount.nfs: /log: device is busy
1 2 3 4 5 fuser -m -v /log 用户 进程号 权限 命令 /log: root 26741 ..c.. bash kill -9 26741
fstab 文件 保存文件挂载信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 vi /etc/fstab /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 查看挂载信息
1 2 3 4 5 6 7 8 9 10 [root@localhost opt] /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
1 mount /dev/mapper/VolGroup-lv_home /opt
umount 取消挂载
du 查看当前目录使用大小
du -sh
1 2 3 [root@localhost opt] 20K . [root@localhost opt]
df 查看当前硬盘挂载信息及使用情况
df -h
1 2 3 4 5 6 7 8 9 [root@localhost opt] 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [root@localhost opt] 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 给第二块硬盘分区
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 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
添加新硬盘挂载 1 2 3 4 5 6 fdisk -l 查看新硬盘 mksf.ext4 /dev/xvdb 格式化新硬盘 mkdir /data 添加目录 mount /dev/xvdb /data 挂载硬盘 vi /etc/fstab 修改添加下面一条记录,开机自动挂载 /dev/xvdb /data ext4 defaults 0 0