面对磁盘不头疼

需要知道的概念

文件系统的类型

 

两种分区格式

  MBR:如今主流的分区格式,针对两T以下的硬盘进行分区

    分区的方式:针对柱面

    0号扇区存放着:主引导程序446个字节(16进制)、主分区表64个字节每16个字节代表一个分区号。最后两个字节55AA分区结束标识表示上面有分区

    分区多少:最多四个分区可3个主分区一个扩展分区。

      主分区只有一个是保持激活状态用来识别系统盘。主分区从/dev/sda1-4

      扩展分区只能一个,其中扩展分区用来存放其他逻辑分区,所以这个扩展分区不能做它用。逻辑分区从/dev/sda5开始不管前面的满没满。

  GPT:针对大容量的硬盘进行分区,逐渐的主流,支持128个分区,最多支持64z大小的分区。GPT分区的头部会有个MBR的头引导系统,GPT分区表自动分别在头和尾两份。

 

创建一个磁盘系统的三个步骤

  1.分区。

  2.指定文件系统。

  3.设置挂载点

1.分区

-分区的工具

-分区的识别

注意事项! 写到最后的配置文件中最好用uuid,其次卷标。

1分区的三个工具

  fdisk:创建MBR分区,对GPT分区支持不是很好。不能用在GPT

    

[root@localhost ~]# fdisk -l    #显示硬盘中的各个分区信息

Disk /dev/sda: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders     #磁头
Units = cylinders of 16065 * 512 = 8225280 bytes  #柱面
Sector size (logical/physical): 512 bytes / 512 bytes  #扇区
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ae00a
                                                 #文件系统类型
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         256     2048000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             256         511     2048000   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
 /dev/sda3             511       13055   100760576   83  Linux      


[root@localhost ~]# fdisk /dev/sdb  #进入这个硬盘

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p      #    打印硬盘信息
Command (m for help): d      # 删除硬盘分区
Partition number (1-4): 1       #删除第一个

Command (m for help): d             
Selected partition 2                 #只剩最后一个分区

Command (m for help): d
No partition is defined yet!       提示没有分区了

Command (m for help): n       # 新建分区
Command action 
   e   extended                         #选e扩展分区
   p   primary partition (1-4)    # 选择1-4的分区
Partition number (1-4): 1        # 创建第一个分区
First cylinder (1-13054, default 1):   # 选择柱面从哪开始默认就好
Using default value 1               # 提示使用默认值
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054): +5G                             #选择大小

Command (m for help): p         #打印信息

Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b8dd1

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  83  Lin 

Command (m for help): w          #保存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.    #提示成功
Syncing disks. 
View Code

 

 

  gdisk:创建GPT分区,为了方便老的系统识别,头部会有个MBR的头,如果要使用GPT分区需要结构支持UEFI

 

 1 [root@localhost ~]# gdisk /dev/sdc       #修改分区类型
 2 GPT fdisk (gdisk) version 0.8.10
 3 
 4 Partition table scan:         #支持的分区类型
 5   MBR: MBR only  
 6   BSD: not present
 7   APM: not present
 8   GPT: not present
 9 ...省略
