Monthly Archives: 十二月 2017

十二月 31st, 2017
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
十二月 31st, 2017

使用权限 : root
使用方式 : chown [-cfhvR] [–help] [–version] user[:group] file…
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
例子:
改变拥有者和群组
chown mail:mail test.txt
改变文件拥有者和群组
chown root: test.txt
改变文件群组
chown :mail test.txt

TAGS:
十二月 31st, 2017
“/”应用程序中的服务器错误。

配置错误

说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 

分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。

源错误: 


行 8:  <configuration>
行 9:      <system.web>
行 10:       <compilation debug="true" targetFramework="4.5" />
行 11:       <httpRuntime targetFramework="4.5" />
行 12:     </system.web>

源文件: F:\Project\ExportExcel\ExportExcel\web.config    行: 10 

版本信息: Microsoft .NET Framework 版本:2.0.50727.5485; ASP.NET 版本:2.0.50727.5483
复制代码
可以看到错误信息里的 targetFramework="4.5", 而 “版本信息: Microsoft .NET Framework 版本:2.0.50727.5485; ASP.NET 版本:2.0.50727.5483”,
那么问题就是FrameWork版本不一致导致的。

解决办法:
打开IIS管理器(win+r,打开运行窗口 输入 inetmgr)进行如下操作,这里要选择 v4.0
然后确定。
图片1
十二月 31st, 2017

一、 df命令

分区查看工具:

1. df

[fxq@vm_46_188_centos ~]$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       20510332 4844740  14617076  25% /
devtmpfs          499348       0    499348   0% /dev
tmpfs             508452       0    508452   0% /dev/shm
tmpfs             508452   12660    495792   3% /run
tmpfs             508452       0    508452   0% /sys/fs/cgroup
tmpfs             101692       0    101692   0% /run/user/0
[fxq@vm_46_188_centos ~]$

2. df -h

