Před pár týdny jsem dospěl do situace, že jsem potřeboval nový NAS server pro domácnost. Kombinace OpenSolaris/ZFS/CIFS. Tady je stručný návod v češtině (anglických se válí pár po světě).
Instalace OpenSolarisu 2009.06 na Intel Atom se 2 disky je v pohodě, jen ten druhý je třeba přidat do mirroru. Takže stávající zpool vypadá s jedním diskem takto:
# zpool status
pool: rpool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
c9d0s0 ONLINE 0 0 0
errors: No known data errorsDruhý disk je nenaformátován a skrývá se pod zařízením c10d0, takže nejdříve x86 partition (aby z něj šlo také případně nabootovat, kdyby první disk odešel):
# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c9d0 <DEFAULT cyl 60797 alt 2 hd 255 sec 126>
/pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0
1. c10d0 <DEFAULT cyl 60798 alt 2 hd 255 sec 126>
/pci@0,0/pci-ide@1f,2/ide@1/cmdk@0,0
Specify disk (enter its number): 1
selecting c10d0
Controller working list found
[disk formatted, defect list found]
No Solaris fdisk partition found.
FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
fdisk - run the fdisk program
repair - repair a defective sector
show - translate a disk address
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
volname - set 8-character volume name
!<cmd> - execute <cmd>, then return
quit
format> fdisk
No fdisk table exists. The default partition for the disk is:
a 100% "SOLARIS System" partition
Type "y" to accept the default partition, otherwise type "n" to edit the
partition table.
y
format> fdisk
[...]
Exit
[...]Takže x86 partition by byla. Ale ještě to chce nasliceovat disk stejně jako je ten první:
# prtvtoc /dev/rdsk/c9d0s0 | fmthard -s - /dev/rdsk/c10d0s0 fmthard: New volume table of contents now in place.
prtvtoc vypíše slices z prvního disku a fmthard podle toho přesně nastaví ten druhý.
Čas připojit druhý disk do mirroru:
# zpool attach rpool c9d0s0 c10d0s0 invalid vdev specification use '-f' to override the following errors: /dev/dsk/c10d0s0 overlaps with /dev/dsk/c10d0s2
Ah, zpool je obezřetný, ale v tomto případě zbytečně, slice s2 je obrazem cele partition/disku.
# zpool attach -f rpool c9d0s0 c10d0s0 Please be sure to invoke installgrub(1M) to make 'c10d0s0' bootable.
Huf a dokonce napovídá, co dál, aby systém mohl nabootovat z obou disků:
# installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c10d0s0 Updating master boot sector destroys existing boot managers (if any). continue (y/n)?y stage1 written to partition 0 sector 0 (abs 32130) stage2 written to partition 0, 271 sectors starting at 50 (abs 32180) stage1 written to master boot sector
A výsledek je bootovatelný mirror:
# zpool status
pool: rpool
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scrub: resilver in progress for 0h1m, 73,26% done, 0h0m to go
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror ONLINE 0 0 0
c9d0s0 ONLINE 0 0 0
c10d0s0 ONLINE 0 0 0 2,90G resilvered
errors: No known data errorsTím jsem vyčerpal dostupné disky, takže rozšiřování kapacity s 'zpool add' až někdy příště. Takže teď rozjetí CIFS části, nejdříve instalace CIFS serveru:
# pkg install SUNWsmbs
Baliček doinstaluje vše potřebné, včetně svých závislostí.
Nechce se mi bojovat s ručním importem SMF manifestů, takže:
# reboot
Nyní server nastartovat:
# svcadm enable -r smb/server svcadm: svc:/milestone/network depends on svc:/network/physical, which has multiple instances.
A pro generování hesel pro CIFS server přidat podporu do PAM stacku tak, aby při příštím 'passwd' bylo vygenerováno i heslo pro CIFS server:
# echo other password required pam_smb_passwd.so.1 nowarn >> /etc/pam.conf # passwd media
A už zbývá jen vytvořit ZFS s exportem na CIFS:
# zfs create -o casesensitivity=mixed -o nbmand=on -o sharesmb=name=archiv -o compression=on rpool/export/archive
A od teď systém exportuje svazek v /export/archive pod názvem archiv.
Pracovní skupina je WORKGROUP (změnu lze docílit pomoci smbadm join -w <workgroup>).
Přímo na serveru lze pracovat se soubory pomocí standardních příkazů, jen je dobré vyjmout /usr/gnu/bin z cesty nebo užívat plné cesty k /usr/bin (třeba /usr/bin/ls -lv vypíše ACL, /usr/bin/chmod je umí měnit).
Systém jde dále rozšířit o automatické scanovaní na viry (například pomocí ClamAV), ale o tom jindy.