10 Command (? for help): n          #新建
11 Partition number (1-128, default 1):     #分区号,默认就好
12 First sector (34-209715166, default = 2048) or {+-}size{KMGTP}: 
13    #从哪里开始
14 Last sector (2048-209715166, default = 209715166) or {+-}size{KMGTP}: +1G       #选择扇区大小
15 Current type is 'Linux filesystem'
16 Hex code or GUID (L to show codes, Enter = 8300):  #uuid号
17 
18 Command (? for help): w           #写入保存
19 
20 Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
21 PARTITIONS!!
22 
23 Do you want to proceed? (Y/N): y          #确定
24 OK; writing new GUID partition table (GPT) to /dev/sdc.
25 The operation has completed successfully.   #提示成功
26 
27 Command (? for help): p   #打印分区表信息
28 Disk /dev/sdc: 209715200 sectors, 100.0 GiB
29 Logical sector size: 512 bytes
30 Disk identifier (GUID): 2C30B051-F34D-4AFE-8136-8D0537C2D69C
31 Partition table holds up to 128 entries
32 First usable sector is 34, last usable sector is 209715166
33 Partitions will be aligned on 2048-sector boundaries
34 Total free space is 207617981 sectors (99.0 GiB)
35 
36 Number  Start (sector)    End (sector)  Size       Code  Name
37    1            2048         2099199   1024.0 MiB  8300  Linux filesystem
38 
39 
40 [root@localhost ~]# fdisk -l /dev/sdc   #显示这个磁盘分区信息
41 
42 WARNING: GPT (GUID Partition Table) detected on '/dev/sdc'! The util fdisk doesn't support GPT. Use GNU Parted.
43 ...省略
44 
45    Device Boot      Start         End      Blocks   Id  System
46 /dev/sdc1               1       13004   104857599+  ee  GPT   
View Code

 

  parted:分区管理工具,能够创建,复制,调整等。

 

 1 parted 用来创建管理分区的有两种运行方式一种交互一种全部写全
 2  
 3 parted /dev/sdb mklabel gpt|msdos
 4 创建分区类型
 5 parted /dev/sdb prit
 6 打印分区表信息
 7 parted /dev/sdb mkpart primary 1 200 (默认M)
 8 创建分区大小
 9 parted /dev/sdb rm 1
10 删除第几个分区
11 parted -l
12  
13 在linux中改变分区后不一定会立即显示出来,但是有同步的命令
14 5和7一样 parted
15 6上是 partx -a #更新分区新建信息 删除的是 partx -d --nr 7-8

 

2.分区的识别

 partprobe 重新设置内存中的内核分区表版本  centos5 和centos7两个版本都能这个命令搞定

 centos6 因为内核的关系需要6上是

  partx -a         #更新分区新建信息

  partx -d --nr 分区名       #用来删除后的更新

3.查看分区信息的三种方法

 1 [root@localhost ~]# lsblk
 2 NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 3 sr0     11:0    1  3.7G  0 rom  /media/CentOS_6.8_Final
 4 sda      8:0    0  100G  0 disk 
 5 ├─sda1   8:1    0    2G  0 part /boot
 6 ├─sda2   8:2    0    2G  0 part [SWAP]
 7 └─sda3   8:3    0 96.1G  0 part /
 8 sdb      8:16   0  100G  0 disk 
 9 └─sdb1   8:17   0    5G  0 part 
10 sdc      8:32   0  100G  0 disk 
11 └─sdc1   8:33   0    1G  0 part 
12 
13 
14 [root@localhost ~]# cat /proc/partitions 
15 major minor  #blocks  name
16 
17    8        0  104857600 sda
18    8        1    2048000 sda1
19    8        2    2048000 sda2
20    8        3  100760576 sda3
21    8       16  104857600 sdb
22    8       17    5253223 sdb1
23    8       32  104857600 sdc
24    8       33    1048576 sdc1
25 
26 #以上两种都是读取内存中的信息,如果想知道最新的信息需要上面的命令更新。
27 
28 #接下来是查看硬件获取信息的
29 [root@localhost ~]# fdisk -l
30 
31 Disk /dev/sda: 107.4 GB, 107374182400 bytes
32 255 heads, 63 sectors/track, 13054 cylinders
33 Units = cylinders of 16065 * 512 = 8225280 bytes
34 Sector size (logical/physical): 512 bytes / 512 bytes
35 I/O size (minimum/optimal): 512 bytes / 512 bytes
36 Disk identifier: 0x000ae00a
37 
38    Device Boot      Start         End      Blocks   Id  System
39 /dev/sda1   *           1         256     2048000   83  Linux
40 Partition 1 does not end on cylinder boundary.
41 /dev/sda2             256         511     2048000   82  Linux swap / Solaris
42 Partition 2 does not end on cylinder boundary.
43 /dev/sda3             511       13055   100760576   83  Linux
44 ...省略
View Code

 

 

