Linux|磁盘管理-基本分区
磁盘管理-基本分区
理论介绍
磁盘分类
- 机械硬盘(HDD):传统硬盘,为电脑主要的存储媒介之一。由一个或者多个铝制或者玻璃制成的磁性碟片,磁头,转轴,控制电机,磁头控制器,数据转换器,接口和缓存等几个部分组成。工作时,磁头悬浮在高速旋转的碟片上进行读写数据。

文章图片
- 固态硬盘:由多个闪存芯片加主控以及缓存组成的阵列式存储,属于以固态电子存储芯片阵列制成的硬盘。相对机械硬盘,读取速度更快,寻道时间更小,可加快操作系统启动速度和软件启动速度。,价格也更贵
个人PC机
- IDE:并口
文章图片
- SATA:IDE串行化,串口(一代二代三代)

文章图片
服务器
- SCSI:并口

文章图片
- SAS:SCSI串行化 ,串口

文章图片
磁盘设备的命名
/dev/sda2
- /dev/ 设备文件目录
- s 硬件接口类型
- d disk硬盘
- a 第一块硬盘(b 第二块;c 第三块;以此类推)
- 2 第2个分区
硬件设备 | 文件名称 | 备注 |
---|---|---|
IDE设备 | /dev/hd[a-d] | centos6+中IDE变为/dev/sd[a-d] |
SCSI/SATA/U盘 | /dev/sd[a-p] | 大部分为该类型 |
软驱 | /dev/fd[0-1] | |
打印机 | /dev/lp[0-15] | |
光驱 | /dev/cdrom | |
鼠标 | /dev/mouse | |
磁带机 | /dev/st0或/dev/ht0 |
扩展:HP(惠普)服务器硬盘分区方式
- /dev/cciss/c0d0
- /dev/cciss/c0d0p1 c0第一个控制器, d0第一块磁盘, p1分区1
- /dev/cciss/c0d0p2 c0第一个控制器, d0第一块磁盘, p2分区2
MBR&GPT比较