[fxq@vm_46_188_centos ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  4.7G   14G  25% /
devtmpfs        488M     0  488M   0% /dev
tmpfs           497M     0  497M   0% /dev/shm
tmpfs           497M   13M  485M   3% /run
tmpfs           497M     0  497M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/0
[fxq@vm_46_188_centos ~]$

3.df -i

[fxq@vm_46_188_centos ~]$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/vda1      1310720 121406 1189314   10% /
devtmpfs        124837    298  124539    1% /dev
tmpfs           127113      1  127112    1% /dev/shm
tmpfs           127113    381  126732    1% /run
tmpfs           127113     13  127100    1% /sys/fs/cgroup
tmpfs           127113      1  127112    1% /run/user/0
[fxq@vm_46_188_centos ~]$

4. df -m

[fxq@vm_46_188_centos ~]$ df -m
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/vda1          20030  4732     14275  25% /
devtmpfs             488     0       488   0% /dev
tmpfs                497     0       497   0% /dev/shm
tmpfs                497    13       485   3% /run
tmpfs                497     0       497   0% /sys/fs/cgroup
tmpfs                100     0       100   0% /run/user/0

5. 单位换算:

10024Byte=1KB

1024KB =1MB

1024MB=1GB

1024GB=1TB

/dev/shm 内存:

6.free 查看swap

[root@vm_46_188_centos ~]# free 
              total        used        free      shared  buff/cache   available
Mem:        1016904      325292       90592       12680      601020      504572
Swap:             0           0           0
[root@vm_46_188_centos ~]#

二、 du命令

du -sh /etc/

du -sh /etc/passwd

ls -lh /etc/passwd

当文件小于4KB时,也会显示4KB

du -sb 可查看原大小 =ls -lh

du /root/ 查看文件夹内文件大小

[root@vm_46_188_centos ~]# du -sh /root/28M	/root/
[root@vm_46_188_centos ~]# du -s /root/27768	/root/
[root@vm_46_188_centos ~]# du /root/
4	/root/fxq
4	/root/ffff
4	/root/234
8	/root/.ssh/fengxiaoqing/.git/logs/refs/remotes/origin
12	/root/.ssh/fengxiaoqing/.git/logs/refs/remotes
8	/root/.ssh/fengxiaoqing/.git/logs/refs/heads
24	/root/.ssh/fengxiaoqing/.git/logs/refs
32	/root/.ssh/fengxiaoqing/.git/logs44	/root/.ssh/fengxiaoqing/.git/hooks
8	/root/.ssh/fengxiaoqing/.git/objects/5e
8	/root/.ssh/fengxiaoqing/.git/objects/46
8	/root/.ssh/fengxiaoqing/.git/objects/87
8	/root/.ssh/fengxiaoqing/.git/objects/f2
4	/root/.ssh/fengxiaoqing/.git/objects/pack
8	/root/.ssh/fengxiaoqing/.git/objects/02
4	/root/.ssh/fengxiaoqing/.git/objects/info
8	/root/.ssh/fengxiaoqing/.git/objects/9d6
0	/root/.ssh/fengxiaoqing/.git/objects4	/root/.ssh/fengxiaoqing/.git/branches
8	/root/.ssh/fengxiaoqing/.git/info
8	/root/.ssh/fengxiaoqing/.git/refs/remotes/origin
12	/root/.ssh/fengxiaoqing/.git/refs/remotes
8	/root/.ssh/fengxiaoqing/.git/refs/heads
4	/root/.ssh/fengxiaoqing/.git/refs/tags2
8	/root/.ssh/fengxiaoqing/.git/refs20
0	/root/.ssh/fengxiaoqing/.git20
8	/root/.ssh/fengxiaoqing22

三、 磁盘分区

fdisk -l 查看本机硬盘.

[root@vm_46_188_centos ~]# fdisk -l
Disk /dev/vda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dosDisk identifier: 0x0005fc9a

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    41943039    20970496   83  Linux
[root@vm_46_188_centos ~]#

w 查看负载

[root@vm_46_188_centos ~]# w
 22:58:39 up 21 days,  5:50,  1 user,  load average: 3.59, 4.43, 4.76USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    60.10.158.223    21:25    7.00s  0.16s  0.00s w
[root@vm_46_188_centos ~]#

mbr 最多有4个主分区, 最大2T

[root@fxq-1 ~]# fdisk -l
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0004f0b3

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris
/dev/sda3         4605952    62914559    29154304   83  Linux

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@fxq-1 ~]#
[root@fxq-1 ~]# fdisk -l

磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0004f0b3

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris
/dev/sda3         4605952    62914559    29154304   83  Linux

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@fxq-1 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。



Device does not contain a recognized partition table
使用磁盘标识符 0xc2b902ea 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
分区 1 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc2b902ea

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux

命令(输入 m 获取帮助):
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p):
分区号 (2-4,默认 2):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):
分区 2 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
If you want to create more than four partitions, you must replace a
primary partition with an extended partition first.

命令(输入 m 获取帮助):d
分区号 (1-4,默认 4):
分区 4 已删除

命令(输入 m 获取帮助)

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc2b902ea

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352    14682111     5242880   83  Linux
/dev/sdb3        14682112    31459327     8388608   83  Linux

命令(输入 m 获取帮助):
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): 
已选择分区 4起始 扇区 (31459328-41943039,默认为 31459328):
将使用默认值 31459328Last 扇区, +扇区 or +size{K,M,G} (31459328-41943039,默认为 41943039):
将使用默认值 41943039分区 4 已设置为 Extended 类型,大小设为 5 GiB

命令(输入 m 获取帮助):

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc2b902ea

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352    14682111     5242880   83  Linux
/dev/sdb3        14682112    31459327     8388608   83  Linux
/dev/sdb4        31459328    41943039     5241856    5  Extended

命令(输入 m 获取帮助):
All primary partitions are in use
添加逻辑分区 5起始 扇区 (31461376-41943039,默认为 31461376):   
将使用默认值 31461376Last 扇区, +扇区 or +size{K,M,G} (31461376-41943039,默认为 41943039):
分区 5 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助):

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc2b902ea

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352    14682111     5242880   83  Linux
/dev/sdb3        14682112    31459327     8388608   83  Linux
/dev/sdb4        31459328    41943039     5241856    5  Extended
/dev/sdb5        31461376    39849983     4194304   83  Linux

