- 论坛徽章:
- 0
|
本帖最后由 bleakwind 于 2015-07-02 15:23 编辑
参考FreeBSD10.1的自动zfs分区日志整的,我是搞PHP的,对shell做脚本一窍不通,拼拼凑凑三四天啊,终于测试通过.
水平有限,有问题的地方,看到一定要告诉我,随时修复.
btw: 请无视变量命名方式...
FreeBSD每个版本都不断改进,越来越好用.bsdconfig虽说不好用也在大家口水中成长,FreeBSD10.1的分区菜单出现了ZFS自动分区.不过使用后发现如下问题:
1. gpart没有加 -a 4k 参数,导致没有强制4k对齐,所以还是从34扇区开始分freebsd-boot,没有从40扇区开始.但是zfs的pool倒是用gnop来实现了4k读取.
2. zfs分区不能自己定义分区,都得按照系统那一套来,如果你跟我一样有把/home单独分这种强迫症,那就要装好系统再修改.
3. 而如果用命令一条一条敲,特别在机房的时候,那么小的推车,对着老旧显示器,还有好烂的键盘,会出现敲错字符或者设备名字.
综合上述,所以倒腾出如下脚本.可以在装系统的时候配置好网络在git上下载使用:
https://github.com/bleakwind/freebsd/blob/master/zfs_disk.sh
使用方法脚本中有,下面详细说明下(此脚本仅针对FreeBSD10.1,仅对部分参数数值进行了判断和自动取值,部分失败情况没有判断,请自行查询同目录下zfs_disk.sh.log日志文件):
- 当安装光盘选择分区方式的时候 [Partitioning] 选择 [Shell] 方式然后配置网络:
# ifconfig "em0" inet "192.168.8.201" netmask "255.255.255.0"
# route add default "192.168.8.1"
# echo "nameserver 202.96.134.133" >> /etc/resolv.conf
# echo "nameserver 8.8.8.8" >> /etc/resolv.conf
- 切换到 /tmp/ 目录下载脚本文件(此处如果不能在安装环境下fetch,请提前下载放在你能fetch的地方):
# cd /tmp/
# fetch https://raw.githubusercontent.com/bleakwind/freebsd/master/zfs_disk.sh && chmod +x zfs_disk.sh
地址: https://github.com/bleakwind/freebsd/blob/master/zfs_disk.sh
- 然后开始分区工作:
命令格式:
usage: ${THIS_FILE} command args ...
where 'command' is one of the following:
<init> <poolname>
<gpart> <device> <label> [size_boot] [size_swap] [size_zfs]
<pool> <poolname> <"poolcommand">
<zfs> <poolname> <auto>
<finish> <poolname> <"noplist">
<info> [device]
<help>
举例说明:
zroot是poolname,根据需要进行修改.
步骤 1: 初始化
# ./zfs_disk.sh -i zroot
步骤 2: -o显示磁盘信息,-g对每个盘顺序开始gpart,后三个参数可从后向前省略,[size_zfs]省略用所有剩余空间,[size_swap]省略用内存大小,[size_boot]省略用512k.
# ./zfs_disk.sh -o
# ./zfs_disk.sh -g da0 0 512k 4g 120g
或 # ./zfs_disk.sh -g da0 0
# ./zfs_disk.sh -g da1 1 512k 4g 120g
# ./zfs_disk.sh -g da2 2 512k 4g 120g
# ./zfs_disk.sh -g da3 3 512k 4g 120g
步骤 3: 根据需要设定自己的raid方式
# ./zfs_disk.sh -p zroot "raidz2 da0p3.nop da1p3.nop da2p3.nop da3p3.nop"
或: # ./zfs_disk.sh -p zroot "mirror da0p3.nop da1p3.nop mirror da2p3.nop da3p3.nop"
步骤 4: 可以一个一个自己设定,也可以先用auto自动,再设定自己单独的分区,此处可用-o copies=2等参数
# ./zfs_disk.sh -z zroot auto
# ./zfs_disk.sh -z zroot "-o mountpoint=/pub zroot/pub"
# ./zfs_disk.sh -z zroot "-o mountpoint=/db -o recordsize=8K zroot/db"
步骤 5: 注意引号,前面会给出nop信息,这里要传入nop
# ./zfs_disk.sh -f zroot "da0p3.nop da1p3.nop da2p3.nop da3p3.nop"
步骤 6: 删除shell脚本和日志,exit后安装程序会自动进行余下工作
# rm zfs_disk.sh zfs_disk.sh.log
# exit
其他命令: -o显示磁盘信息,-h显示命令帮助信息
# ./zfs_disk.sh -o
或: # ./zfs_disk.sh -o da0
# ./zfs_disk.sh -h |
评分
-
查看全部评分
|