2.指定文件系统

-查看支持的文件系统

-指定管理挂载文件系统

 -文件系统相关

1.查看支持的文件系统

 1 [root@localhost ~]# cat /proc/filesystems
 2 nodev   sysfs
 3 nodev   rootfs
 4 nodev   bdev
 5 nodev   proc
 6 nodev   cgroup
 7 nodev   cpuset
 8 nodev   tmpfs
 9 nodev   devtmpfs
10 nodev   binfmt_misc
11 nodev   debugfs
12 nodev   securityfs
13 nodev   sockfs
14 nodev   usbfs
15 nodev   pipefs
16 nodev   anon_inodefs
17 nodev   inotifyfs
18 nodev   devpts
19 nodev   ramfs
20 nodev   hugetlbfs
21         iso9660
22 nodev   pstore
23 nodev   mqueue
24 nodev   selinuxfs
25 nodev   drm
26         ext4          
27 nodev   autofs
28 nodev   fuse
29         fuseblk
30 
31 
32 [root@localhost ~]# ls /lib/modules/`uname -r`/kernel/fs
33 autofs4     configfs  exportfs  fat      jbd    mbcache.ko  nls       xfs
34 btrfs       cramfs    ext2      fscache  jbd2   nfs         squashfs
35 cachefiles  dlm       ext3      fuse     jffs2  nfs_common  ubifs
36 cifs        ecryptfs  ext4      gfs2     lockd  nfsd        udf
View Code

 

2.指定管理挂载文件系统

创建文件系统

  1.  mkfs.文件系统名 /设备路径名

  2.  mkfs -t 文件系统名 /设备路径名

         -L ‘LABEL’   #设定卷标(卷标名最好是设备路径)

 1 [root@localhost ~]# mkfs.ext4 /dev/sdc1
 2 mke2fs 1.41.12 (17-May-2010)
 3 ...省略
 4 正在写入inode表: 完成                            
 5 Creating journal (32768 blocks): 完成
 6 Writing superblocks and filesystem accounting information: 完成
 7 ...省略
 8 This filesystem will be automatically checked every 35 mounts or
 9 180 days, whichever comes first.  Use tune2fs -c or -i to override.
10 #确认下修改信息
11 [root@localhost ~]# blkid
12 /dev/sda1: UUID="1ca2e948-5f62-492d-9925-bd2bb63c5418" TYPE="ext4" 
13 /dev/sda2: UUID="d8a4bba5-5851-4cc0-a67f-d7bb1f361485" TYPE="swap" 
14 /dev/sda3: UUID="8b325c7e-44d5-41f5-93d4-4d3480492673" TYPE="ext4" 
15 /dev/sdc1: LABEL="/dev/sdc1" UUID="e65913f0-9948-450e-b1b6-00b3e7a68a9c" TYPE="ext4" 
View Code

创建ext文件系统

 1 #一般块数量*大小=inode所代表的大小
 2 mke2fs  
 3   -t:(ext2|ext3|ext4)
 4   -b:{1024|2048|4096}  #指定块大小,根据系统默认就好,一般硬盘分区越大,块设备越大
 5   -i:        指定    inode 多少空间创建inode  块大小应该比inode大
 6   -n: #   指定inode节点数量
 7   -m: # 指定给管理员所留节点百分比  0.几也可以,在特别大的硬盘中完全可以0.几
 8   -O: 启用特性   #比如加上日志功能用这个不用格式化
 9   例:tune2fs -O ^特性 /设备名   #关掉特性
10   -L:#加卷标  #最好挂载的文件夹做卷标
11   -j:#升级ext2系统为ext3,ext3是升级不到ext4的#这个估摸也用不到

 

ext系列文件系统的重新设定tune2fs  #一般挂载完,你也不可能修改没什么作用。

tune2fs -l /dev/sdb1 查看系统支持的特性
  tune2fs -O ^has_journal /dev/sda9 移除特性
  tune2fs -O +has_journal /dev/sda9 添加特性
  -o:修改ACL   
  tune2fs -o acl /dev/sda9
  tune2fs -o ^acl /dev/sda9
 