命令(输入 m 获取帮助):
All primary partitions are in use
添加逻辑分区 6起始 扇区 (39852032-41943039,默认为 39852032):
将使用默认值 39852032Last 扇区, +扇区 or +size{K,M,G} (39852032-41943039,默认为 41943039):
值超出范围。
Last 扇区, +扇区 or +size{K,M,G} (39852032-41943039,默认为 41943039):+100M       
分区 6 已设置为 Linux 类型,大小设为 100 MiB

命令(输入 m 获取帮助):

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc2b902ea

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352    14682111     5242880   83  Linux
/dev/sdb3        14682112    31459327     8388608   83  Linux
/dev/sdb4        31459328    41943039     5241856    5  Extended
/dev/sdb5        31461376    39849983     4194304   83  Linux
/dev/sdb6        39852032    40056831      102400   83  Linux
设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352    14682111     5242880   83  Linux
/dev/sdb3        14682112    31459327     8388608   83  Linux
/dev/sdb4        31459328    41943039     5241856    5  Extended
/dev/sdb5        31461376    39849983     4194304   83  Linux
/dev/sdb6        39852032    40056831      102400   83  Linux

命令(输入 m 获取帮助):
分区号 (1-6,默认 6):
分区 1 已删除

命令(输入 m 获取帮助):

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc2b902ea

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb2         4196352    14682111     5242880   83  Linux
/dev/sdb3        14682112    31459327     8388608   83  Linux
/dev/sdb4        31459328    41943039     5241856    5  Extended
/dev/sdb5        31461376    39849983     4194304   83  Linux
/dev/sdb6        39852032    40056831      102400   83  Linux

命令(输入 m 获取帮助):
分区号 (2-6,默认 6):
分区 5 已删除

命令(输入 m 获取帮助):

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc2b902ea

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb2         4196352    14682111     5242880   83  Linux
/dev/sdb3        14682112    31459327     8388608   83  Linux
/dev/sdb4        31459328    41943039     5241856    5  Extended
/dev/sdb5        39852032    40056831      102400   83  Linux

命令(输入 m 获取帮助):
TAGS: , , ,
十二月 31st, 2017

sort 命令可针对文本文件的内容,以行为单位进行排序。其基本语法格式为:

sort [-bcfMnrtk][源文件][-o 输出文件]

参数:

  • -b 忽略每行前面开始出的空格字符。
  • -c 检查文件是否已经按照顺序排序。
  • -f 排序时,忽略大小写字母。
  • -M 将前面3个字母依照月份的缩写进行排序。
  • -n 依照数值的大小排序。
  • -o<输出文件> 将排序后的结果存入指定的文件。
  • -r 以相反的顺序来排序。
  • -t<分隔字符> 指定排序时所用的栏位分隔字符。
  • -k 选择以哪个区间进行排序。

uniq 命令用于去除文件中重复的行,这个命令可以配合 sort 命令使用,将排序过程中出现的重复行去掉。其基本语法格式为:

uniq [选项] 文件

参数:

  • – c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。
  • – d 只显示重复行。
  • – u 只显示文件中不重复的各行。
  • – n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。
  • +n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。
  • – f n 与- n相同,这里n是字段数。
  • – s n 与+n相同,这里n是字符数。

例:

$ sort filename uniq -c

以上操作对文件进行排序,并去除重复的行,同时在行首显示重复出现的次数。

TAGS: ,
十二月 31st, 2017

一、通过yum安装vsftpd

yum install -y vsftpd

二、修改vsftpd的配置文件

vi /etc/vsftpd/vsftpd.conf

修改配置文件如下:
1.不允许匿名访问

anonymous_enable=NO

2.允许使用本地帐户进行FTP用户登录验证

local_enable=YES

3.使用户不能离开主目录

当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

配置文件最后添加

