本节所讲内容:
• 使用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@xuegod61 ~]# rpm -qf `which parted`
parted-3.1-23.el7.x86_64
查看parted命令的帮助信息
[root@xuegod61 ~]# parted --help
或
[root@xuegod61 ~]# parted
(parted) help
(parted) quit #退出
查看所有的磁盘状态
[root@xuegod61 ~]#parted -l
通过parted 工具创建新的分区
[root@xuegod61 ~]# 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]?
(parted) quit
Information: You may need to update /etc/fstab.End? 200M
(parted) p
Model: VMware, VMware Virtual 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 may need to update /etc/fstab.
删除GPT分区
(parted) rm 2
扩展swap
首先创建一个新的分区/dev/sda3 1G
格式化sda3分区为swap格式
[root@xuegod61 ~]# mkswap /dev/sda3
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=9a3f0877-4167-441e-95ba-5212da679562
[root@xuegod61 ~]# free -m
total used free shared buff/cache available
Mem: 3937 336 3290 9 310 3373
Swap: 2047 0 2047
扩展swap分区
[root@xuegod61 ~]# swapon /dev/sda3
[root@xuegod61 ~]# free -m
total used free shared buff/cache available
Mem: 3937 336 3289 9 310 3372
Swap: 3071 0 3071
开机自动挂载
[root@xuegod61 ~]# vim /etc/fstab
/dev/sda3 swap swap defaults 0 0
注:只有重启才能生效,mount –a 无法自动扩展swap分区的。
关闭swap分区
[root@xuegod61 ~]# swapoff /dev/sda3
本节所讲内容:
• 硬盘结构
• 文件系统结构
• 硬链接和软链接
• 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(ZonedBit Recording)区位记录 (Zoned zōnd )
Zoned-bit recording(ZBR 区位记录)是一种物理优化硬盘存储空间的方法,此方法通过将更多的扇区放到磁盘的外部磁道而获取更多存储空间。
ZBR磁盘扇区结构示意图
特点:
读外圈的数据快,读内圈的数据慢:测试硬盘经常看到以下读取速度曲线图就很正常了。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是1KB,即连2个 sector组成一个 block。 4K =8扇区
RHEL7.2 如何设置block
[root@xuegod61 ~]# mkfs.xfs -b size=1024 /dev/sdb1 -f
meta-data=/dev/sdb1 isize=256 agcount=4, agsize=24064 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=1024 blocks=96256, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=1024 blocks=2564, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
注:
[root@xuegod61 ~]# mkfs.ext4 -b 1024 /dev/sdb1
Linux文件系统由三部分组成 :文件名,inode,block(真正存数据)
inode:文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
inode的内容
inode包含文件的元信息,具体来说有以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
[root@xuegod61 ~]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 36433003 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-02-24 08:45:42.182854288 -0500
Modify: 2016-02-24 08:45:42.182854288 -0500
Change: 2016-02-24 08:45:42.182854288 -0500
[root@xuegod61 ~]# ll a.txt
-rw-r--r-- 1 root root 0 Feb 24 08:45 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@xuegod61 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/rhel-root 10485760 138134 10347626 2% /
devtmpfs 500087 404 499683 1% /dev
tmpfs 503976 6 503970 1% /dev/shm
tmpfs 503976 563 503413 1% /run
tmpfs 503976 13 503963 1% /sys/fs/cgroup
/dev/sr0 0 0 0 - /mnt
/dev/sda1 204800 327 204473 1% /boot
tmpfs 503976 17 503959 1% /run/user/42
tmpfs 503976 1 503975 1% /run/user/0
使用ls -i命令,可以看到文件名对应的inode号码:
[root@xuegod61 ~]# ls -i a.txt
36433003 a.txt
查看目录的inode号
[root@xuegod61 ~]# ll -di /etc/
16777345 drwxr-xr-x. 136 root root 8192 Feb 24 08:03 /etc/
扩展:linux中ctime,mtime,atime的区别
ctime:“改变时间(change time)”
mtime :“修改时间(modification time)”
改变和修改之间的区别在于是改文件的属性还是更改它的内容。chmod a-w myfile,那么这是一个改变;
echo foo >> myfile,那么这是一个修改。
改变是文件的索引节点发生了改变;修改是文本本身的内容发生了变化。
atime :“访问时间(access time)”
访问时间是文件最后一次被读取的时间。因此阅读一个文件会更新它的访问时间。但是它的改变时间和修改时间并没有变。
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime
ln命令可以创建硬链接:
语法格式:
ln 源文件 目标文件
文件名1-》inode1-》blockA
文件名2-》inode1-》blockA
[root@xuegod61 ~]# ln a.txt b.txt
[root@xuegod61 ~]# ll -i a.txt b.txt
36433003 -rw-r--r-- 2 root root 10 Feb 24 09:05 a.txt
36433003 -rw-r--r-- 2 root root 10 Feb 24 09:05 b.txt
[root@xuegod61 ~]# rm -rf a.txt
[root@xuegod61 ~]# cat b.txt
aaaa
bbbb
#源文件被删除,不影响链接文件的正常使用
[root@xuegod61 ~]# mkdir test
[root@xuegod61 ~]# ln test/ xuegod
ln: ‘test/’: hard link not allowed for directory
#硬链接不能针对目录创建
[root@xuegod61 ~]# ln /boot/grub2/grub.cfg grub.cfg
ln: failed to create hard link ‘grub.cfg’ => ‘/boot/grub2/grub.cfg’: Invalidcross-device link
#硬链接不允许跨分区创建
总结: 硬链接特点,创建时,不能跨分区,不能给文件夹。
软链接:相当于windows中的快捷方式
[root@xuegod61 ~]# ln -s b.txt c.txt
[root@xuegod61 ~]# rm -rf b.txt
[root@xuegod61 ~]# cat c.txt
cat: c.txt: No such file or directory
#源文件被删除,链接文件失效
[root@xuegod61 ~]# ln -s test/ xuegod
#能针对目录创建
[root@xuegod61 ~]# ln -s /boot/grub2/grub.cfg grub.cfg
#能跨分区创建
例:查看目录的链接数
[root@xuegod61 ~]# ll -d test/
drwxr-xr-x 2 root root 6 Feb 24 09:10 test/
[root@xuegod61 ~]# ll -di test/
50599109 drwxr-xr-x 2 root root 6 Feb 24 09:10 test/
[root@xuegod61 test]# ll -di .
50599109 drwxr-xr-x 2 root root 6 Feb 24 09:10 .
[root@xuegod61 xuegod]# ll -di ..
50599109 drwxr-xr-x 3 root root 19 Feb 24 09:23 ..
实例:
web服务器中小文件很多,导致硬盘有空间,但无法创建文件。
inode数被用光了。
[root@xuegod61 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/rhel-root 10485760 138138 10347622 2% /
devtmpfs 500087 404 499683 1% /dev
tmpfs 503976 6 503970 1% /dev/shm
tmpfs 503976 563 503413 1% /run
tmpfs 503976 13 503963 1% /sys/fs/cgroup
/dev/sr0 0 0 0 - /mnt
/dev/sda1 204800 327 204473 1% /boot
tmpfs 503976 17 503959 1% /run/user/42
tmpfs 503976 1 503975 1% /run/user/0