挂载文件系统

 mount

  1 [root@localhost ~]# mount /dev/sdc2 /mnt/sdc2
  2 [root@localhost ~]# mount /dev/sdc3 /mnt/sdc3
  3 [root@localhost ~]# umount /dev/sdc3
  4 [root@localhost ~]# df
  5 Filesystem     1K-blocks    Used Available Use% Mounted on
  6 /dev/sda3       99047960 3759412  90250520   4% /
  7 tmpfs             502068      84    501984   1% /dev/shm
  8 /dev/sda1        1983056   35580   1845076   2% /boot
  9 /dev/sr0         3824484 3824484         0 100% /media/CentOS_6.8_Final
 10 /dev/sdc1       10194676   23064   9647092   1% /mnt/sdc1
 11 /dev/sdc2       20519956   44992  19425920   1% /mnt/sdc2
 12 
 13 [root@localhost ~]# mount /dev/sdc3 /mnt/sdc3 -r
 14 [root@localhost ~]# touch /mnt/sdc3 text.sh
 15 touch: 正在设置"/mnt/sdc3" 的时间: 只读文件系统
 16 
 17 
 18 
 19     -n:藏老师用的
 20     用cat /proc/mounts 可查看隐藏的文件系统挂载
 21     [root@localhost ~]# mount -n /dev/sdc3 /mnt/sdc3
 22     [root@localhost ~]# df
 23     Filesystem     1K-blocks    Used Available Use% Mounted on
 24     /dev/sda3       99047960 3759420  90250512   4% /
 25     tmpfs             502068      84    501984   1% /dev/shm
 26     /dev/sda1        1983056   35580   1845076   2% /boot
 27     /dev/sr0         3824484 3824484         0 100%             
 28     /media/CentOS_6.8_Final
 29     /dev/sdc1       10194676   23064   9647092   1% /mnt/sdc1
 30     /dev/sdc2       20519956   44992  19425920   1% /mnt/sdc2
 31 
 32     [root@localhost ~]# cat /proc/mounts
 33     /dev/sdc2 /mnt/sdc2 ext4       #显示的隐藏文件信息
 34  rw,seclabel,relatime,barrier=1,data=ordered 0 0
 35 
 36     -L:根据卷标名挂载
 37     /dev/sdc1: LABEL="/dev/sdc1" UUID="e65913f0-9948-450e-b1b6-00b3e7a68a9c" TYPE="ext4" 
 38     /dev/sdc2: UUID="b749b087-1106-4e0f-ae67-f9beb828cd76" TYPE="ext4" 
 39     /dev/sdc3: UUID="cf247325-a470-47bc-92fd-e6d0d8ba754d" TYPE="ext4" 
 40     [root@localhost ~]# umount /dev/sdc1
 41     [root@localhost ~]# mount -L "/dev/sdc1" /mnt/sdc1 
 42     [root@localhost ~]# df
 43 Filesystem     1K-blocks    Used Available Use% Mounted on
 44     /dev/sda3       99047960 3759420  90250512   4% /
 45 tmpfs             502068      84    501984   1% /dev/shm
 46     /dev/sda1        1983056   35580   1845076   2% /boot
 47     /dev/sr0         3824484 3824484         0 100%         
 48     /media/CentOS_6.8_Final
 49     /dev/sdc2       20519956   44992  19425920   1% /mnt/sdc2
 50     /dev/sdc1       10194676   23064   9647092   1% /mnt/sdc1
 51     [root@localhost ~]# 
 52     -U:根据UUID修改
 53 
 54     -B:挂载文件夹
 55         mout -B /boot /mnt/boot         
 56 
 57 
 58 挂载文件:作用在分区把磁盘空间都分完了,但是各个分区都有剩余 
 59 [root@localhost ~]# dd if=/dev/zero of=/root/text bs=1k count=512
 60 记录了512+0 的读入
 61 记录了512+0 的写出
 62 524288字节(524 kB)已复制,0.0135686 秒,38.6 MB/ 63 [root@localhost ~]# mkfs.ext4 text
 64 mke2fs 1.41.12 (17-May-2010)
 65 text is not a block special device.
 66 无论如何也要继续? (y,n) y
 67 
 68 正在写入inode表: 完成                            
 69 
 70 文件系统小得无法记录日志
 71 Writing superblocks and filesystem accounting information: 完成
 72 
 73 
 74 挂载文件
 75 [root@localhost ~]# mount -o loop text /mnt/text
 76 [root@localhost ~]# mount
 77 /dev/sda3 on / type ext4 (rw)
 78 proc on /proc type proc (rw)
 79 sysfs on /sys type sysfs (rw)
 80 devpts on /dev/pts type devpts (rw,gid=5,mode=620)
 81 tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
 82 /dev/sda1 on /boot type ext4 (rw)
 83 none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
 84 /root/text on /mnt/text type ext4 (rw,loop=/dev/loop0)
 85 
 86 
 87 # 挂载文件系统一定要记着 先格式化,文件大小就是你以后你挂载点大小,填充记得大点,猜测肯定有人犯错,故意写在最后。
 88 
 89 [root@localhost ~]# ls /dev/loo*
 90 /dev/loop0  /dev/loop2  /dev/loop4  /dev/loop6
 91 /dev/loop1  /dev/loop3  /dev/loop5  /dev/loop7
 92 #loop系统默认设置8个,要增加可以修改/boot/grub/grub.conf这个文件
 93  kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=8b325c7e-44d5-41f5-93d4-4d3480492673 rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crash kernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet max_loop=50
 94         initrd /initramfs-2.6.32-642.el6.x86_64.img
 95 ~
 96 
 97 "/boot/grub/grub.conf" 17L, 758C 已写入                       
 98 #重启后生效
 99 [root@localhost ~]# ls /dev/loo*