allow_writeable_chroot=YES

要不然会报错

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

如果/etc/vsftpd/chroot_list不存在,则需要创建该文件

vi /etc/vsftpd/chroot_list

:wq直接保存并退出就行。

4.设定支持ASCII模式的上传和下载功能。

ascii_upload_enable=YES
ascii_download_enable=YES

最后 :wq保存修改,重启vsftpd

systemctl restart vsftpd.service

三、新建FTP用户

useradd -d /var/ftp/public_root -g ftp -s /sbin/nologin ftpuser

修改该FTP用户密码

passwd ftpuser
TAGS:
十二月 31st, 2017
1、到Windows XP或者Vista下复制字体到CentOS 或者到这下载:
[html] view plain copy

  1. http://linux.linuxidc.com/pub/2009/11/12/%E9%9D%A2%E5%90%91Ubuntu%E7%9A%84%E5%BE%AE%E8%BD%AF%E9%9B%85%E9%BB%91%E5%AD%97%E4%BD%93V6.0%20msyh.ttf%E6%9C%AC%E5%9C%B0%E4%B8%8B%E8%BD%BD/msyh.ttf.zip
下载好之后,解压并上传到指定目录下。

字体路径 C:/WINDOWS/Fonts

雅黑:msyh

黑体:SimHei

宋体:SimSun

华文细黑:STXihei

华文楷体:STKaiti

等等 你要的字体

2、将要的字体复制到/usr/share/fonts/chinese/TrueType目录下,没有该目录的话,则手动创建。

3、修改字体权限,使root以外的用户可以使用这些字体。 给字体使用666的权限,应该是没问题的。我目前使用的就是,暂时没有发现什么问题。

4、建立字体缓存,命令:cd /usr/share/fonts/chinses/TrueType

# mkfontscale

# mkfontdir

# fc-cache  -fv

查看安装的字体

#fc-list :lang=zh

TAGS:
十二月 31st, 2017

摘要

一般为了方便运维管理都会配置ssh免密登录,ssh免密登录实现也很方便。今天遇到一个完成了配置了却不能生效的问题。

思考

遇到这个问题一般有以下几点:

  • authorized_keys文件是否启用
  • .ssh 和 authorized_keys 文件权限问题

排查

检查AuthorizedKeysFile配置是否启用authorized_keys

root@pts/1 $ cat /etc/ssh/sshd_config |egrep AuthorizedKeysFile
AuthorizedKeysFile    .ssh/authorized_keys

没有问题,继续检查.ssh (700) 和 authorized_keys(644) 权限

root@pts/1 $ getfacl /root/.ssh/
getfacl: Removing leading '/' from absolute path names
# file: root/.ssh/
# owner: root
# group: root
user::rwx
group::---
other::---

root@pts/1 $ getfacl /root/.ssh/authorized_keys
getfacl: Removing leading '/' from absolute path names
# file: root/.ssh/authorized_keys
# owner: root
# group: root
user::rw-
group::---
other::---

authorized_keys 权限不对,修改一下chmod 644 authorized_keys

再次尝试结果发现还是不行。但是该设置的权限都设置了。既然.ssh目录和其下文件的权限都OK了,那就检查下其父目录的权限,也就是这里的/root的权限

root@pts/1 $ getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: ftpuser
# group: ftpuser
user::r-x
group::r-x
other::---

发现这里/root 的属主都发生了变化。为了不影响别的业务情况,保留这里的ftpuser权限,利用setfacl添加特殊ACL权限

root@pts/1 $ chown -R root:root  /root/
root@pts/1 $ setfacl -m u:ftpuser:rwx /root/

root@pts/1 $ getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: root
# group: root
user::rwx
user:ftpuser:rwx        #effective:r-x
group::r-x
mask::r-x
other::r-x

附加

  • 权限问题
    • /root 775
    • /root/.ssh 700
    • /root/.ssh/authorized_keys 644
  • 开启文件AuthorizedKeysFile .ssh/authorized_keys
十二月 31st, 2017

一、内容介绍

1、问题描述

