Ubuntu Server 18.04使用GPT分区并挂载硬盘

增加硬盘

趁20191111,买了个3T硬盘,因大于2T要使用GPT分区,记录一下操作作为备忘
注意:硬盘分区后一定要看下是否4k对齐......

硬盘分区

sudo fdisk -l //查看新加入的硬盘名称,看到的是/dev/sda
sudo parted /dev/sda //进入parted
mklabel gpt //将磁盘设置为gpt格式,
mkpart logical 0 -1 //将磁盘所有的容量设置为gpt格式
print //查看分区结果
quit //退出
//以下供参考,来源:雨林的Blog,http://tok9.com/archives/398/
root@XXX:~# sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you
want to continue?
Yes/No? no
(parted) mkpart logical 0 -1
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? ingnore
parted: invalid token: ingnore
Ignore/Cancel? ignore
(parted) print
Model: Phi H1 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  1000GB  1000GB               logical
(parted) quit
错误解决

mkpart logical 0 -1如果提示Warning: The resulting partition is not properly aligned for best performance.
从网上查找资料可以知道是由于分区起始扇区位置不合理导致的警告。
解决方法如下:
分别查看以下几个文件的值

cat /sys/block/sdb/queue/optimal_io_size
0
cat /sys/block/sdb/queue/minimum_io_size
4096
cat /sys/block/sdb/alignment_offset
0
cat /sys/block/sdb/queue/physical_block_size
4096

如果optimal_io_size不为0,则使用对应值带入下列式子
(optimal_io_size + alignment_offset)/physical_block_size
计算出即为主分区起始位置的合理值
假设返回如下:

cat /sys/block/sdb/queue/optimal_io_size
3670016
cat /sys/block/sdb/queue/minimum_io_size
524288
cat /sys/block/sdb/alignment_offset
0
cat /sys/block/sdb/queue/physical_block_size
512

optimal_io_size加上alignment_offset的和然后除以physical_block_size在这个环境下是
(3670016 + 0) / 512 = 7168
那么分区的时候命令就应该是

mkpart primary 7168s 100%

如果optimal_io_size为 0,则用如下方法即可对齐

mkpart primary ext4 0% 100%

检查是否对齐的命令:align-check optimal 1返回1 aligned即对齐,返回1 not aligned即未对齐
或者用sudo fdisk -l查看Start能否被8整除

此命令后print查看是否分区成功,如成功就quit退出,后面执行格式化硬盘操作即可

格式化硬盘

上面操作分了/dev/sda1分区,运行

sudo mkfs.ext4 -F /dev/sda1 //把sda1格式化为ext4的格式

耐心等待,直到出现Writing superblocks and filesystem accounting information: done

设置挂载点

sudo mkdir /home/share //我这里挂在到home目录的share文件夹
sudo nano /etc/fstab
//在末尾添加
/dev/sda1 /home/share ext4 defaults 0 0
//ctrl+o保存后ctrl+x退出
sudo mount -a //重新挂载
//取消挂载sudo umount /home/share,如果不行,重启即可 
sudo df -hl //查看是否挂载成功及硬盘使用率

挂载好后如不能新建文件夹,输入命令sudo chmod 777 /home/share

设置系统盘APM

sudo hdparm -B /dev/sdb //APM_level = not supported(表示不支持);

APM_level的全称为Advanced Power Management level,即(硬盘)高级电源管理级别
该值的取值范围为1~255,值越大,硬盘性能越高,其中255表示关闭硬盘/dev/sdb的电源管理,254表示在开启电源管理下的最高性能,1表示最低的硬盘性能但最省电
这个值在1~127区间时允许spin-down,在128~254这个区间则禁止spin-down
spin-down是指在闲置时挂起硬盘,停止转动,但是频繁的spin-down和spin-up会使硬盘寿命变短

所以,即使你追求节能,减少发热量,也建议你将该值设为128,执行以下命令即可:

sudo hdparm -B 128 /dev/sdb 

也可通过以下命令检查是否支持高级电源管理

    sudo hdparm -I /dev/sdb | grep -i power
    //输出以下内容及前面带*表示支持APM
        Advanced power management level: 254
           *    Power Management feature set
           *    Advanced Power Management feature set
                Power-Up In Standby feature set
           *    SET_FEATURES required to spinup after power up
           *    Host-initiated interface power management
                Device-initiated interface power management
    //仅输出以下内容表示不支持APM
       *    Power Management feature set

注意:设置APM后执行以下命令查看Load_Cycle_Count值

sudo smartctl -a /dev/sdb | grep Load_Cycle_Count 