100 /dev/loop0   /dev/loop17  /dev/loop25  /dev/loop33  /dev/loop41  /dev/loop5
101 /dev/loop1   /dev/loop18  /dev/loop26  /dev/loop34  /dev/loop42  /dev/loop6
102 /dev/loop10  /dev/loop19  /dev/loop27  /dev/loop35  /dev/loop43  /dev/loop7
103 ...省略
104 
105 生产中不能重启用的办法是
106 [root@localhost ~]# mknod /app/loop101 b 7 101
107 [root@localhost ~]# ll /app/loop*
108 brw-r--r--. 1 root root 7, 100 4月  22 07:01 /app/loop100
109 brw-r--r--. 1 root root 7, 101 4月  22 14:17 /app/loop101
110 
111 选择指定设备挂载 没什么用
112 [root@localhost ~]# losetup /dev/loop20 text2
113 [root@localhost ~]# losetup -a
114 /dev/loop0: [0803]:3015065 (/root/text)
115 /dev/loop20: [0803]:3014775 (/root/text2)
116 
117 -o:多个选项使用逗号分隔
118   async:异步模式,默认情况  异步挂载
119   sync:同步模式,内存修改,同时写磁盘
120   atime:noatime  禁用atime更改(touch刷才会变)*****
121   relatime:文件访问的特性,这个选项满足两个条件才会更改比如一天没修改了,或者mtime比访问时间新也可以改变atime。(默认relatime)
122   ll /app/issue --time=atime  查看文件的修改时间
123   diratime/nodiratime:目录的访问时间
124   exec|noexec:修改特性文件不能直接执行,但可以用bash等工具使用
125   mount -o noexec 、dev/sdb1 /mnt/sdb1
126   nodev:取消设备的使用,如果是设备文件就失效
127   mount -o node /dev/sdb1 /mnt/sdb1
128   nosuid:禁止suid权限
129   mount -o nosuid /dev/sdb1 /mnt/sdb1
130   remount  重新加载  #(设置权限)
131   mount -o remount,ro /mnt/sdb1   #ro只读
      mount -o remount,rw /mnt/sdb3 #修改读写