1)、问题一
CentOS 6.x 在格式化大于16TB的ext4分区时,会提示如下错误:

mke2fs 1.41.12 (17-May-2010)
mkfs.ext4: Size of device /dev/sda1 too big to be expressed 
in 32 bits using a blocksize of 4096.

2)、问题二
CentOS 6.x 无法使用fdisk分区大于2TB的磁盘。

2、原因分析

1)、问题一:
原因在于CentOS 自带的 e2fsprogs 版本为1.41.12较低,无法创建16TB以上的文件系统。
2)、问题二:
原因在于MBR分区表只支持2T磁盘。

3、解决方案

1)、问题一:
解决方案为手工下载最新的e2fsprogs源码包,进行编译安装,然后使用mkfs.ext4 命令使用64位的方式进行磁盘格式化。
2)、问题二:
使用parted命令将MBR分区表,改为GPT分区表。

二、解决方案的实现

下面通过在VirtualBox上进行实验来验证上面方案的可行性:

1、在VB虚拟机上添加硬盘

这里假设你的VB虚拟机的CentOS已经通过yum update将全部软件升级到最新版本

在VB虚拟机中添加10块2TB的硬盘(此时虚拟机须处于关机状态),如下图:
这里写图片描述

每个虚拟硬盘都是“动态分配存储”,总计容量为20TB,这样就做成raid5最量就会超过16TB了。

2、生成软RAID磁盘阵列

1)、硬盘分区

启动虚拟机登录系统后输入lsblk命令查看虚拟机可识别的硬盘

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom
sda      8:0    0   50G  0 disk
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   47G  0 part /
sdb      8:16   0    2T  0 disk
sdc      8:32   0    2T  0 disk
sdd      8:48   0    2T  0 disk
sde      8:64   0    2T  0 disk
sdf      8:80   0    2T  0 disk
sdg      8:96   0    2T  0 disk
sdh      8:112  0    2T  0 disk
sdi      8:128  0    2T  0 disk
sdj      8:144  0    2T  0 disk
sdk      8:160  0    2T  0 disk

可以看到10块硬盘已经全部识别,但是还没有进行分区, 这里我们使用fdisk逐一进行分区,以便制作软RAID.
这里需要注意的是:如果是在真实的服务器上,是不会看到这么多硬盘的。因为服务器通过RAID卡,将多块硬盘合并为一块硬盘。在本文后面会提到如何使用parted 分区超过2TB的硬盘
sdb这块硬盘为例,进行分区:

[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-267349, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-267349, default 267349):
Using default value 267349

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): p
  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      267349  2147480811   fd  Linux raid autodetect

Command (m for help): w

上面的步骤基本上就是我们平时进行分区时需要进行操作的步骤。只有t命令平时不太用到.t命令的意思就是“修改分区类型“,将标准的linux分区修改为 fd“Linux raid autodetect”以便供软RAID使用。

下面逐一再将其他磁盘进行分区,全部分区完成后,使用lsblk查看分区情况:

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom
sda      8:0    0   50G  0 disk
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   47G  0 part /
sdb      8:16   0    2T  0 disk
└─sdb1   8:17   0    2T  0 part
sdc      8:32   0    2T  0 disk
└─sdc1   8:33   0    2T  0 part
sdd      8:48   0    2T  0 disk
└─sdd1   8:49   0    2T  0 part
sde      8:64   0    2T  0 disk
└─sde1   8:65   0    2T  0 part
sdf      8:80   0    2T  0 disk
└─sdf1   8:81   0    2T  0 part
sdg      8:96   0    2T  0 disk
└─sdg1   8:97   0    2T  0 part
sdh      8:112  0    2T  0 disk
└─sdh1   8:113  0    2T  0 part
sdi      8:128  0    2T  0 disk
└─sdi1   8:129  0    2T  0 part
sdj      8:144  0    2T  0 disk
└─sdj1   8:145  0    2T  0 part
sdk      8:160  0    2T  0 disk
└─sdk1   8:161  0    2T  0 part
2)、建立RAID5

