本节所讲内容:

      使用parted操作大于等于4T硬盘

      扩展服务器swap内存空间

 

GPT分区:

GPT,全局唯一标识分区表(GUID Partition Table),GUID,与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区。GPT可管理硬盘大小达到了18EB(1EB=1024PB=1,048,576TB),不过NTFS格式最大仅支持256TB。

 

Parted 磁盘分区工具

[root@localhost ~]# rpm-qf `which parted`

parted-3.1-20.el7.x86_64

 

查看parted命令的帮助信息:

[root@localhost ~]#parted --help

[root@localhost ~]#parted

GNU Parted 3.1

Using /dev/sda

Welcome to GNU Parted!Type 'help' to view a list of commands.

(parted) help            

(parted) quit                      #退出

 

查看所有磁盘状态

[root@localhost ~]#parted -l

 

开始通过parted工具来对磁盘进行操作

[root@localhost ~]#parted /dev/sdb

GNU Parted 3.1

Using /dev/sdb

Welcome to GNU Parted!Type 'help' to view a list of commands.

(parted)                             #查看磁盘分区状态

Error: /dev/sdb:unrecognised disk label                    

(parted) mklabel                       #指定创建分区表类型为GPT

New disk label type? gpt   

(parted) mkpart                  #创建分区                                              

Partition name?  []? mydisk1                                             

File system type?  [ext2]?       #指定分区文件系统类型,默认就可以,因为后期对分区进行格式化的时候,同样可以指定                                              

Start? 1                                  #指定分区起始位置                                                          

End? 100M                        #指定分区结束位置                                                    

(parted) p                        #查看磁盘分区状态

Number  Start  End     Size    File system Name     Flags

 1     1049kB  99.6MB  98.6MB             mydisk1

 

(parted) mkpart                                                           

Partition name?  []? 2                                                    

File system type?  [ext2]?                                               

Start? 100M                                                               

End? 200M                                                                 

(parted) p                                                               

Model: VMware, VMwareVirtual S (scsi)

Disk /dev/sdb: 21.5GB

Sector size(logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

 

Number  Start  End     Size    File system Name     Flags

 1     1049kB  99.6MB  98.6MB               mydisk1

 2     99.6MB  200MB   101MB                2

 

(parted) quit                                                             

Information: You mayneed to update /etc/fstab.

 

扩展swap分区

新建swap 分区

#格式化sdb1分区为swap格式

 

[root@localhost ~]#mkswap /dev/sdb1

Setting up swapspaceversion 1, size = 96252 KiB

no label,UUID=d6e96d3b-9d74-4eda-8bdf-387754dca90e

 

查看虚拟内存大小

[root@localhost ~]#free -m

              total        used        free      shared buff/cache   available

Mem:           3939         517        2942           9         479        3191

Swap:          2047           0        2047

启动swap分区

[root@localhost ~]#swapon /dev/sdb1

 

再次查看

[root@localhost ~]#free -m

              total       used        free      shared buff/cache   available

Mem:           3939         516        2942           9         479        3191

Swap:          2141           0        2141

 

实现开机自动挂载swap分区

[root@localhost~]# vim /etc/fstab

/dev/sdb1               swap                    swap    defaults        0 0

说明:只有重启才能生效,mount –a 无法自动扩展swap分区的。

[root@localhost ~]#swapoff /dev/sdb1

 

 

本节所讲内容:

      硬盘结构

      文件系统结构

      硬链接和软链接

      xfs和ext 文件系统性能对比

      加密磁盘

 

磁盘 结构:

 

【学神-RHEL7】1-14-GPT分区和文件系统组成_第1张图片

硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)

【学神-RHEL7】1-14-GPT分区和文件系统组成_第2张图片

 

CHS结构体系的磁盘。

比较古老的CHS (Cylinder/Head/Sector)结构体系. 因为很久以前,在硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数,由此产生了所谓的3D参数(Disk Geometry),即是磁头数(Heads)、柱面数(Cylinders)、扇区数(Sectors)以及相应的3D寻址方式。 

这种结构有问题:

以前老式的磁盘,每个磁道的扇区都一样,这样外磁道整个弧长要大于内部的扇区弧长,因而其磁记录密度就要比内部磁道的密度要小。最终,导致了外部磁道的空间浪费。


 

【学神-RHEL7】1-14-GPT分区和文件系统组成_第3张图片

【学神-RHEL7】1-14-GPT分区和文件系统组成_第4张图片

簇类似于Linux系统中的block

例:文本文件“新建文本文档.txt”中有只有aa两个字符。

右击属性查看大小:  说明我的NTFS文件系统中默认的簇大小为4KB

【学神-RHEL7】1-14-GPT分区和文件系统组成_第5张图片

 

现在硬盘都采用这种技术:ZBR(Zoned Bit Recording)区位记录        (Zoned  zōnd )

Zoned-bit recording(ZBR 区位记录)是一种物理优化硬盘存储空间的方法,此方法通过将更多的扇区放到磁盘的外部磁道而获取更多存储空间。

ZBR磁盘扇区结构示意图

【学神-RHEL7】1-14-GPT分区和文件系统组成_第6张图片

特点:

【学神-RHEL7】1-14-GPT分区和文件系统组成_第7张图片

 

读外圈的数据快,读内圈的数据慢:测试硬盘经常看到以下读取速度曲线图就很正常了。


【学神-RHEL7】1-14-GPT分区和文件系统组成_第8张图片

 

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位"块"的大小,最常见的是1KB,即连2个 sector组成一个 block。  4K =8扇区

 

查看系统块大小

RHEL6操作系统:

[root@localhost~]# tune2fs -l /dev/sda1  | grep size

RHEL7操作系统

[root@localhost ~]#xfs_info /dev/sda1 | grep size

meta-data=/dev/sda1              isize=256    agcount=4, agsize=32000 blks

data     =                       bsize=4096   blocks=128000, imaxpct=25

【学神-RHEL7】1-14-GPT分区和文件系统组成_第9张图片

 

[root@localhost ~]# mkfs.xfs -b size=1024/dev/sdb2

meta-data=/dev/sdb2              isize=256    agcount=4, agsize=24576 blks

        =                      sectsz=512   attr=2, projid32bit=1

        =                       crc=0        finobt=0

data    =                      bsize=1024   blocks=98304,imaxpct=25

 

注:

RHEL6

[root@localhost ~]# mkfs.ext4 -b 2048/dev/sdb2

[root@localhost ~]# tune2fs -l /dev/sdb2 |grep size

Filesystem features:      has_journal ext_attr resize_inodedir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bgdir_nlink extra_isize

Block size:               2048

 

 

Linux文件系统由三部分组成 :文件名,inode,block(真正存数据)

inode:文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

 

inode的内容

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

  * 文件的字节数

  * 文件拥有者的User ID

  * 文件的Group ID

  * 文件的读、写、执行权限

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

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

* 文件数据block的位置

 

[root@localhost ~]#stat a.txt

  File: ‘a.txt’

  Size: 0           Blocks:0          IO Block: 4096   regular empty file

Device: fd01h/64769d  Inode: 34660829    Links: 1

Access:(0644/-rw-r--r--)  Uid: (    0/   root)   Gid: (    0/   root)

Access: 2015-12-1021:47:49.130938012 +0800

Modify: 2015-12-1021:47:49.130938012 +0800

Change: 2015-12-1021:47:49.130938012 +0800

 

[root@localhost ~]#ll a.txt

-rw-r--r-- 1 rootroot 0 Dec 10 21:47 a.txt

 

inode的大小

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

 

16G

1 G = 1024 MB  =1024 * 1024 KB

1 G = 1000 MB  =1000 * 1000 KB

 

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

 

[root@localhost ~]# df -i

Filesystem              Inodes  IUsed   IFree IUse% Mounted on

/dev/mapper/rhel-root 10485760131410 10354350    2% /

devtmpfs                501712    397  501315    1% /dev

tmpfs                   504204     6   504198    1% /dev/shm

tmpfs                   504204    511  503693    1% /run

