Part1:iptables

   环境:centos6.7

目前我只配置了INPUT。OUTPUT和FORWORD都是ACCEPT的规则

由于想要先实现防火墙规则,所以前面的内容讲的是方法,后面是详解iptables

注意centos7.0服务启动命令不一样

一、检查iptables服务状态

首先检查iptables服务的状态

[root@izp**** ~]# service iptables status

iptables: Firewall is not running. 
说明iptables服务是有安装的,但是没有启动服务。
如果没有安装的话可以直接yum安装

yum install -y iptables
启动iptables

[root@izp**** ~]# service iptables start

iptables: Applying firewall rules: [ OK ] 
看一下当前iptables的配置情况

[root@izp**** ~]# iptables -L -n 
二、清除默认的防火墙规则

#首先在清除前要将policy INPUT改成ACCEPT,表示接受一切请求。
#这个一定要先做,不然清空后可能会悲剧
  [root@izp**** ~]# iptables -P INPUT ACCEPT

#清空默认所有规则
  [root@izp**** ~]# iptables -F

#清空自定义的所有规则
  [root@izp**** ~]# iptables -X

#计数器置0
  [root@izp**** ~]# iptables -Z

三、配置规则

#允许来自于lo接口的数据包
#如果没有此规则,你将不能通过127.0.0.1访问本地服务,例如ping 127.0.0.1
  [root@izp**** ~]# iptables -A INPUT -i lo -j ACCEPT

#ssh端口22
  [root@izp**** ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#FTP端口21
  [root@izp**** ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT

#web服务端口80
  [root@izp**** ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEP

#tomcat
  [root@izp**** ~]# iptables -A INPUT -p tcp --dport xxxx -j ACCEP

#mysql
  [root@izp**** ~]# iptables -A INPUT -p tcp --dport xxxx -j ACCEP

#允许icmp包通过,也就是允许ping
  [root@izp**** ~]# iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#允许所有对外请求的返回包
#本机对外请求相当于OUTPUT,对于返回数据包必须接收啊,这相当于INPUT了
  [root@izp**** ~]# iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

#如果要添加内网ip信任(接受其所有TCP请求)
  [root@izp**** ~]# iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT

#过滤所有非以上规则的请求
  [root@izp**** ~]# iptables -P INPUT DROP

四、保存

首先iptables -L -n看一下配置是否正确。
没问题后,先不要急着保存,因为没保存只是当前有效,重启后就不生效,这样万一有什么问题,可以后台强制重启服务器恢复设置。
另外开一个ssh连接,确保可以登陆。

确保没问题之后保存

#保存
  [root@izp**** ~]# service iptables save

#添加到自启动chkconfig
  [root@izp**** ~]# chkconfig iptables on

iptables 25个最常用的命令

1、清空存在的策略
当你开始创建新的策略,你可能想清除所有的默认策略,和存在的策略,可以这么做:
iptables -F 或者iptables --flush
2、设置默认策略
默认链策略是ACCEPT,改变所有的链策略为DROP:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
3、阻止一个指定的ip
BLOCK_THIS_IP=“x.x.x.x"
iptables -A INPUT -s ”$BLOCK_THIS_IP“ -j DROP
iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP
4、允许SSH
允许所有通过eth0接口使用ssh协议连接本机:
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
5、允许某个网段通过ssh连接
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
6、允许http和https
允许所有进来的web流量:http协议的80端口
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
允许所有进来的web流量:https协议的443端口
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
7、多个策略联合一起
允许ssh,http,https:
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT
8、允许SSH连接其他主机
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
9、允许SSH连接指定的网段
iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
10、允许https出去
iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
11、对web请求做负载均衡(每三个包,均衡到指定服务器,需要扩展iptables)
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443
12、允许ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
13、允许ping远程
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
14、允许本地回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
15、允许内网访问外部网络
这个例子eth1 连接外部网络,eth0连接内部网络
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
16、允许DNS出去
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
17、允许NIS连接
NIS端口是动态的,当ypbind启动时它分配端口。
首先运行 rpcinfo -p 显示得到端口号,这个例子使用端口850,853。
iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 853 -j ACCEPT
iptables -A INPUT -p udp --dport 853 -j ACCEPT
iptables -A INPUT -p tcp --dport 850 -j ACCEPT
iptables -A INPUT -p udp --dport 850 -j ACCEPT
上面的例子当ypbind重新启动时将失效,有2种解决方案:
(1)分配nis服务静态ip(2) 使用精妙的脚本
18、允许指定网段连接Rsync
iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT
19、允许mysql从指定的网段连接
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
20、允许sendmail或者postfix
iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
21、允许IMAP和IMAPS
IMAP:
iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT
IMAPS:
iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT
22、允许POP3和POP3S
POP3:
iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT
POP3S:
iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT
23、预防DOS攻击
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
-m : 使用iptables扩展
--limit 25/minute : 限制分钟连接请求数
--limit-burst:触发阀值,一次涌入数据包数量
24、端口转发
来自442的都转到22端口
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22
你还必须明确允许442端口
iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT
25、包丢弃日志
你也许想查看所有丢弃包的日志。
首先创建一个新链叫 LOGGING
iptables -N LOGGING
确保所有的连接跳到LOGGING
iptables -A INPUT -j LOGGING
记录这些包通过自定义名字 "log-prefix"
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped:" --log-level 7
最后丢弃这些数据包
iptables -A LOGGING -j DROP

Part2:linux ls命令

   当输出的内容超出一屏时,可以使用管道(|)结合more命令来实现分屏显示

 ls | more

按enter键 是向上滚动一行

按空格键 是向上滚动一页

  ls

  命令选项 (非必选项)

  -a 列出目录下所有文件,包含以.开头的隐藏文件

  -A显示出.和..以外的所有文件

  -d显示目录的自身属性,不显示目录下的文件(不是很清楚,只显示一个.)

  -l列出目录和文件的详细信息

  -h 和 -l参数合用,以人可读取的方式显示文件的大小,如4k,2M,3G,

  -i 显示文件或者目录的inode信息,即索引信息

  -t 按修改时间排序显示文件或者目录(时间由近及远排序)

  -r 与其他参数一起使用,使之反向排序

  --color=auto 让输出的内容按照类别显示颜色(grep中也有该参数)

part3:Linux索引节点inode

  1.inode的简介

    文件存储在硬盘上,硬盘的最小存储单位叫做"扇区"(sector).每个扇区存储512字节(相当于0.5kb)。

    操作系统读取硬盘的时候不会一个一个扇区的读取,这样效率太低,而是一次性读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存

  储的最小单位。“块”的大小,最常见的是“4KB”,即连续的八个扇区(sector)组成一个block。

    文件数据都存储在“块”中,那么显然,我们必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就

  叫做inode,中文译名“索引节点”。

  2.inode的内容

  inode包含文件的元信息,具体来说有以下内容:

  *文件的字节数

  *文件拥有者的User ID

  *文件的Group ID

  *文件的读写执行权限

  *文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  *链接数,即有多少文件名指向这个inode

  *文件数据block的位置

  可以用stat命令,查看某个文件的inode的信息:

  [root@izr**** /]# stat bin

  总之,除了文件名以外的所有文件信息,都存放在inode之中。

  3.inode的大小

    inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域,一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所

  包含的信息。

    每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或2KB就设置一个inode。

    查看每个硬盘分区的inode的总数和已经使用的数量,可以使用df命令。  

 [root@izr**** ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 % /
tmpfs % /dev/shm

    查看每个inode节点的大小,可以用一下的命令

 [root@izr**** ~]# dumpe2fs -h /dev/xvda1 | grep "Inode size"
dumpe2fs 1.41. (-May-)
Inode size:

    由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还没存满的情况。这时,就无法在硬盘上存放新文件。

  4.inode号码

    没有inode都有一个号码,操作系统用inode号码来识别不同的文件。

    这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。

    表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三部:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;

  最后,根据inode信息,找到文件数据所在的block,读出数据。

    使用ls -i 命令,可以看到文件名对应的inode号码:

 [root@iZr**** /]# ls -i
bin home media root sys
boot lib mnt sbin tmp
dev lib64 opt selinux usr
etc lost+found proc srv var

   5.目录文件

      Unix/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。

      目录文件的结构非常简单,就是一些列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。

      ls命令只列出目录文件中的所有文件名:

 [root@iZr**** ~]# ls /
bin dev home lib64 media opt root selinux sys usr
boot etc lib lost+found mnt proc sbin srv tmp var

      ls -i命令列出整个目录文件,即文件名和inode号码:

      

 [root@iZr**** ~]# ls -i /
bin home media root sys
boot lib mnt sbin tmp
dev lib64 opt selinux usr
etc lost+found proc srv var

      如果要查看文件的详细信息,就必须根据inode号码,访问inode节点,读取信息。ls -l命令列出文件的详细信息。

      

 [root@iZr**** ~]# ls -l /
total
dr-xr-xr-x. root root Jun : bin
dr-xr-xr-x. root root Jun : boot
drwxr-xr-x root root Oct : dev
drwxr-xr-x. root root Oct : etc
drwxr-xr-x. root root Sep home
dr-xr-xr-x. root root Jun : lib
dr-xr-xr-x. root root Jun : lib64
drwx------. root root Jun : lost+found
drwxr-xr-x. root root Sep media
drwxr-xr-x. root root Sep mnt
drwxr-xr-x. root root Sep opt
dr-xr-xr-x root root Oct proc
dr-xr-x---. root root Jul : root
dr-xr-xr-x. root root Jun : sbin
drwxr-xr-x. root root Jun : selinux
drwxr-xr-x. root root Sep srv
drwxr-xr-x root root Oct sys
drwxrwxrwt. root root Oct : tmp
drwxr-xr-x. root root Jun : usr
drwxr-xr-x. root root Jun : var

    6.硬链接

      一般情况下,文件名和inode号码是“一一对应”关系,每个inode号码对应一个文件名。但是,Unix/Linux系统,允许多个文件名指向同一个inode号码。这意味着,可以

    用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为“硬链接”(hard

     link)

      ln命名可以创建硬链接 

 [root@iZr**** init.d]# ln sshd sshdbak
[root@iZr**** init.d]# ls
aegis cloud-init-upgrade iscsi network saslauthd
agentwatch crond iscsid nscd single
atd ecs_mq-service killall ntpd sshd
auditd eni-service lvm2-lvmetad ntpdate sshdbak
blk-availability functions lvm2-monitor postfix sysstat
cloud-config halt mdmonitor rdisc udev-post
cloud-final ip6tables multipathd restorecond xinetd
cloud-init iptables netconsole rsyslog
cloud-init-local irqbalance netfs sandbox

      注意:文件夹不能创建硬链接(hard link)

      运行上面这条命令后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中有一项叫做“链接数”,记录指向该inode的文件名总数,这是就会增加1。

      反过来,删除一个文件名,就会使得inode节点中的“链接数”减1。当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block

    区域

      目录文件的“链接数”。创建目录时,默认会生成两个目录项:“.”和“..”。前者的inode号码就是当前目录的inode号码,等同于当前目录的“硬链接”;后者的inode号码就是

    当前目录的父目录的inode号码,等同于父目录的“硬链接”。所以,任何一个目录的“硬链接”总数,总是等于2加上它的子目录总数(含隐藏目录),这里的2是本身自己的“硬链接”和当前目录下的“.硬链接”。

    7.软链接

      除了硬链接以外,还有一种特殊情况。文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件的B。因

    此,无论打开哪一个文件,最终读取的都是文件B。这是文件A就称为文件B的“软链接”(soft link)或者符号链接(symblic link)。

      这就意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:“No such file or directory”。这是软链接与硬链接最大的不同:文件A指向文件B的文

    件名,而不是文件B的inode号码,文件B的inode“链接数”不会因此发生改变。

    ln -s 命令可以创建软链接

 [root@iZr**** ~]# ln /etc/init.d/sshd sshdbak
[root@iZr**** ~]# ls
Finished Package Running sshdbak
[root@iZr**** ~]# stat sshdbak
File: `sshdbak'
Size: 4621 Blocks: 16 IO Block: 4096 regular file
Device: ca01h/51713d Inode: 2490875 Links: 2
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-10-14 10:32:25.014202525 +0800
Modify: 2017-03-22 16:33:18.000000000 +0800
Change: 2017-10-14 23:09:46.819151064 +0800
[root@iZr**** ~]# stat /etc/init.
init.conf init.d/
[root@iZr**** ~]# stat /etc/init.d/sshd
File: `/etc/init.d/sshd'
Size: Blocks: IO Block: regular file
Device: ca01h/51713d Inode: Links:
Access: (/-rwxr-xr-x) Uid: ( / root) Gid: ( / root)
Access: -- ::25.014202525 +
Modify: -- ::18.000000000 +
Change: -- ::46.819151064 +
[root@iZr**** ~]# ln -s /etc/init.d/sshd sshdbakk
[root@iZr**** ~]# ls
Finished Package Running sshdbak sshdbakk
[root@iZr**** ~]# stat sshdbakk
File: `sshdbakk' -> `/etc/init.d/sshd'
Size: Blocks: IO Block: symbolic link
Device: ca01h/51713d Inode: Links:
Access: (/lrwxrwxrwx) Uid: ( / root) Gid: ( / root)
Access: -- ::26.788314281 +
Modify: -- ::24.983275362 +
Change: -- ::24.983275362 +

    8.inode的特殊作用

      由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。

      1.有时,文件名包含特殊的字符,无法正常删除。这是直接删除inode节点,就能起到删除文件的作用。

      2.移动文件或者重命名文件,只是改变文件名,不影响inode号码

      3.打开一个文件以后,系统就以inode号码来识别这个文件,不在考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。

      第3点使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启。因为系统通过inode号码,识别运行中的文件,不通过文件名。更新的时候,新版的

    文件以同样的文件名,生成一个新的inode,不会影响的运行中的文件,等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的inode则被回收。

    9.实际问题

      在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用

    了66%,还有12G的剩余空间,按理说不会出现这种问题。 后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和

    文件。 
         查找原因:
        /data/cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。 
       解决方案:
        1.删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。
        2.用软连接将空闲分区/opt中的newcache目录连接到/data/cache,使用/opt分区的inode来缓解/data分区inode不足的问题:

 [root@izp**** /]# ln -s /opt/newcache /data/cache  

就是/data/cache的内容是指向/opt/newcache的路径。

    总结:

      1)磁盘分区格式化文件系统后,会分为indode和block两部分内容。

      2)inode存放文件的属性以及指向文件实体的指针,文件名不在inode里。

      3)访问文件,通过文件---->inode---->blocks。

      4)inode一般情况默认大小256b,block大小1/2/4k。默认是4K,注意,引导分区等特殊分区除外。

      5)通过df -i查看inode数量及使用情况,dump2fs /dev/xvda1 查看inode及block的大小及数量。

      6)一个文件至少要占用一个inode及一个block,多个文件可以占用同一个inode(硬链接)。

      7)一个block只能被一个文件使用,如果文件很小,block很大,剩余空间浪费,无法继续被其他文件使用。

      8)block不是越大越好,要根据业务的文件大小进行选择,一般就是默认4k

      9)可以在格式化的时候改变inode和block的大小。

  面试题:

      1、一个100M的磁盘分区,分别写入1k的文件,及写入1M的文件,分别可以写多少个

      答:1)一个文件至少包含一个inode和一个block,inode是存放文件的属性信息的,但不包含文件名,默认大小128byte(c58),256byte(c64).

        block是存放文件实际内容的,默认大小1kb(boot),4K(非系统分区默认给4K)。

        2)默认分区常规情况下,inode是足够的,而block消耗的会更快。因此一般都是block被耗尽。  

        3)假设文件大小是Y,block大小为X(1-4k),当Y<X时,可以写多个,当Y>=X时,可以写多个,假设Y<= X写入的文件数量就是block的数量

          假设Y>X时,写入的文件数量==总的block数量/(Y/X)个

      2、磁盘报错”No space left on device”,但是通过命令df –h查看磁盘空间没有满,请问为什么?

       答:该磁盘的inode数量被用尽,无法再写入文件。