使用mdadm建立RAID5磁盘阵列:

[root@localhost ~]# mdadm -C /dev/md5 \
-a yes -l 5 -n 10 -x 0 \
/dev/sd[b,c,d,e,f,g,h,i,j,k]1

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

可以使用如下命令查看RAID5状态:

mdadm -D /dev/md5

3、格式化磁盘阵列

如果现在使用mkfs.ext4格式化/dev/md5将会出现如下错误:

[root@localhost ~]# mkfs.ext4 /dev/md5
mke2fs 1.41.12 (17-May-2010)
mkfs.ext4: Size of device /dev/md5 too big to be 
expressed in 32 bits using a blocksize of 4096.

报错原因在文章开头已经介绍了,这里我们先下载最新的e2fsprogs源码包,下载地址如下:
ftp://ftp.ntu.edu.tw/linux/kernel/people/tytso/e2fsprogs/

当前版本为1.43.3,下载后,进行编码安装:

tar -zxvf e2fsprogs-1.43.3.tar.gz

cd e2fsprogs-1.43.3

mkdir build 

cd build/ 

../configure 

make 

make install

编译完成后使用如下命令格式化:

mke2fs -O 64bit,\
has_journal,extents,\
huge_file,flex_bg,uninit_bg,\
dir_nlink,\
extra_isize \
-i 4194304 \
/dev/md5

或者:

 mkfs.ext4 -O 64bit /dev/md5

挂载磁盘到/mnt

mount /dev/md5 /mnt

查看磁盘挂载情况:

[root@localhost build]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        47G  1.1G   43G   3% /
tmpfs           939M     0  939M   0% /dev/shm
/dev/sda1       976M   56M  870M   6% /boot
/dev/md5         18T   24K   17T   1% /mnt

OK! 问题1顺利解决。证明这个方案还是可行的!

4、使用parted 分区2TB以上磁盘

上面第1和第2步骤,是我们为了进行实验是否能格式化16TB以上分区而搭建的实验环境。在生产环境下,一般不会用到软RAID, 服务器是通过RAID卡将多块磁盘形成一个磁盘阵列。在启动系统后,有会一个没有分区的大磁盘。这种情况下就不能使用fdisk命令进行分区了。在这里,我们使用parted来进行分区。

这里我用一个2TB的磁盘来估演示,如果使用parted将整个磁盘阵列分为一个分区的情况(这也是生产环境中经常遇到的情况):
先使用lsblk查看系统中可使用的磁盘:

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom
sda      8:0    0   50G  0 disk
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   47G  0 part /
sdb      8:16   0    2T  0 disk

这时系统里有一个sdb的磁盘,容量为2TB。

[root@localhost ~]# parted /dev/sdb
(parted) mklabel gpt      # 将MBR磁盘格式化为GPT
(parted) mkpart primary 0 -1  #将整块磁盘划分为一个分区
警告: The resulting partition is not properly 
aligned for best performance.
忽略/Ignore/放弃/Cancel? I     #忽略警告
(parted) p                    #打印当前分区
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     标志
 1      17.4kB  2199GB  2199GB               primary

(parted) quit   #退出
信息: You may need to update /etc/fstab.

再使用lsblk查看磁盘分区情况:

    1 1024M  0 rom
sda      8:0    0   50G  0 disk
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   47G  0 part /
sdb      8:16   0    2T  0 disk
└─sdb1   8:17   0    2T  0 part

格式化并挂载磁盘:

mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /mnt

查看磁盘挂载情况:

