本节所讲内容:
使用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) p #查看磁盘分区状态
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 文件系统性能对比
加密磁盘
磁盘 结构:
硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)
CHS结构体系的磁盘。
比较古老的CHS (Cylinder/Head/Sector)结构体系. 因为很久以前,在硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数,由此产生了所谓的3D参数(Disk Geometry),即是磁头数(Heads)、柱面数(Cylinders)、扇区数(Sectors)以及相应的3D寻址方式。
这种结构有问题:
以前老式的磁盘,每个磁道的扇区都一样,这样外磁道整个弧长要大于内部的扇区弧长,因而其磁记录密度就要比内部磁道的密度要小。最终,导致了外部磁道的空间浪费。
簇类似于Linux系统中的block
例:文本文件“新建文本文档.txt”中有只有aa两个字符。
右击属性查看大小: 说明我的NTFS文件系统中默认的簇大小为4KB
现在硬盘都采用这种技术:ZBR(Zoned Bit Recording)区位记录 (Zoned zōnd )
Zoned-bit recording(ZBR 区位记录)是一种物理优化硬盘存储空间的方法,此方法通过将更多的扇区放到磁盘的外部磁道而获取更多存储空间。
ZBR磁盘扇区结构示意图
特点:
读外圈的数据快,读内圈的数据慢:测试硬盘经常看到以下读取速度曲线图就很正常了。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(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
[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