如果Load_Cycle_Count值每分钟都在增加,这时你应该把APM值设回原来的254,方法同上可以在/etc/hdparm.conf里修改
执行命令 sudo hdparm -B 254 /dev/sdb 即时生效, 配置在重启后生效
因为磁头频繁的Load/Unload同样会影响硬盘寿命,一般硬盘设计能承受的加载循环计数Load_Cycle_Count最多为600000次

硬盘休眠

20191118更新:一直纳闷为什么用sudo hdparm -S 1 /dev/sda的时候硬盘都能正常休眠(长时间不断查看),但是-S 120就无效,还折腾了开机启动脚本方案....晚上,灵光一闪,是不是monit监控硬盘温度和smart的时候导致的,因为使用-S 1的时候,并未到monit监控周期时间(120秒),所以能生效(使用-y待机后,温度监控并不会唤醒,使用sudo hddtemp /dev/sda,返回/dev/sda: Hitachi HUS724030ALE641: drive is sleeping);所以,去掉Monit的数据盘温度监控,数据盘的smart监控不用修改(因为是每周执行一次);修改Monit后,按方案二,重启后完美解决硬盘待机问题

方案一(备选):

ubuntu 18.04修改增加rc.local开机脚本

sudo nano /lib/systemd/system/rc.local.service
//末尾增加
[Install]  
WantedBy=multi-user.target  
Alias=rc-local.service
//ubuntu 18.04默认是没有/etc/rc.local这个文件的,需要自己创建
sudo nano /etc/rc.local
//输入以下内容
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# echo "this is a test" > /usr/local/text.log //可以使用这个办法,重启看是否正确执行
sudo hdparm -S 360 /dev/sda
exit 0
//设置权限及创建软链接;240=20分钟,360=30分钟
sudo chmod 755 /etc/rc.local
sudo ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/

方案二(推荐):

sudo hdparm -y /dev/sda //检测硬盘是否支持hdparm
sudo hdparm -I /dev/sda | grep 'Write cache' //返回带*号表示支持
sudo nano /etc/hdparm.conf
//在末尾加入,360=30分钟休眠
/dev/sda {
write_cache = on
spindown_time = 360
}
//ctrl+o保存后ctrl+x退出
sudo service hdparm restart //重启服务
/etc/init.d/hdparm restart //重启服务
//纳闷,提示Unit hdparm.service not found;上面两个都不行,哎,reboot吧~~

其他相关命令

sudo hdparm -y /dev/sda //使硬盘进入省电模式,通过输出内容判断是否支持hdparm,这里是支持的
sudo hdparm -I /dev/sda | grep 'Write cache' //判断硬盘是否支持写缓存功能,前面带*表示支持
sudo hdparm -C /dev/sda //查看硬盘状态,standby=待机,sleep=睡眠,active=正常运行

数据拷贝

把J1900nas上的数据拷贝回来....哎,真是瞎折腾
J1900nas上主要有backup,cwz,Multimedia三个文件夹,在J1900nas上启用rsync后直接使用下面命令复制(本地的相应文件夹要先建好)

//原先创建的cwz模块已在,同步后自己在移动下文件夹即可
sudo rsync -avz --password-file=/etc/rsyncd.pass cwz@192.168.1.6::cwz/  /home/share/backup
//添加Rsync模块,任务模块名称media,文件夹路径/mnt/data1/data1/Multimedia/,用户名cwz,密码同上
sudo rsync -avz --password-file=/etc/rsyncd.pass cwz@192.168.1.6::media/  /home/share/media
//添加Rsync模块,任务模块名称cwz1,文件夹路径/mnt/data1/data1/cwz/,用户名cwz,密码同上
sudo rsync -avz --password-file=/etc/rsyncd.pass cwz@192.168.1.6::cwz1/  /home/share/cwz

硬盘smart信息监控

一个很奇怪的事情,新硬盘插入后,原来的系统盘从sda变成了sdb,纳闷了....所以,这里sdb对应的是系统盘

monit设置

进入/usr/local/etc/monit/scripts,复制hddsmart.shhddsmart_1.sh,复制hddtemp.shhddtemp_1.sh
修改hddsmart_1.sh内容如下:

#! /bin/sh
SDA=`/usr/sbin/smartctl -H /dev/sdb | grep 'test result'|cut -d':' -f 2`
OUTPUT=''
if [ "$SDA" = " PASSED" ];then
        OUTPUT="true"
else
    OUTPUT="false"
fi
echo $OUTPUT >> /usr/local/etc/monit/scripts/smartlog_1.txt

修改hddtemp_1.sh内容如下:

#! /bin/sh
SDA=`/usr/sbin/hddtemp /dev/sdb | grep 'sdb'|cut -d':' -f 3`
SDB=`echo $SDA|grep -o '[0-9]\+'`
echo $SDB
exit $SDB

测试上面脚本,运行:

cd /usr/local/etc/monit/scripts/
sudo ./hddtemp_1.sh
sudo ./hddsmart_1.sh

monit末尾增加

    check program HDDtemp_sys with path "/usr/local/etc/monit/scripts/hddtemp_1.sh"
        if status > 45 then alert
    check file HDDsmart_sys with path /usr/local/etc/monit/scripts/smartlog_1.txt
        if match "(false)" then alert

注意,注释掉数据盘的硬盘温度监控,会导致硬盘待机失败

    #硬盘温度监控>45报警,去掉温度监控,会导致硬盘待机失效(hdparm)
    #check program HDDtemp with path "/usr/local/etc/monit/scripts/hddtemp.sh"
    #    if status > 45 then alert

cron修改

sudo nano /var/spool/cron/crontabs/root
//末尾增加
0 0 * * 0 /usr/local/etc/monit/scripts/hddsmart_1.sh //每周执行一次

参下面重启monit和cron

monit及cron其他修改

去掉n2920加密狗服务器监控,去掉leanote监控,去掉与J1900主机rsync同步(直接在面加#注释掉即可)

sudo monit -t //monit错误检查
sudo /etc/init.d/monit restart //重启monit服务
//cron修改
sudo nano /var/spool/cron/crontabs/root
#注释掉下面代码
#0 18 * * * /usr/local/etc/monit/scripts/sync.sh
#ctrl+o保存后ctrl+x退出
sudo service cron restart

进入/usr/local/etc/monit/scripts文件夹,把sync.sh和synclog.txt文件放在文件夹里

samba共享

主要给家里用,手机端使用FolderSync同步相册视频到samba共享目录,手机端使用CX文件管理器查看共享

sudo smbpasswd -a 系统用户名 //把系统用户注册到samba
sudo chown -R 系统用户名:系统用户组 /home/share/cwz //linux对权限是很敏感的~~
sudo nano /etc/​samba/​smb.conf
//末尾添加
[cwz]
path = /home/share/cwz
read only = no
public = no
create mask = 0777
directory mask = 0777
vaild users = 系统用户名
[wf]
path = /home/share/wf
read only = no
public = yes
create mask = 0777
directory mask = 0777
[wsj]
path = /home/share/wsj
read only = no
public = yes
create mask = 0777
directory mask = 0777
[media]
path = /home/share/media
read only = no
public = yes
create mask = 0777
directory mask = 0777

重启:sudo service smbd restart

数据同步

FolderSync设置

进入软件,选择添加SMB/CIFS账户类型

唯一名称:samba //按个人喜好数据
服务器地址:smb://192.168.1.4

然后点击测试,显示登录成功即可

进入同步文件夹选项,点击加号新增同步:

唯一名称:DCIM //同步手机里的DCIM目录
账户:samba //上面新建的
同步类型:到远程文件夹
远程文件夹:/wsj/DCIM/ //远程自行新建好
本地文件夹:/storage/emulated/0/DCIM/
计划任务:开启使用计划同步,同步间隔:每1月
同步选项:取消同步隐藏文件,开启同步子文件夹,同步完成后删除
连接:开启使用无线网络

手机使用CX文件管理器查看:点击下载
1.2.5版本:网络->点加号->远程存储->SMB

自己用,外网使用FolderSync同步相册视频到webdav,webdav在移动过期资料到/home/share/cwz里归档,文件夹名称空格要带转义符\

sudo mv /var/www/webdav/cwz/Recorder/* /home/share/cwz/Recorder/
sudo mv /var/www/webdav/cwz/DCIM/Project\ site/* /home/share/cwz/Project\ archive/Project\ site/

更换了硬盘仓后

总觉得原来sda变成了sdb比较别扭,就更换了硬盘仓,更换后要修改的地方如下:

sudo nano /etc/fstab //修改硬盘挂载,修改后`sudo mount -a `
sudo nano /etc/rc.local //修改开机自启处硬盘相关命令
sudo nano /etc/hdparm.conf //修改hdparm处的硬盘相关命令
-----
sudo nano /etc/monit/monitrc //修改monit
//monit脚本在/usr/local/etc/monit/scripts/目录
sudo monit -t //monit错误检查
sudo /etc/init.d/monit restart //重启monit服务
-----
sudo nano /var/spool/cron/crontabs/root //cron相关修改
sudo service cron restart

添加新评论

评论列表