iptables-linux(ls)-inode-block的更多相关文章

  1. # linux文件系统(inode block superblock)

    先说一下格式化:每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,以成为操作系统能够利用的文件系统格式.linux的文件格式为Ext2/Ext3,现在好像 ...

  2. Linux 文件的详解[分类/扩展名/inode/block]

    关于Linux文件的介绍 Linux里文件扩展名和文件类型没有关系,Linux系统中一切皆文件 关于Linux文件分类 纯文本文件(可以cat的)     二进制文件(Linux的可执行文件等,如/b ...

  3. Linux 深入理解inode/block/superblock

    基础命令学习目录首页 原文链接:https://blog.csdn.net/Ohmyberry/article/details/80427492 档案系统特性 传统的磁盘与档案系统之应用中,一个分割槽 ...

  4. 简单了解Linux的inode与block

    Linux常见文件系统类型:ext3(CentOS5),ext4(CentOS6),xfs(CentOS7) Windows常见文件系统类型:FAT32,NTFS (1).inode的内容 1)ino ...

  5. Linux的inode与block

    1,inode包含文件的元信息,具体来说有以下内容: 文件的字节数 文件拥有者的User ID 文件的Group ID 文件的读.写.执行权限 文件的时间戳,共有三个:ctime指inode上次文件属 ...

  6. Linux的inode的理解 [转]

    Linux的inode的理解 [转] 一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存51 ...

  7. [转帖]详解Linux系统inode原理--硬链接、软链接、innodb大小和划分等

    详解Linux系统inode原理--硬链接.软链接.innodb大小和划分等 原创 波波说运维 2019-07-17 00:03:00 https://www.toutiao.com/i6713116 ...

  8. 磁盘操作- inode/Block深入实战

    一 思路: 1,磁盘物理结构及大小计算 2,分区 MBR GPT知识 3,fdisk分区 挂载 自动挂载 4,格式化文件系统 5,inode block 软硬链接 查看磁盘: [root@moban ...

  9. Linux "ls -l"文件列表权限详解

    ls Linux "ls -l"文件列表权限详解 1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- root adm -- : apache2 ...

  10. linux ls命令教程,ls命令怎么用,全部招数都教你

    linux ls命令的用法大全 学习linux这么久了,最常用的命令莫属 ls命令了,今天就总结下ls命令的用法与经验技巧.   ls命令按文件大小查看文件   a.降序:ls -lsh moudae ...

随机推荐

  1. Java中Arrays工具类

    以下是实现六种功能的方法: 1.比较两个数组值是否相等: 结果为true.false.(布尔型不能比较) int []a={10,20,30}; int []b={10,20,30}; int []c ...

  2. clickonce联机模式

    发布时选择该程序只能联机使用,这样本地就不会进行安装. 参考地址:https://blog.csdn.net/dqs78833488/article/details/52513948

  3. java使用Redis4--主从复制

    redis主从复制配置和使用都非常简单.通过主从复制可以允许多个slave server拥有和master server相同的数据库副本.下面是关于redis主从复制的一些特点:       1.ma ...

  4. [Objective-C语言教程]继承(25)

    面向对象编程中最重要的概念之一是继承.继承允许根据一个类定义另一个类,这样可以更容易地创建和维护一个应用程序. 这也提供了重用代码功能和快速实现时间的机会. 在创建类时,程序员可以指定新类应该继承现有 ...

  5. iOS学习笔记(3)--初识UINavigationController(无storyboard)

    纯代码创建导航控制器UINavigationController 在Xcode6.1中创建single view application的项目,删除Main.storyboard文件,删除info.p ...

  6. K8s的POD连接数据库时报错

    [root@cccc xxxx]# ./showlog.sh dr iff-dr-1128668949-lb90g 2017-09-29 03:21:57,575 INFO [org.wildfly. ...

  7. Hibernate 工具类

    1.HibernateConfigUtil.java(HIbernate配置工具类) import org.hibernate.Session; import org.hibernate.Sessio ...

  8. 洛谷 P2473 [SCOI2008]奖励关(状压dp+期望)

    题面 luogu 题解 \(n \leq 15\) 状压 \(f[i][S]\)表示第\(i\)轮,吃过的集合为\(S\) 正着转移好像有点复杂 考虑逆推转移(正着转移应该也行) \(f[i][S]\ ...

  9. c# java数据类型不同点

    导读:C#和Java是当今最火热的两门面向对象编程语言,很多程序都是既开发Java,也涉足C#.不得不说这两门编程语言有很多共同点,这里主要比较一下Java和C#数据类型的不同之处,这些小的区别有时甚 ...

  10. activity启动模式launchMode区别和优化

    初学android的开发人员,可能会经常忽略这个重要的设置. Activity一共有以下四种launchMode:1.standard2.singleTop3.singleTask4.singleIn ...