tmpfs                   504204     13  504191    1% /sys/fs/cgroup

/dev/sr0                     0      0       0     - /mnt

/dev/sda1               512000    327  511673    1% /boot

 

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

[root@localhost ~]# ls -i a.txt

34660829 a.txt

查看目录的inode号

[root@localhost ~]# ls -i a.txt

34660829 a.txt

 

扩展:linux中ctime,mtime,atime的区别

ctime:“改变时间(changetime)”

mtime :“修改时间(modificationtime)”

改变和修改之间的区别在于是改文件的属性还是更改它的内容。chmod a-w myfile,那么这是一个改变;

echo foo >>myfile,那么这是一个修改。

改变是文件的索引节点发生了改变;修改是文本本身的内容发生了变化。

atime :“访问时间(accesstime)”

访问时间是文件最后一次被读取的时间。因此阅读一个文件会更新它的访问时间。但是它的改变时间和修改时间并没有变。

 

ls -lc filename         列出文件的 ctime
ls -lu filename 
        列出文件的 atime
ls -l filename 
         列出文件的 mtime 

 

ln命令可以创建硬链接:

语法格式:

ln 源文件目标文件

文件名1-》inode1-》blockA

文件名2-》inode1-》blockA

 

[root@localhost ~]# touch jjys

[root@localhost ~]# ln jjysdl.txt

 

[root@localhost ~]# ll -i  jjys dl.txt

34660830 -rw-r--r-- 2 rootroot 10 Dec 10 22:06 dl.txt

34660830 -rw-r--r-- 2 rootroot 10 Dec 10 22:06 jjys

 

[root@localhost ~]# ln  wusheng/ fengchen

ln: ‘wusheng/’: hard link notallowed for directory

#硬链接不支持目录

[root@localhost ~]# ln /boot/grub2/grub.cfg fengchen

ln: failed to create hard link‘fengchen’ => ‘/boot/grub2/grub.cfg’: Invalid cross-device link

#硬链接不支持跨分区创建

[root@localhost ~]# rm -rf jjys

[root@localhost ~]# cat dl.txt

aaaa

bbbb

#源文件被删,不影响链接文件的正常使用

总结: 硬链接特点,创建时,不能跨分区,不能给文件夹。

 

软链接:相当于windows中的快捷方式

[root@localhost ~]# ll -i eshao yuncai

[root@localhost ~]# rm -rf eshao

[root@localhost ~]# cat yuncai

cat: yuncai: No such file ordirectory

 

跨分区创建软链接

[root@localhost ~]# ln  -s /boot/grub2/grub.cfg   fengye

 

对目录创建软链接

[root@localhost ~]# ln -s /boot/  yanmou

 

例:查看目录的链接数

[root@localhost ~]# mkdir guoran

[root@localhost ~]# ll -d guoran/

drwxr-xr-x 2 root root 6 Dec 10 22:20 guoran/

 

[root@localhost ~]# ll -di guoran/

20039176 drwxr-xr-x 2 rootroot 6 Dec 10 22:20 guoran/

[root@localhost guoran]# ll-di .

20039176 drwxr-xr-x 2 rootroot 6 Dec 10 22:20 .

[root@localhost guoran]# mkdir zhengfa

[root@localhost guoran]# cd zhengfa/

[root@localhost zhengfa]# ll-di ..

20039176 drwxr-xr-x 3 rootroot 20 Dec 10 22:22 ..

 

实例:

web服务器中小文件很多,导致硬盘有空间,但无法创建文件。

inode数被用光了。

[root@localhost ~]# df -i

Filesystem              Inodes  IUsed   IFree IUse% Mounted on

/dev/mapper/rhel-root 10485760131421 10354339    2% /

devtmpfs                501712    397  501315    1% /dev

tmpfs                   504204      6  504198    1% /dev/shm

tmpfs                   504204    511  503693    1% /run

tmpfs                   504204     13  504191    1% /sys/fs/cgroup

/dev/sr0                     0      0       0     - /mnt

/dev/sda1               512000    327  511673    1% /boot