typo hammer(8) link
[ikiwiki.git] / docs / newhandbook / environmentquickstart / index.mdwn
1 This document describes the dragonfly environment one will find on a newly installed system using the default options in the installer after selecting HAMMER for the file systems option.
2
3 [[!toc levels=3 ]]
4
5 ## Disk, Partition layout, Mount points, PFSes, Snapshots
6
7 If you followed the default options during installation you will be
8 left with a system with the following disk configuration
9
10
11     # df -h
12     Filesystem                Size   Used  Avail Capacity  Mounted on
13     ROOT                      288G    12G   276G     4%    /
14     devfs                     1.0K   1.0K     0B   100%    /dev
15     /dev/serno/9VMBWDM1.s1a   756M   138M   558M    20%    /boot
16     /pfs/@@-1:00001           288G    12G   276G     4%    /var
17     /pfs/@@-1:00002           288G    12G   276G     4%    /tmp
18     /pfs/@@-1:00003           288G    12G   276G     4%    /usr
19     /pfs/@@-1:00004           288G    12G   276G     4%    /home
20     /pfs/@@-1:00005           288G    12G   276G     4%    /usr/obj
21     /pfs/@@-1:00006           288G    12G   276G     4%    /var/crash
22     /pfs/@@-1:00007           288G    12G   276G     4%    /var/tmp
23     procfs                    4.0K   4.0K     0B   100%    /proc
24
25 In this example
26
27 **/dev/serno/9VMBWDM1** is the hard disk specified with QUID
28
29 **/dev/serno/9VMBWDM1.s1** is the first slice on the hard disk.
30
31 Let us see its disklabel
32
33
34     # sudo disklabel /dev/serno/9VMBWDM1.s1
35     # /dev/serno/9VMBWDM1.s1:
36     #
37     # Informational fields calculated from the above
38     # All byte equivalent offsets must be aligned
39     #
40     # boot space:    1044992 bytes
41     # data space:  312567643 blocks # 305241.84 MB (320069266944 bytes)
42     #
43     # NOTE: If the partition data base looks odd it may be
44     #       physically aligned instead of slice-aligned
45     #
46     diskid: e67030af-d2af-11df-b588-01138fad54f5
47     label:
48     boot2 data base:      0x000000001000
49     partitions data base: 0x000000100200
50     partitions data stop: 0x004a85ad7000
51     backup label:         0x004a85ad7000
52     total size:           0x004a85ad8200    # 305242.84 MB
53     alignment: 4096
54     display block size: 1024        # for partition display only
55
56     16 partitions:
57     #          size     offset    fstype   fsuuid
58       a:     786432          0    4.2BSD    #     768.000MB
59       b:    8388608     786432      swap    #    8192.000MB
60       d:  303392600    9175040    HAMMER    #  296281.836MB
61       a-stor_uuid: eb1c8aac-d2af-11df-b588-01138fad54f5
62       b-stor_uuid: eb1c8aec-d2af-11df-b588-01138fad54f5
63       d-stor_uuid: eb1c8b21-d2af-11df-b588-01138fad54f5
64
65
66 The slice 1 has 3 partitions
67
68 a - for /boot
69 b - for swap
70
71 c- is usually for the whole hard disk in BSDs but it is not shown here
72
73 d - the hammer File system labeled ROOT
74
75 When you create a hammer file system you should give it a label, here the Installer labeled it as "ROOT" and mounted it as
76
77     ROOT                      288G    12G   276G     4%    /
78
79 Now a PFS is a Pseudo hammer File System inside a hammer file system.The hammer file system in which the PFSes are created is referred to as the root file system.( You should not confuse the "root" file system with the Label "ROOT" the label can be anything it is just that the installer Labeled it as ROOT
80 because it is mounted as / )
81
82 Now Inside the ROOT hammer file system you find the installed created 7 PFSes from the 'df -h' output above, let us see how they are mounted in fstab
83
84     # cat /etc/fstab
85     # Device                Mountpoint      FStype  Options         Dump    Pass#
86     /dev/serno/9VMBWDM1.s1a         /boot           ufs     rw      1       1
87     /dev/serno/9VMBWDM1.s1b         none            swap    sw      0       0
88     /dev/serno/9VMBWDM1.s1d         /               hammer  rw      1       1
89     /pfs/var                /var            null    rw              0       0
90     /pfs/tmp                /tmp            null    rw              0       0
91     /pfs/usr                /usr            null    rw              0       0
92     /pfs/home               /home           null    rw              0       0
93     /pfs/usr.obj    /usr/obj                null    rw              0       0
94     /pfs/var.crash  /var/crash              null    rw              0       0
95     /pfs/var.tmp    /var/tmp                null    rw              0       0
96     proc                    /proc           procfs  rw              0       0
97
98
99 The PFSes are mounted using a NULL mount because they are also hammer file systems.You can read more on null mounts here [mount_null(8)](http://leaf.dragonflybsd.org/cgi/web-man?command=mount_null&section=8).
100
101 You don't need to specify a Size for the PFSes like you do for Logical Volumes inside a Volume Group for LVM. All the Free space in the root hammer file system is available for all the PFSes to grow.That is the reason in the "**df -h**" output above you saw free space is same for all PFSes and the root hammer file system.
102
103 Now if you look in /var
104
105     # cd /var/
106     # ls
107     account   backups   caps   cron    empty   log   msgs   run   spool   yp  at        
108     cache     crash     db     games   lib     mail  preserve   rwho  tmp
109
110 you will find the above directories.
111
112 If you look at the status of one of the PFSes say /usr you will see /var/hammer is the default snapshot directory.
113
114
115    # hammer pfs-status /usr/
116     /usr/   PFS #3 {
117         sync-beg-tid=0x0000000000000001
118         sync-end-tid=0x0000000117ac6270
119         shared-uuid=f33e318e-d2af-11df-b588-01138fad54f5
120         unique-uuid=f33e31cb-d2af-11df-b588-01138fad54f5
121         label=""
122         prune-min=00:00:00
123         operating as a MASTER
124         snapshots directory defaults to /var/hammer/<pfs>
125     }
126
127 But there is no "hammer" directory in /var now.That is because no snapshots are yet taken.You can verify this by checking the snapshots available for /usr
128
129     # hammer snapls /usr
130     Snapshots on /usr       PFS #3
131     Transaction ID          Timestamp               Note
132     #
133
134 The best way to take a snapshot of the whole system is to run the command 'hammer cleanup'. It does a lot of things but the fist thing it does during cleanup of a PFS is to take its snapshots as configured.
135
136     # sudo hammer cleanup
137     cleanup /                    - HAMMER UPGRADE: Creating snapshots
138             Creating snapshots in /var/hammer/root
139      handle PFS #0 using /var/hammer/root
140                snapshots - run
141                    prune - run
142                rebalance - run..
143                  reblock - run....
144                   recopy - run....
145     cleanup /var                 - HAMMER UPGRADE: Creating snapshots
146             Creating snapshots in /var/hammer/var
147      handle PFS #1 using /var/hammer/var
148                snapshots - run
149                    prune - run
150                rebalance - run..
151                  reblock - run....
152                   recopy - run....
153     cleanup /tmp                 - HAMMER UPGRADE: Creating snapshots
154             Creating snapshots in /var/hammer/tmp
155      handle PFS #2 using /var/hammer/tmp
156                snapshots - disabled
157                    prune - run
158                rebalance - run..
159                  reblock - run....
160                   recopy - run....
161     cleanup /usr                 - HAMMER UPGRADE: Creating snapshots
162             Creating snapshots in /var/hammer/usr
163      handle PFS #3 using /var/hammer/usr
164                snapshots - run
165                    prune - run
166                rebalance - run..
167                  reblock - run....
168                   recopy - run....
169     cleanup /home                - HAMMER UPGRADE: Creating snapshots
170             Creating snapshots in /var/hammer/home
171      handle PFS #4 using /var/hammer/home
172                snapshots - run
173                    prune - run
174                rebalance - run..
175                  reblock - run....
176                   recopy - run....
177     cleanup /usr/obj             - HAMMER UPGRADE: Creating snapshots
178             Creating snapshots in /var/hammer/usr/obj
179      handle PFS #5 using /var/hammer/usr/obj
180                snapshots - disabled
181                    prune - run
182                rebalance - run..
183                  reblock - run....
184                   recopy - run....
185     cleanup /var/crash           - HAMMER UPGRADE: Creating snapshots
186             Creating snapshots in /var/hammer/var/crash
187      handle PFS #6 using /var/hammer/var/crash
188                snapshots - run
189                    prune - run
190                rebalance - run..
191                  reblock - run....
192                   recopy - run....
193     cleanup /var/tmp             - HAMMER UPGRADE: Creating snapshots
194             Creating snapshots in /var/hammer/var/tmp
195      handle PFS #7 using /var/hammer/var/tmp
196                snapshots - disabled
197                    prune - run
198                rebalance - run..
199                  reblock - run....
200                   recopy - run....
201     cleanup /var/isos            - HAMMER UPGRADE: Creating snapshots
202             Creating snapshots in /var/hammer/var/isos
203      handle PFS #8 using /var/hammer/var/isos
204                snapshots - run
205                    prune - run
206                rebalance - run..
207                  reblock - run....
208                   recopy - run....
209     #
210
211 You  must have noticed that snapshots were not taken for '/tmp', '/usr/obj' and '/var/tmp'.That is how it is automatically configured by the installer.
212
213 Let us look again in /var now
214
215     # ls
216     account   backups   caps   cron    empty   hammer log   msgs   run   spool   yp  
217     at        cache     crash     db     games   lib     mail  preserve   rwho  tmp
218
219
220 We have a new directory called "hammer" with the following sub directories
221
222
223     # cd hammer/
224     # ls -l
225     total 0
226     drwxr-xr-x  1 root  wheel  0 Oct 13 11:51 home
227     drwxr-xr-x  1 root  wheel  0 Oct 13 11:42 root
228     drwxr-xr-x  1 root  wheel  0 Oct 13 11:43 tmp
229     drwxr-xr-x  1 root  wheel  0 Oct 13 11:51 usr
230     drwxr-xr-x  1 root  wheel  0 Oct 13 11:54 var
231
232
233 Well let us look inside /var/hammer/usr 
234
235
236     # cd usr/
237     # ls -l
238     total 0
239     drwxr-xr-x  1 root  wheel   0 Oct 13 11:54 obj
240     lrwxr-xr-x  1 root  wheel  25 Oct 13 11:43 snap-20101013-1143 -> /usr/@@0x0000000117ac6cb0
241
242
243 We have a symlink pointing to the snapshot Transaction ID shown below.
244
245
246
247     # hammer snapls /usr
248     Snapshots on /usr       PFS #3
249     Transaction ID          Timestamp               Note
250     0x0000000117ac6cb0      2010-10-13 11:43:04 IST -
251     #
252
253
254 You can read more about snapshots, prune, reblance,reblock,recopy etc from [hammer(8)](http://leaf.dragonflybsd.org/cgi/web-man?command=hammer&section=8) especially look under the heading " cleanup [filesystem ...]"
255
256 You can learn more about PFS mirroring [here](http://www.dragonflybsd.org/docs/how_to_implement_hammer_pseudo_file_system__40___pfs___41___slave_mirroring_from_pfs_master/)
257
258 ## Configuring and Starting the SSH Server
259
260 Described in detail [here](http://www.dragonflybsd.org/docs/docs/newhandbook/sshserver/)
261
262 ## Software/Programs and Configuration Files Location 
263
264 DragonFlY default installation contains the base software/programs from the dragonfly project itself and few other software from [pkgsrc](http://www.netbsd.org/docs/software/packages.html) which is the dragonfly official package management system. Ready to install binary software from pkgsrc is referred to as "<b>Packages</b>".
265
266 The base programs are located in the folders 
267
268     /bin    /sbin
269     /usr/bin   /usr/sbin
270     /usr/local/bin   /usr/local/sbin
271
272 Their configuration files are found mainly in <b>/etc</b>. there is also <b> /usr/local/etc </b>
273
274 The software/programs from pkgsrc are located in <b>/usr/pkg/bin and /usr/pkg/sbin</b>. Their configuration files are found in <b>/usr/pkg/etc</b>.
275
276 ## Installing new Software from pkgsrc packages 
277
278 A Detailed description on how to use packages and pkgsrc are given [[here|docs/howtos/HowToPkgsrc]].
279
280 For those who are new to the BSD way of doing things can also have the Debian's apt like way of installing, removing and updating packages. 
281
282 **pkgin** does things similar to **apt-get** or **aptitude** or **yum** for that matter.
283
284 First we need to configure pkgin to use a repository which contains the pkgsrc binary packages. You can get a list of dragonfly mirrors [here](http://www.dragonflybsd.org/mirrors/). For this example we will use the <b>Belarus</b> [HTTP mirror](http://mirror.datacenter.by/pub/DragonFlyBSD/) shown on that page first under Europe.
285
286
287     #echo "http://mirror.datacenter.by/pub/DragonFlyBSD/packages/i386/DragonFly-2.7/stable/All/" > /usr/pkg/etc/pkgin/repositories.conf
288
289
290 Now to update pkgin with the list of latest packages available from that repository.
291
292
293     # pkgin update
294     cleaning database from
295     http://mirror.datacenter.by/pub/DragonFlyBSD/packages/i386/DragonFly-2.7/stable/
296     entries...
297     downloading pkg_summary.bz2: 100%
298     processing remote summary
299     (http://mirror.datacenter.by/pub/DragonFlyBSD/packages/i386/DragonFly-2.7/stable/All)...
300     updating database: 100%
301
302 Now to upgrade packages that are already installed in the system
303
304
305     # pkgin full-upgrade
306     6 packages to be upgraded: freetype2-2.3.12 gtar-info-1.22
307     openldap-client-2.4.21 png-1.4.2 python26-2.6.5 tiff-3.9.4
308     1 packages to be removed: asciidoc-8.6.1
309     6 packages to be installed: png-1.4.3 python26-2.6.5nb1 tiff-3.9.4nb1
310     freetype2-2.4.2 gtar-info-1.23 openldap-client-2.4.23 (15M to
311     download, 59M to install)
312     proceed ? [y/N] y
313     downloading packages...
314     downloading png-1.4.3.tgz: 100%
315     downloading python26-2.6.5nb1.tgz: 100%
316     downloading tiff-3.9.4nb1.tgz: 100%
317     downloading freetype2-2.4.2.tgz: 100%
318     downloading gtar-info-1.23.tgz: 100%
319     downloading openldap-client-2.4.23.tgz: 100%
320     .....
321
322 In order to search for a new Package for example **rdesktop**.
323
324
325     # pkgin search rdesktop
326     rdesktop-1.6.0 =     Open-source Remote Desktop Protocol client
327     tsclient-0.132nb25   GNOME2 Frontend for rdesktop
328     
329     =: package is installed and up-to-date
330     <: package is installed but newer version is available
331     >: installed package has a greater version than available package
332
333
334 If there are symbols **=** or **<** or **>** after a package name in the output then the last 3 lines of the output will explain them.
335
336 To search for a package and install it you can do the following. If there are different versions of the package available in the repository it will show you the list and you need to specify one from them explicitly. At the end of the installation it will show you a message if you need any further configuration for the software to work in a particular way.
337
338
339     dfly-vmsrv# pkgin search mysql-client
340     mysql-client-4.1.22nb4  MySQL 4, a free SQL database (client)
341     mysql-client-5.0.91  MySQL 5, a free SQL database (client)
342     mysql-client-5.1.49  MySQL 5, a free SQL database (client)
343     
344     =: package is installed and up-to-date
345     <: package is installed but newer version is available
346     >: installed package has a greater version than available package
347     dfly-vmsrv# pkgin install mysql-client
348     there's more than one version available for this package.
349     please re-run pkgin with a package name matching one of the following:
350     mysql-client-4.1.22nb4
351     mysql-client-5.0.91
352     mysql-client-5.1.49
353     nothing to do.
354     dfly-vmsrv# pkgin install mysql-client-5.1.49
355     calculating dependencies for mysql-client-5.1.49...
356     nothing to upgrade. 
357     1 packages to be installed: mysql-client-5.1.49 (7620K to download, 24M to install)
358     proceed ? [y/N] y
359     downloading packages...
360     downloading mysql-client-5.1.49.tgz: 100%
361     installing packages...
362     installing mysql-client-5.1.49...
363     ===========================================================================
364     $NetBSD: MESSAGE,v 1.1.1.1 2010/03/04 16:27:18 taca Exp $
365
366     To use the ``mysqlhotcopy'' script, you'll have to install the following
367     packages:
368
369             databases/p5-DBD-mysql
370             devel/p5-File-Temp
371
372     ===========================================================================
373     processing local summary...
374     updating database: 100%
375     marking mysql-client-5.1.49 as non auto-removable
376
377
378 To remove a package
379
380
381     # pkgin remove mysql-client
382     1 packages to delete: mysql-client-5.1.49
383     proceed ? [y/N] y
384     removing mysql-client-5.1.49...
385     processing local summary...
386     updating database: 100%
387
388
389 **pkgin** is very similar to **apt-get, aptitude , yum, emerge, pacman** and friends in the linux world.
390
391 All the **pkgin** commands can be seen [here](http://imil.net/pkgin/). **pkgin** comes installed with the default DragonFly install so you can skip the installation part on that page
392
393 To install a desktop you can [read the following](http://www.dragonflybsd.org/docs/newhandbook/X/)
394 Other Docs can be found [here](http://www.dragonflybsd.org/docs/newhandbook/X/). When ever you find **pkg_add** or **pkg_radd** used to install a software just use **pkgin** instead.
395
396
397
398
399