文章图片
分区方式 | MBR | GPT |
---|---|---|
分区大小 | <2TB | >2TB (<2TB也可以分) |
分区工具 | fdisk | gdisk |
分区方式 | 三个主分区+一个扩展分区(共四个主分区); 一个扩展分区可分为若干个逻辑分区 |
128个主分区 |
从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失扩展:http://www.eassos.cn/jiao-cheng/ying-pan/mbr-vs-gpt.php
常用查看命令 lsblk
- 列出所有可用块设备,显示依赖关系
[root@server1 ~]# lsblk
NAMEMAJ:MIN RMSIZE RO TYPE MOUNTPOINT
sda8:0020G0 disk
├─sda18:101G0 part /boot
└─sda28:2019G0 part
├─centos-root 253:0017G0 lvm/
└─centos-swap 253:102G0 lvm[SWAP]
sdb8:1605G0 disk
sr011:01973M0 rom
df -Th
- 列出文件系统的磁盘占用情况,也就是说,只显示正在挂载的设备
[root@server1 ~]# df -Th
文件系统类型容量已用可用 已用% 挂载点
devtmpfsdevtmpfs899M0899M0% /dev
tmpfstmpfs910M0910M0% /dev/shm
tmpfstmpfs910M9.6M901M2% /run
tmpfstmpfs910M0910M0% /sys/fs/cgroup
/dev/mapper/centos-root xfs17G1.9G16G11% /
/dev/sda1xfs1014M194M821M20% /boot
tmpfstmpfs182M0182M0% /run/user/0
fdisk -l
- 列出磁盘分区情况
[root@server1 ~]# fdisk -l磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a51a3设备 BootStartEndBlocksIdSystem
/dev/sda1*20482099199104857683Linux
/dev/sda2209920041943039199219208eLinux LVM磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
du -sh
- 查看磁盘空间占用情况
[root@server1 ~]# du -sh /*
0 /bin
162M /boot
0 /dev
36M /etc
1.3M /home
0 /lib
0 /lib64
0 /media
0 /mnt
0 /opt
du: 无法访问"/proc/8508/task/8508/fd/4": 没有那个文件或目录
du: 无法访问"/proc/8508/task/8508/fdinfo/4": 没有那个文件或目录
du: 无法访问"/proc/8508/fd/4": 没有那个文件或目录
du: 无法访问"/proc/8508/fdinfo/4": 没有那个文件或目录
0 /proc
36K /root
9.6M /run
0 /sbin
0 /srv
0 /sys
0 /tmp
1.4G /usr
361M /var
free -h
- 查看系统内存情况,常用于查看swap分区
[root@server1 ~]# free -h
totalusedfreesharedbuff/cacheavailable
Mem:1.8G153M1.4G9.5M256M1.4G
Swap:2.0G0B2.0G
blkid
- 查看具体设备的UUID和文件系统
[root@server1 ~]# blkid /dev/sda1
/dev/sda1: UUID="1eb189c6-19c3-498d-ad51-06531bf2f1e2" TYPE="xfs"
磁盘划分流程
- 新建分区
- 刷新分区表
- 格式化分区
- 挂载
fdisk
[root@server1 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0xe6d1d525 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):m
命令操作
atoggle a bootable flag
bedit bsd disklabel
ctoggle the dos compatibility flag
ddelete a partition#删除一个分区
gcreate a new empty GPT partition table
Gcreate an IRIX (SGI) partition table
llist known partition types
mprint this menu#打印本帮助菜单
nadd a new partition#建立一个新的分区
ocreate a new empty DOS partition table
pprint the partition table#打印分区表
qquit without saving changes#退出不保存设置
screate a new empty Sun disklabel
tchange a partition's system id
uchange display/entry units
vverify the partition table
wwrite table to disk and exit#保存分区表
xextra functionality (experts only)
--------------------------------------------------------------
##################用法##################
命令(输入 m 获取帮助):n #创建新分区
Partition type:
pprimary (0 primary, 0 extended, 4 free)
eextended
Select (default p):#回车,默认p:主分区
Using default response p
分区号 (1-4,默认 1): #回车
起始 扇区 (2048-10485759,默认为 2048): #回车,一般选择默认即可,不建议手动设置
将使用默认值 2048
Last 扇区, +扇区 or +size{
K,M,G} (2048-10485759,默认为 10485759):+1G #设置分区大小
分区 1 已设置为 Linux 类型,大小设为 1 GiB命令(输入 m 获取帮助):n #创建新分区
Partition type:
pprimary (1 primary, 0 extended, 3 free)
eextended
Select (default p): e #e:扩展分区
分区号 (2-4,默认 2): #回车
起始 扇区 (2099200-10485759,默认为 2099200):#回车
将使用默认值 2099200
Last 扇区, +扇区 or +size{
K,M,G} (2099200-10485759,默认为 10485759):+4G #设置分区大小
将使用默认值 10485759
分区 2 已设置为 Extended 类型,大小设为 4 GiB命令(输入 m 获取帮助):n #创建新分区
Partition type:
pprimary (1 primary, 1 extended, 2 free)
llogical (numbered from 5)
Select (default p): l #:逻辑分区
添加逻辑分区 5
起始 扇区 (2101248-10485759,默认为 2101248):#回车
将使用默认值 2101248
Last 扇区, +扇区 or +size{
K,M,G} (2101248-10485759,默认为 10485759):+2G
分区 5 已设置为 Linux 类型,大小设为 2 GiB命令(输入 m 获取帮助):P #打印分区表磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe6d1d525设备 BootStartEndBlocksIdSystem
/dev/sdb120482099199104857683Linux
/dev/sdb220992001048575941932805Extended
/dev/sdb521012486295551209715283Linux命令(输入 m 获取帮助):w #保存退出
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@server1 ~]# lsblk
NAMEMAJ:MIN RMSIZE RO TYPE MOUNTPOINT
sda8:0020G0 disk
├─sda18:101G0 part /boot
└─sda28:2019G0 part
├─centos-root 253:0017G0 lvm/
└─centos-swap 253:102G0 lvm[SWAP]
sdb8:1605G0 disk
├─sdb18:1701G0 part
├─sdb28:1801K0 part
└─sdb58:2102G0 part
sr011:01973M0 rom
注意事项:
- 最多只能分4个主分区,主分区编号1-4
- 逻辑分区大小总和不能超过扩展分区大小,逻辑分区分区编号从5开始
- 如果删除扩展分区,则逻辑分区也被删除
- 扩展分区的分区编号(1-4)
- 扩展分区不能进行格式化,挂载使用。只有1k,用来记录逻辑分区的信息
- 创建分区顺序1-2-3-4,删除分区顺序4-3-2-1
- 已经有数据的磁盘,不建议再进行磁盘划分
- VMware新建一个虚拟磁盘
[root@server1 ~]# lsblk
NAMEMAJ:MIN RMSIZE RO TYPE MOUNTPOINT
sda8:0020G0 disk
├─sda18:101G0 part /boot
└─sda28:2019G0 part
├─centos-root 253:0017G0 lvm/
└─centos-swap 253:102G0 lvm[SWAP]
sdb8:1605G0 disk
├─sdb18:1702G0 part
└─sdb28:1802G0 part [SWAP]
sdc8:3205G0 disk
sr011:01973M0 rom
[root@server1 ~]# gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.10Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not presentCreating new GPT entries.Command (? for help): ? 获取帮助信息
b back up GPT data to a file
c change a partition's name
d delete a partition 删除分区
i show detailed information on a partition
l list known partition types
n add a new partition 创建新分区
o create a new empty GUID partition table (GPT)
p print the partition table 打印分区表
q quit without saving changes 不保存退出
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit 保存分区表
x extra functionality (experts only)
? print this menuCommand (? for help): n
Partition number (1-128, default 1):
First sector (34-10485726, default = 2048) or {
+-}size{
KMGTP}:
Last sector (2048-10485726, default = 10485726) or {
+-}size{
KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L
0700 Microsoft basic data0c01 Microsoft reserved2700 Windows RE
3000 ONIE boot3001 ONIE config4100 PowerPC PReP boot
4200 Windows LDM data4201 Windows LDM metadata7501 IBM GPFS
7f00 ChromeOS kernel7f01 ChromeOS root7f02 ChromeOS reserved
8200 Linux swap8300 Linux filesystem8301 Linux reserved
8302 Linux /home8400 Intel Rapid Start8e00 Linux LVM
a500 FreeBSD disklabela501 FreeBSD boota502 FreeBSD swap
a503 FreeBSD UFSa504 FreeBSD ZFSa505 FreeBSD Vinum/RAID
a580 Midnight BSD dataa581 Midnight BSD boota582 Midnight BSD swap
a583 Midnight BSD UFSa584 Midnight BSD ZFSa585 Midnight BSD Vinum
a800 Apple UFSa901 NetBSD swapa902 NetBSD FFS
a903 NetBSD LFSa904 NetBSD concatenateda905 NetBSD encrypted
a906 NetBSD RAIDab00 Apple bootaf00 Apple HFS/HFS+
af01 Apple RAIDaf02 Apple RAID offlineaf03 Apple label
af04 AppleTV recoveryaf05 Apple Core Storagebe00 Solaris boot
bf00 Solaris rootbf01 Solaris /usr & Mac Zbf02 Solaris swap
bf03 Solaris backupbf04 Solaris /varbf05 Solaris /home
bf06 Solaris alternate sebf07 Solaris Reserved 1bf08 Solaris Reserved 2
bf09 Solaris Reserved 3bf0a Solaris Reserved 4bf0b Solaris Reserved 5
c001 HP-UX datac002 HP-UX serviceea00 Freedesktop $BOOT
eb00 Haiku BFSed00 Sony system partitioed01 Lenovo system partit
Press the key to see more codes:
ef00 EFI Systemef01 MBR partition schemeef02 BIOS boot partition
fb00 VMWare VMFSfb01 VMWare reservedfc00 VMWare kcore crash p
fd00 Linux RAID
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'Command (? for help): n
Partition number (2-128, default 2):
First sector (34-10485726, default = 4196352) or {
+-}size{
KMGTP}:
Last sector (4196352-10485726, default = 10485726) or {
+-}size{
KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'Command (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!Do you want to proceed? (Y/N):
Your option? (Y/N): Y
OK;
writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.
[root@server1 ~]# lsblk
NAMEMAJ:MIN RMSIZE RO TYPE MOUNTPOINT
sda8:0020G0 disk
├─sda18:101G0 part /boot
└─sda28:2019G0 part
├─centos-root 253:0017G0 lvm/
└─centos-swap 253:102G0 lvm[SWAP]
sdb8:1605G0 disk
├─sdb18:1702G0 part
└─sdb28:1802G0 part [SWAP]
sdc8:3205G0 disk
├─sdc18:3302G0 part
└─sdc28:3401G0 part
sr011:01973M0 rom
partprobe刷新分区表
[root@server1 ~]# partprobe#刷新所有分区表
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
[root@server1 ~]# partprobe /dev/sdb#刷新指定分区表
注意事项:
1.如果刷新不成功,可以尝试重启操作系统
mkfs格式化分区
常见文件系统
- ext3
是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据
的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分
之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便
在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复
- ext4
Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达
1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批
量分配block块,从而极大地提高了读写效率
- XFS
是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意
外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费
极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有需
求
[root@server1 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
挂载
mount临时挂载
创建挂载目录
[root@server1 ~]# mkdir /mnt/mount_sdb1挂载
[root@server1 ~]# mount /dev/sdb1 /mnt/mount_sdb1/
[root@server1 ~]# mount -o remount,ro,sync /mnt/mount_sdb1/
#选项说明
-o:挂载选项 ro,sync,rw,remount
-t:文件系统类型
mount -t nfs=mount.nfs(NFS)
mount.nfs 192.168.226.10:/share /nfs_share
mount -t cifs=mount.cifs(SAMBA)
mount.cifs -o user=user01,password=1 //192.168.226.10/samba_share /samba_share查看挂载选项信息
[root@server1 ~]# mount
/dev/sdb1 on /mnt/mount_sdb1 type ext4 (rw,relatime,data=https://www.it610.com/article/ordered)解挂
[root@server1 ~]# umount /mnt/mount_sdb1
注意事项:
1.挂载点为空目录
2.多个设备不能挂载到同一个目录中
3.挂载目录的权限,不取决于挂载点原有的权限,而取决于被挂载文件
4.mount临时挂载,重启系统失效
/etc/fstab永久挂载 永久挂载原因:
启动操作系统后,系统会进行初始化。初始化文件/sbin/init会自动调用/etc/fstab文件。将挂载信息写入/etc/fstab文件,每次开机都会读取该文件,从而实现永久挂载
[root@server1 mount_sdb1]# vim /etc/fstab
挂载的设备(文件名或者UUID)+挂载点+文件系统类型+挂载选型+0(0表示不需要dump备份,1表示每天备份)+0(0是不要 fsck 检验扇区,1表示要且最先检验)
async/sync异步/同步:
auto/noauto自动/非自动:
rw/ro读写/只读:
exec/noexec可被执行/不可被执行:
remount重新挂在一个已经挂载的文件系统,常用于修改挂载参数
user/nouser允许/不允许其他普通用户挂载:
suid/nosuid具有/不具有suid权限:该文件系统是否允许SUID的存在。
usrquota这个是在启动文件系统的时候,让其支持磁盘配额,这个是针对用户的。
grpquota支持用户组的磁盘配额。
....
defaults 同时具有rw, dev, exec, acl, async,nouser等参数。------------------------------------------------------------
[root@server1 mount_sdb1]# vim /etc/fstab
/dev/mapper/centos-root /xfsdefaults0 0
UUID=1eb189c6-19c3-498d-ad51-06531bf2f1e2 /bootxfsdefaults0 0
/dev/mapper/centos-swap swapswapdefaults0 0
//192.168.226.10/samba_share /smb_share cifs user=user01,password=1 0 0
192.168.226.10:/share /nfs_share nfs ro 0 0
/dev/sdb1 /mnt/mount_sdb1 ext4 defaults 0 0重新读取/etc/fstab文件内容
[root@server1 mount_sdb1]# mount -a
[root@server1 mount_sdb1]# lsblk
NAMEMAJ:MIN RMSIZE RO TYPE MOUNTPOINT
sda8:0020G0 disk
├─sda18:101G0 part /boot
└─sda28:2019G0 part
├─centos-root 253:0017G0 lvm/
└─centos-swap 253:102G0 lvm[SWAP]
sdb8:1605G0 disk
├─sdb18:1701G0 part /mnt/mount_sdb1
├─sdb28:1801K0 part
└─sdb58:2102G0 part
sr011:01973M0 rom
autofs服务灵活挂载
访问时会自动挂载,一定时间不访问会自动卸载,依赖于后台的autofs服务
- 挂载本地资源
安装autofs软件
[root@server1 ~]# yum install -y autofs修改配置文件
[root@server1 ~]# vim /etc/auto.master
/mnt/etc/auto.sdb5 -t 3
#定义一级挂载点/mnt和子配置文件/etc/auto.sdb5以及超时卸载时间
[root@server1 ~]# vim /etc/auto.sdb5
mount_sdb5-fstype=ext4,ro :/dev/sdb5
#定义二级挂载点/mnt/mount_sdb5 文件类型 挂载选项 被挂载的设备启动服务
[root@server1 ~]# systemctl start autofs.service
[root@server1 ~]# systemctl enable autofs.service 测试
[root@server1 ~]# ls /mnt/mount_sdb1
ls: 无法访问/mnt/mount_sdb1: 没有那个文件或目录
报错:无法访问/mnt/mount_sdb1: 没有那个文件或目录。无法挂载
原因:设备未格式化
【Linux|磁盘管理-基本分区】解决 :mkfs.ext4 /dev/sdb1
[root@server1 ~]# mkfs.ext4 /dev/sdb1
[root@server1 ~]# systemctl restart autofs
[root@server1 ~]# cd /mnt
[root@server1 mnt]# ls mount_sdb1
lost+found
[root@server1 mnt]# lsblk
NAMEMAJ:MIN RMSIZE RO TYPE MOUNTPOINT
sda8:0020G0 disk
├─sda18:101G0 part /boot
└─sda28:2019G0 part
├─centos-root 253:0017G0 lvm/
└─centos-swap 253:102G0 lvm[SWAP]
sdb8:1605G0 disk
└─sdb18:1702G0 part /mnt/mount_sdb1
sr011:01973M0 rom
- 挂载网络资源(NFS)
搭建nfs服务端
[root@server2 ~]# yum install -y rpcbind.x86_64
[root@server2 ~]# yum install -y nfs-utils.x86_64
[root@server2 ~]# mkdir /share/nfs -p
[root@server2 ~]# touch /share/nfs/file1
[root@server2 ~]# echo '/share/nfs 192.168.226.10(ro)' >> /etc/exports
[root@server2 ~]# cat /etc/exports
/share/nfs 192.168.226.10(ro)
[root@server2 ~]# systemctl start rpcbind.service
[root@server2 ~]# systemctl start nfs客户端autofs挂载
[root@server1 ~]# yum install -y nfs-utils
[root@server1 ~]# mkdir /share
[root@server1 ~]# echo '/share /etc/auto.nfs' >> /etc/auto.master
[root@server1 ~]# touch /etc/auto.nfs
[root@server1 ~]#echo 'auto_nfs -nfs,ro 192.168.226.20:/share/nfs' >> /etc/auto.nfs
[root@server1 ~]# systemctl restart autofs测试
[root@server1 ~]# ls /share/auto_nfs
file1
[root@server1 ~]# df -Th
文件系统类型容量已用可用 已用% 挂载点
devtmpfsdevtmpfs899M0899M0% /dev
tmpfstmpfs910M0910M0% /dev/shm
tmpfstmpfs910M9.6M901M2% /run
tmpfstmpfs910M0910M0% /sys/fs/cgroup
/dev/mapper/centos-rootxfs17G1.9G16G11% /
/dev/sda1xfs1014M194M821M20% /boot
tmpfstmpfs182M0182M0% /run/user/0
192.168.226.20:/share/nfs nfs417G1.9G16G11% /share/auto_nfs
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 2020-04-07vue中Axios的封装和API接口的管理
- Linux下面如何查看tomcat已经使用多少线程
- Beego打包部署到Linux
- 全过程工程咨询——时间管理(12)
- 《卓有成效的管理者》第二十二堂课(创造英雄)
- 游乐园系统,助力游乐园管理
- #山言良语#用管理思维百天减肥18斤
- 最有效的时间管理工具(赢效率手册和总结笔记)
- 干货来袭(自我管理(来几款撩人的APP))