[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        47G  851M   43G   2% /
tmpfs           939M     0  939M   0% /dev/shm
/dev/sda1       976M   56M  870M   6% /boot
/dev/sdb1       2.0T   71M  1.9T   1% /mnt

OK!问题2完美解决!

TAGS:
十二月 31st, 2017

Linux 系统日志非常重要。后台运行的程序(通常被称为守护进程或者服务进程)处理了你 Linux 系统中的大部分任务。当这些守护进程工作时,它们将任务的详细信息记录进日志文件中,作为它们做过什么的“历史”信息。这些守护进程的工作内容涵盖从使用原子钟同步时钟到管理网络连接。所有这些都被记录进日志文件,这样当有错误发生时,你可以通过查阅特定的日志文件来看出发生了什么。

Photo by Markus Spiske on Unsplash

Photo by Markus Spiske on Unsplash

在你的 Linux 计算机上有很多不同的日志。历史上,它们一般以纯文本的格式存储到 /var/log 目录中。现在依然有很多日志这样做,你可以很方便的使用 less 来查看它们。

在新装的 openSUSE Leap 42.3 以及大多数现代操作系统上,重要的日志由 systemd 初始化系统存储。 systemd这套系统负责启动守护进程,并在系统启动时让计算机做好被使用的准备。由 systemd 记录的日志以二进制格式存储,这使得它们消耗的空间更小,更容易被浏览,也更容易被导出成其他各种格式,不过坏处就是你必须使用特定的工具才能查看。好在这个工具已经预安装在你的系统上了:它的名字叫 journalctl,而且默认情况下,它会将每个守护进程的所有日志都记录到一个地方。

只需要运行 journalctl 命令就能查看你的 systemd 日志了。它会用 less 分页器显示各种日志。为了让你有个直观的感受, 下面是 journalctl 中摘录的一条日志记录:

  1. Jul0611:53:47 aaathats3as pulseaudio[2216]:[pulseaudio] alsa-util.c:Disabling timer-based scheduling because running inside a VM.

这条独立的日志记录以此包含了记录的日期和时间、计算机名、记录日志的进程名、记录日志的进程 PID,以及日志内容本身。

若系统中某个程序运行出问题了,则可以查看日志文件并搜索(使用 / 加上要搜索的关键字)程序名称。有可能导致该程序出问题的错误会记录到系统日志中。 有时,错误信息会足够详细到让你能够修复该问题。其他时候,你需要在 Web 上搜索解决方案。 Google 就很适合来搜索奇怪的 Linux 问题。不过搜索时请注意你只输入了日志的实际内容,行首的那些信息(日期、主机名、进程 ID) 对搜索来说是无意义的,会干扰搜索结果。

解决方法一般在搜索结果的前几个连接中就会有了。当然,你不能只是无脑得运行从互联网上找到的那些命令:请一定先搞清楚你要做的事情是什么,它的效果会是什么。据说,搜索系统日志中的特定条目要比直接描述该故障通用关键字要有用的多。因为程序出错有很多原因,而且同样的故障表现也可能由多种问题引发的。

比如,系统无法发声的原因有很多,可能是播放器没有插好,也可能是声音系统出故障了,还可能是缺少合适的驱动程序。如果你只是泛泛的描述故障表现,你会找到很多无关的解决方法,而你也会浪费大量的时间。而专门搜索日志文件中的实际内容,你也许会查询出其它人也有相同日志内容的结果。

你可以对比一下图 1 和图 2。

图 1 搜索系统的故障表现只会显示泛泛的,不精确的结果。这种搜索通常没什么用。

图 2 搜索特定的日志行会显示出精确的,有用的结果。这种搜索通常很有用。

也有一些系统不用 journalctl 来记录日志。在桌面系统中最常见的这类日志包括用于记录 openSUSE 包管理器的行为的 /var/log/zypper.log; 记录系统启动时消息的 /var/log/boot.log ,开机时这类消息往往滚动的特别快,根本看不过来;/var/log/ntp 用来记录 Network Time Protocol (NTP)守护进程同步时间时发生的错误。 另一个存放硬件故障信息的地方是 “Kernel Ring Buffer”(内核环状缓冲区),你可以输入 demesg -H 命令来查看(这条命令也会调用 less 分页器来查看)。“Kernel Ring Buffer” 存储在内存中,因此会在重启电脑后丢失。不过它包含了 Linux 内核中的重要事件,比如新增了硬件、加载了模块,以及奇怪的网络错误.

希望你已经准备好深入了解你的 Linux 系统了! 祝你玩的开心!

TAGS: