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. 546. Remove Boxes

    Given several boxes with different colors represented by different positive numbers. You may experie ...

  2. 我从Linux走来,选择了Windows

    我从Linux走来,选择了Windows 几天前就想提笔写下这篇,理解很多人一定会对言论不苟同. 但是我相信您看完一个一年多的Linux用户写完的以后,一定也不会太反对 一.为什么我成为一名 Linu ...

  3. Spring注解学习笔记一

    一.Retention注解Retention(保留)注解说明,这种类型的注解会被保留到那个阶段. 有三个值: 1.RetentionPolicy.SOURCE —— 这种类型的Annotations只 ...

  4. leetcode-209-长度最小的子数组

    题目描述: 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, nums ...

  5. QuantLib 金融计算——QuantLib 入门

    目录 QuantLib 金融计算--QuantLib 入门 简介 主要功能 安装与使用 学习指南 The HARD Way The EASY Way QuantLib 金融计算--QuantLib 入 ...

  6. Redis实现分布式存储Session

    前言: 在单个项目时,一般都是用HttpSession接口存储当前登录用户的信息.但是在分布式项目的情况下,session是不会共享的,那怎么实现session共享呢?往下看.... 一.准备工作(基 ...

  7. 配置 CentOS 7 安装位置

    红框里是CentOS 7安装程序检测到的硬盘,选择你想把系统安装到哪个硬盘当中. 点击 Add disk 按钮可以添加指定的附加设备或者网络设备(通过ISCSI.FCoE等方式添加硬盘) 此处设置分区 ...

  8. ui2-3

    2016.9讲义 一.课程的主要内容和目的 二.课程所用工具软件——Photoshop CS6 1. Photoshop 的发展史 1990.2,ps1.0问世,1991.2,PS2.0发行,此后,进 ...

  9. stark - 4 ⇲ 视图函数

    ✘  list_view 处理表格(默认是显示表结构的所有字段) 1 list_display = self.get_list_display() # 4.1处理表头 header_list = [] ...

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

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