132   user/nouser: 是否允许普通用户挂载,默认管理员才能挂载

创建swap

 1 [root@localhost ~]# mkswap /dev/sdc3
 2 mkswap: /dev/sdc3: warning: don't erase bootbits sectors
 3         (dos partition table detected). Use -f to force.
 4 Setting up swapspace version 1, size = 2104508 KiB
 5 no label, UUID=9e94c4e7-c696-44e1-8f80-c5c95efce269
 6 
 7 #这次做swap文件系统的时候,忘记更新分区信息,一定记着分区进行多次更改后记得更新。
 8 [root@localhost ~]# free
 9              total       used       free     shared    buffers     cached
10 Mem:       1004136     454052     550084       1408      25380     226692
11 -/+ buffers/cache:     201980     802156
12 Swap:      2047996          0    2047996
13 [root@localhost ~]# swapon /dev/sdc3
14 [root@localhost ~]# free
15              total       used       free     shared    buffers     cached
16 Mem:       1004136     455788     548348       1408      25384     226692
17 -/+ buffers/cache:     203712     800424
18 Swap:      4152504          0    4152504
19 
20 
21 更改配置文件用法
22 [root@localhost ~]# vim /etc/fstab
23 UUID="9e94c4e7-c696-44e1-8f80-c5c95efce269" swap swap defaults,pri=100 0 0
24 ~                               
25 ~
26 "/etc/fstab" 17L, 948C 已写入                                 
27 [root@localhost ~]# swapon -a   #读入文件信息进内存

 

上述的除了swap其他都是临时挂载,系统重启后就无效如果需要永久生效需要修改配置文件

让挂载信息永久存盘 /etc/fstab
第一行写挂载的设备名最好UUID 第二个字段空格隔开 跟挂载点目录 第三个字段文件系统 第四个字段写特性 #dafaults auto表示支持-a选项。有的特性不写就表示生效 第五个字段 表示备份0表示不备份1表示一天备份一次在跟备份工具 第六个字段设置第几个检查0表示不检查,最好写0
 
例: /boot /mnt/boot none bind 0 0 #目录
/root/partfile /mnt//file ext4 loop 0 0 #文件
mount -a去读/etc/fstab配置文件里的配置。如果本身有需要 remount 重新挂载下。
如果UUID等信息被修改 重启后用 remount 更改读写。
 
 1 [root@localhost ~]# vim /etc/fstab
 2 #
 3 UUID=8b325c7e-44d5-41f5-93d4-4d3480492673 /                       ext4    defaults        1 1
 4 UUID=1ca2e948-5f62-492d-9925-bd2bb63c5418 /boot                   ext4    defaults        1 2
 5 UUID=d8a4bba5-5851-4cc0-a67f-d7bb1f361485 swap                    swap    defaults        0 0
 6 tmpfs                   /dev/shm                tmpfs   defaults        0 0
 7 devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
 8 sysfs                   /sys                    sysfs   defaults        0 0
 9 proc                    /proc                   proc    defaults        0 0
10 /root/text              /mnt/text               ext4    defaults        0 0
11 ~
12 ~
View Code

文件系统相关工具

fsck /dev/设备名 修复文件系统  #作用不大,修复的不是数据而是超级块。打电话是你最好的选择

查看分区挂载相关

cat /prco/mounts #查看分区挂载信息
cat /etc/mtab   #这个文件系统实时维护更新
df
mount
 
 
findmnt /mnt/sdb1 查看设备是否是挂载状态
 
lsof 查看程序谁在用
lsof -v /mnt/sdb1
fuser 专门查看挂载点
dumpe2fs /设备名 查看超级块
dd if=/dev/zero of=/swapfile bs=1M count=2048 #生成一个大文件给配置文件挂载用的
posted @ 2017-04-22 11:36  Mr.暖阳  阅读(619)  评论(0编辑  收藏  举报